ビッグデータのデータベースの選択
-
22-10-2019 - |
質問
私は多くのテキストファイルを持っています、その合計サイズは約300GB〜400GBです。それらはすべてこの形式です
key1 value_a
key1 value_b
key1 value_c
key2 value_d
key3 value_e
....
各行は、キーと値で構成されています。キーのすべての値を照会できるデータベースを作成したいと思います。たとえば、key1、value_a、value_b、およびvalue_cをクエリすると、返されます。
まず、これらすべてのファイルをデータベースに挿入することは大きな問題です。ロードデータインフィル構文を使用して、MySQL MyisamテーブルにいくつかのGBSサイズチャンクを挿入しようとします。しかし、MySQLはデータを挿入するためにマルチコアを利用できないようです。地獄と同じくらい遅いです。ですから、MySQLはここで多くのレコードにとって良い選択ではないと思います。
また、定期的に、毎週、または可能であれば毎日データベースを更新または再作成する必要があります。したがって、挿入速度が重要です。
単一のノードがコンピューティングと挿入を効率的に行うことは不可能であり、効率的であるため、さまざまなノードで挿入を並外して実行する方が良いと思います。
例えば、
node1 -> compute and store 0-99999.txt
node2 -> compute and store 10000-199999.txt
node3 -> compute and store 20000-299999.txt
....
したがって、ここに最初の基準があります。
基準1.分散バッチ方法での高速挿入速度。
次に、テキストファイルの例でわかるように、異なる値に複数の同じキーを提供することをお勧めします。例のkey1は、value_a/value_b/value_cにマップします。
基準2.複数のキーが許可されています
次に、データベースのキーをクエリする必要があります。リレーショナルまたは複雑な結合クエリは必要ありません。必要なのは、単純なキー/値クエリだけです。重要な部分は、同じ値に対するその複数のキーです
基準3.シンプルで高速なキー値クエリ。
HBase/Cassandra/Mongodb/Redisなどがあることは知っていますが、などですが、私はそれらすべてに精通しておらず、どちらが私のニーズに合っているのかわかりません。それで、質問は - どのデータベースを使用するのですか?それらのどれも私のニーズに合っていない場合、私は自分のニーズを構築することさえ計画していますが、それは努力が必要です:/
ありがとう。
解決
私は同様の状況にあり、あなたのニーズのためにMongodbまたはHbaseを調べることを強くお勧めします。その他(Cassandra/Redis)も優れていますが、HbaseとMongodbは大きな環境で戦闘テストされており、大きなコミュニティ、優れた文書(Mongodbの方が優れています)があり、一般的にあなたが探している3つの要件を満たしています。
他のヒント
- キーの大きさはどれくらいですか?
- 値の大きさはどれくらいですか?
- データは「継続的に」到着しますか、それともこれは1回限りの負荷ですか?
- すべての代表的なクエリを見てみましょう。あなたは言及しました
SELECT val FROM tbl WHERE key = 'constant';
他にはありますか?
一般に、キーと価値のある店は大きな時間を吸います。しかし、たぶん私たちはあなたの特別なケースをそれほどbadいではないようにすることができます。