並列化できるソリューションはありますが、hadoop / nosqlの経験が(まだ)なく、ニーズに最適なソリューションがわかりません。理論的には、CPUが無制限の場合、結果はすぐに返されるはずです。だから、どんな助けもいただければ幸いです。ありがとう!
これが私が持っているものです:
- 数千のデータセット
- データセットキー:
- すべてのデータセットは同じキーを持っています
- 100万キー(これは後で1000万または2000万になる可能性があります)
- データセット列:
- 各データセットには同じ列があります
- 10〜20列
- ほとんどの列は、集計する必要のある数値です(avg、stddev、およびRを使用して統計を計算します)
- 特定のクエリでは特定のtype_idのみを含めたい場合があるため、いくつかの列は「type_id」列です。
- ウェブアプリケーション
- ユーザーは、関心のあるデータセットを選択できます(15から1000までのどこでも)
- アプリケーションは次のものを提示する必要があります:各列のキーと集計結果(avg、stddev)
- データの更新:
- データセット全体を追加、削除、または置換/更新できます
- 列を追加できると便利です。ただし、必要に応じて、データセット全体を置き換えることができます。
- データセットに行/キーを追加しないでください-したがって、高速書き込みが多いシステムは必要ありません
- インフラストラクチャー:
- 現在、それぞれ24コアの2台のマシン
- 最終的には、これをアマゾンでも実行できるようにしたい
集計値を事前に計算することはできませんが、各キーは独立しているため、これは簡単にスケーラブルにする必要があります。現在、このデータはpostgresデータベースにあり、各データセットは独自のパーティションにあります。
- パーティションを簡単に追加/削除/置換できるので、パーティションは素晴らしいです
- データベースはtype_idに基づくフィルタリングに適しています
- データベースは並列クエリを書くのは簡単ではありません
- データベースは構造化データに適していますが、私のデータは構造化されていません
概念実証として、Hadoopを試しました。
- 特定のtype_idのデータセットごとにタブ区切りファイルを作成しました
- hdfsにアップロード
- マップ:各キーの値/列を取得しました
- 削減:計算された平均と標準偏差
私の大まかな概念実証から、これはうまくスケーリングすることがわかりますが、hadoop / hdfsには遅延があることがわかります(結果を返すことは問題ありませんが、通常はリアルタイムクエリには使用されないことを読みました) 5秒でユーザーに戻ります)。
私がこれにどのように取り組むべきかについての提案はありますか?次にHBaseを試して、その感触をつかむことを考えていました。代わりにHiveを見る必要がありますか?カサンドラ?ヴォルデモート?
ありがとう!