2016-10-27 15 views
0

非常に大きなリスト(80MBまでのサイズ)を格納する必要があります。データをチャンク化し、複数のキー(A_1、A_2 ...など)に格納できます。このソリューションは、エレガントなものから遠くに見えます。また、特定のドキュメントのチャンク数を知るために、検索辞書{'A':[1,2、...]}を維持しなければならないオーバーヘッドがあります。非常に大きなデータリストを格納する

RedisまたはAerospikeでこれを行う方法は他にありますか?私はRedisを使用して地獄に惑わされるのではなく、他のストレージ(リレーショナルを除く)はまあまあです。

+0

どのように取得しますか?全体か塊ですか?一度にどのくらいの大きさであれば?そのリストの各エントリのサイズはどれくらいですか? –

+0

まあ、私がこれらの質問のすべてに答えを知っていれば、それほど大きな問題にはなりませんでしたか? :)この同期操作はあまり頻繁に(1日に1回)実行されることはなく、一度だけ読み込みが行われるので、チャンクのサイズが大きくなる可能性があります(〜1MB)。リストの各エントリは〜20KBのデータです。前述のように、すべてのチャンクは、前処理が行われるように読み込み/読み込みする必要があります。 –

+0

より良い設計のためには、およその数字があるほうがいいです:) –

答えて

0

あなたの入力に基づいて、赤字リストが適合します。同じベンチマークを簡単に行うことができます。リストでは、ある範囲のデータにアクセスすると仮定します。すべてのデータをプッシュする

使用lpush、http://redis.io/commands/lpush

使用LRANGEはhttp://redis.io/commands/lrange

はあなたのリストのサイズが10,000になりラフスケールでは、あなたのアイデアを与えるために、データのチャンクを取得します。 80MBのデータを入れるのに必要な時間は約1秒かかります。 500データ(範囲内)のチャンクを取得する時間は約200ミリ秒かかります。これはあなたの入力、RTTなどに基づいて変わる可能性があります。

関連する問題