-1

約 600 万件のレコードを含むデータ セットがあります。各レコードには同じ数のフィールドがあります。完全に 8 つのフィールドがあります。

ID  Title  Color  Date1  Date2  Date3  Date4...

これらのレコードをタイトルとすべての日付フィールド (RDBMS 用語では「列」) でフィルタリングする方法が必要です。

データのサイズはそれほど大きくなく、数ギガバイト程度です。長いテキスト フィールドなどはありません (アーキテクチャの作成中にそれらを削除したため、データ セットには本当に重要なフィールドのみが含まれています)。

バックエンドはデータの読み取りと書き込みを非常に集中的に行います。読み取り/書き込み (およびフィールドによるフィルタリング) の両方を可能な限り高速化したいと考えています。現在 Postgres を使用しており、その信頼性は気に入っていますが、あまり高速ではないようです。はい、微調整と最適化を行い、インデックスを追加し、32GB RAM マシンにインストールし、必要なすべての設定を行いました。言い換えれば、それはうまくいきますが、私はまだそれがより良いかもしれないと信じています. 必要なのは速度です。日付とタイトルによるレコードのフィルタリングは、非常に高速でなければなりません。データの挿入が遅くなる場合があります。バックエンドは、処理されなかったすべてのレコードをフィルタリングして処理し、(処理された日時の) 日付フラグを設定します。5 ~ 10 秒ごとに約 50 のバックエンド「ワーカー」が実行されるため、DB は非常に高速に実行できるはずです。

そこに結合はありません。データはすでにビッグデータ ソリューション用に最適化されています。1 つの「大きなテーブル」のみ。

そして、それを単一のノードまたは多数の小さなインスタンスで実行したいと考えています。データはそれほど重要ではありません。しかし、高価なソリューションは避けたいので、同じ安価なハードウェアで Postgres よりも高速に実行できる SQL または NoSQL ソリューションを探しています。

1 年か 2 年ほど前に MongoDB を試したことを覚えています。私の記憶では、その瞬間のフィルタリングはそれほど速くはありませんでした。Cassandra の方が優れていましたが、フィルタリング クエリの小さなサブセットしか実行できなかったのを覚えています。Riak は優れていますが、多数のマシンを含む大規模なクラスターでのみ使用できます。これは私の非常に基本的な経験です。これらのソリューションのいずれかが優れたパフォーマンスを発揮することを知っている場合は、それを書いてください. または、別の解決策を提案してください。

ありがとう!

4

2 に答える 2

1

Postgres を使い続ける必要があるという Denis の意見に同意します。私の経験から、正しく調整されたリレーショナル データベースは信じられないほど高速に結果が得られます。別の言い方をすれば... Mongo を調整して複雑なクエリを 10 ミリ秒以下で返すのは、SQL Server と MySQL を調整するよりもはるかに難しいことがわかりました。

さらにチューニングする方法については、この Web サイトhttp://use-the-index-luke.com/を参照してください。その男はあなたに役立つであろう本も書いています。

Denis が言ったように、データ サイズはそれほど大きくないため、NoSQL ソリューションを使用してゼロから始める価値があります。

于 2013-11-01T15:58:18.963 に答える