私はプロジェクトで働いており、私の仕事は約60,000,000,000のデータエントリを管理するデータベースシステムを構築することです。
プロジェクトの背景は、毎秒約30,000のRFIDリーダーから読み取る大量のメッセージをリアルタイムで保存する必要があることです。すべてのRFIDリーダーが1日に6,000のメッセージを生成するとすると、データベースに180,000,000のエントリを挿入する必要があります。
可能なデータ入力は「time_stamp、Reader_ID、Tag_ID、other_msg_content」のようなものです
時間範囲、Reader_ID、およびTag_IDに基づくクエリ(SELECT)になります。クエリはそれほど複雑ではありません。
現在、データベースシステムを設計しており、MySQLを使用する予定です。私のダンプの質問は次のとおりです。
MySQLを使用するのが賢明ですか、それともOracle(高価です)またはHBaseに頼るべきですか?
MySQLを使用する必要がある場合、クラスターを構築する方法はありますか?
メッセージをテーブルに挿入すると、すぐにテーブルが非常に長くなります。シャーディング手法を使用して、長いテーブルを多くの短いテーブルに分割したいと思います。
3.a. MySQL InnoDBテーブルの適切な長さを知りたい、つまり、いくつのデータエントリが挿入された後、シャーディングを開始しますか?
3.b.そこに良いシャーディングプロキシソリューションはありますか?私はスポックプロキシなどを知っています。
MySQL Clusterを使用する必要がありますか? OR mysqlマスターサーバーとシャーディングスレーブを使用し、レプリケーションを使用して高可用性を実現しますか?
MySQLで20 TBデータを処理する必要があると想定し(1年間)、20ノード(PCサーバー、安価)を使用し、ノードごとに1 TBデータを保存する予定です。出来ますか?コメントは歓迎します。
どうもありがとう。
考え:
最後に