ユーザーアクティビティの変更を追跡し、アクティビティログをユーザーに表示するアプリケーションを構築しています。ここにいくつかのポイントがあります:
- 1 日あたり 1 億件のレコードを挿入します。
- これらのレコードはすぐに (数秒以内に) インデックス化され、検索結果で利用できるようになります。
- ユーザーは、公開されている 10 個のフィールドのいずれかでレコードをフィルター処理できます。
ユーザーアクティビティの変更を追跡し、アクティビティログをユーザーに表示するアプリケーションを構築しています。ここにいくつかのポイントがあります:
Mongo と Oracle のどちらも、必要なことを達成できないと思います。プライマリ データ ストアから検索コンポーネントをオフロードすることをお勧めします。たとえば、ElasticSearch のようなものです。
主なユースケースは「フィルター」( ElasticSearchのファセット)と検索であるため、私の推奨はElasticSearchです。それはスケールアップするように書かれており (それ以外の場合は Lucene も良い)、ビッグデータを念頭に置いています。
1 日に 1 億件のレコードがあるとすれば、データを格納するために急速に成長するサーバー ファームが必要になるように思えます。Oracle がこれらのデータをどのように配布するかはよくわかりませんが、MongoDB では、検索クエリが使用しているフィールド (フィルタリング用の 10 フィールドを含む) に基づいてデータを分割する必要があります。シャード キーのみで検索する場合、MongoDB は適切なシャードを含むマシンのみをヒットするほどインテリジェントであるため、1 台のマシンで小さなデータベースにクエリを実行して必要なものを取得するようなものです。さらに、シャード キーがクラスター内の各マシンのメモリに収まり、MongoDB の btree インデックスでインデックス付けされている場合、クエリは非常に瞬時に実行されます。