8

これと同じような質問をいくつか見つけましたが、保存されているデータの性質、クエリの方法などについての詳細は含まれていませんでした.

私のデータは非常にシンプルで、3 つのフィールドがあります。

私のアプリケーションは非常に書き込みが多い (1 秒あたり数百)。すべての書き込みは新しいレコードです。一度挿入されると、データは決して変更されません。

定期的な読み取りは数秒ごとに行われ、ほぼリアルタイムのダッシュボードに入力するために使用されます。日付/時刻の値と文字列値の 1 つに対してクエリを実行します。たとえば、datetimestamp が特定の範囲内にあり、フィールド "B" が特定の検索値と等しいすべてのレコードを取得します。これらのクエリは通常、それぞれ数千のレコードを返します。

最後に、データベースは無制限に拡大する必要はありません。手動で削除するか、DB がサポートしている場合はキャッシュ期限切れ技術を使用して、10 日以上前のレコードをパージすることを考えています。

私は当初、MongoDB でロックを処理する方法 (書き込みブロック読み取り) を認識せずに、これを実装しました。規模を拡大するにつれて、クエリにかかる時間がどんどん長くなります (適切なインデックス作成を行っても、現在は 30 秒以上)。私が学んだことから、大量の書き込みが私の読み取りを枯渇させていると信じています。

さまざまな NoSQL オプションを比較したkkovacs.euの投稿を読みました。多くのことを学びましたが、私のユース ケースに明確な勝者があるかどうかはわかりません。オプションに詳しい方からの推薦をいただければ幸いです。

前もって感謝します!

4

2 に答える 2

1

以前、プロセス制御測定値を記録するシステムでこのような問題に直面したことがあります。これは 5 MHz の IBM PC で行われたので、間違いなく可能です。ユースケースは、分、時間、8 時間シフト、日、週、月、または年ごとの集計など、より多様であったため、システムはすべての生データを記録しましたが、最も一般的なクエリについてはその場で集計も行います (これは 5 分間の平均でした)。ダッシュボードの場合、5 分間の集計も主要な目標のようです。

おそらく、これは入力ストリームごとに 1 組のテキスト ファイルを作成することで解決できます。もう 1 つは複数分の集計です。ダッシュボードは生データを無視します。もちろん、データベースを使用して同じことを行うこともできます。ただし、アプリケーションを単純化すると、RDB が不要になる可能性があります。エンジニアリングと保守が簡単で、マイクロコントローラーや組み込みシステムなどに簡単に適合するか、共有ホスト上のよりフレンドリーな隣人です。

于 2012-05-26T06:36:45.633 に答える
0

適切な NoSQL 製品を決定するのは簡単なことではありません。他の誰かの提案やお気に入りを信用しないようにしたい場合は、選択する前に NoSQL についてもっと学ぶことをお勧めします。

NoSQL について非常に優れた背景を説明している優れた本があり、NoSQL を始めようとしている人はこれを読むべきです。

http://www.amazon.com/Professional-NoSQL-Wrox-Programmer/dp/047094224X

この本のいくつかの章を読むことが、あなたの助けになることを願っています。何がどんな仕事に向いているのかなど、比較や解説が盛りだくさんです。

幸運を。

于 2012-05-26T06:07:47.567 に答える