0

生データの保存に関する意見を募集しています。「ありとあらゆるものを追跡する」のカテゴリに分類される種類のデータ。主に、方向性を推進するための社内分析、新機能のテストなどに使用されます。

データの保存はとても簡単です。ログファイルにダンプするだけで、データベースは必要ありません。一方、複雑な分析やデータ マイニングを実行する場合は、データベースが役に立ちます。

そこで、生データを Redis に保存することを考えていました。Redis は書き込みが高速です。アーカイブには適していません。一時的なデータに最適です。Redis に書き込み、必要に応じて将来の分析のために結果セットをアーカイブできます。

より読みやすい/グループ化された形式に集約することになると。Postgres のような RDBMS で十分です。しかし、MongoDB のドキュメント構造を利用することを考えていました。集計フレームワークが追加されているため、読み取りに最適です。

Redis からの生データを、おそらく cron ジョブまたはワーカー プロセスで定期的にバッチで集約できます。

これは一例です。集計部分については、Mongodb に非常に熱心です。何百万もの生データを保存するために、他にどのようなセットアップ/ソリューションを検討できますか? これに関するベストプラクティスは何ですか?

4

2 に答える 2

1

データの保存はとても簡単です。ログファイルにダンプするだけで、データベースは必要ありません。一方、複雑な分析やデータ マイニングを実行する場合は、データベースが役に立ちます。

これは部分的に真実です。データベースは間違いなく優れていますが、ビッグデータに対して大量の分析クエリを実行する場合は、Hadoop も非常に優れたオプションです (Pig または Hive を使用すると、これが非常に簡単になります)。私は Mongo の集約フレームワークをいじってみましたが、Hadoop で Pig/Hive を使用するほど好きではありませんでした。また、ユーザーネットワークもそれほど大きくありません。

したがって、ここでの答えは、ユースケースに大きく依存します。(セミ) リアルタイムでどのような分析を行いたいですか? また、後でバッチまたは手動でどのような分析を行いたいですか?

あなたの投稿に基づくと、ケースバイケースで後で分析を行いたいと思われます。このために、KafkaFluentdなどのロギング フレームワークを 100% 使用して、データが入ってくるとそれを取得し、別の場所にストリーミングします。これらのフレームワークは両方とも、データが入ってきたときにデータを移動するための並列処理と冗長性を提供します。

シンクの場合は、後でバッチ処理を行うためのコールド ストレージに HDFS または S3 を使用します。両方を使用すると、Hadoop を介した冗長性と使いやすさが得られます。リアルタイム処理が必要な場合は、Stormを使用します。たとえば、データベースにも保存したい場合などに、いつでも追加のシンクを Mongo に追加することもできます。これは、ロギング フレームワークの最も優れた点の 1 つです。シンクやマシンをいつでも簡単に追加できます。

Redis には多くの優れたユース ケースがあります。特に、キャッシュが必要な場合や、単純なデータ構造に対する非常に高速な操作が必要な場合は特にそうです。あなたが何を望んでいるかを私が誤解していない限り、ここで Redis が特に役立つとは思いません。

Mongo は、何らかの集計を行う分析クエリとは別に、特定の項目についてもクエリを実行したい場合、またはクエリを非常に迅速に実行したい場合 (Hadoop クエリは 30 秒以上かかると予想されます) に役立つ可能性があります。 -単純なものでも)。その場合、前述したように、Mongo 用のシンクを追加するだけです。必要かどうかわからない場合は、後でいつでも追加できます。

于 2013-05-13T05:57:12.200 に答える
0

mongodb などの NOSQL オプションの使用を検討します。私の意見では、それは信じられないほどスケーラブルであり、信じられないほど効率的です。個人的に私はこの規模のプロジェクトに取り組んできましたが、そのたびに mongodb などの NOSQL ソリューションを好んでいました。

于 2013-05-12T15:00:09.963 に答える