2010-11-25 13 views
3

バルクデータ持続性のためのACIDフレームワークがありますか?また、いくつかの基本的な検索機能が可能ですか?私はではありません。は、完全に吹き飛ばされたDBMSを探していますが、むしろ高速で軽くシンプルなものです。たとえ停電の場合にこれを再開発するのを避けるために、原子コミットを処理するだけでもすばらしいことです。シンプルなバルクデータ持続性フレームワーク

SQL Serverの処理速度が遅すぎ、オーバーヘッドが大きすぎると、SQLiteの処理速度がさらに低下する可能性があります(オーバーヘッドが少ない可能性があります)。

基本的に、毎秒大量のタイムスタンプデータを保存する必要があります。正規化されたデータとして、これは〜10kのテーブル行に対応しますが、バイナリデータとして〜200kbを使用して表現できます。明らかに、ディスクに200kbを書き込むことは、リレーショナルデータベースに10k行を書き込むことと比べて、一種のケーキです。

私は単純にそれを1つ以上の大きなバイナリファイルに保存してから、特定のフィールドで高速なフィルタリングを可能にするために私自身のインデックスを実装することができます。しかし、私を驚かせる唯一のものは非アトミックなトランザクションと読み取り/シナリオ。

推奨事項私はC#btwを使用しています。だから、.NETラッパーを持つものが優先されます。 Managed wrapper for Transactional NTFSTxFは "Vista以降" 機能ですが):

[編集] ACIDについて、私はちょうど例えば、これを発見しました。

答えて

1

従来のSQLベースのストレージはACIDを提供しますが、多数のバルク更新は遅くなります。反対側からは、通常、NoSQLソリューション/ Key-Valueストアでは信頼性の高いトランザクションや、単一のキー以外の何かによる高速検索のためにシームレスにインデックスを作成するための方法はありません。だから両方のアプローチの利点を組み合わせたものが必要です。

CouchDB(RESTful APIでNoSQLマップ/縮小ドキュメントベースのDB)を使用し、以下の戦略を採用することを検討します:CouchDBは、複数のドキュメントをアトミックに保存するというトランザクションを持っていませんが、ドキュメント - これは超信頼性とアトミック性を持ち、マルチバージョンの並行性制御も可能です。

したがって、10000レコードのデータが〜200-300kBの場合は、という単一のという文書として保存できます。あなたには奇妙に聞こえるかもしれませんが、実際にインクリメンタルインデックスであるコレクションを文書化することができます。また、1つのドキュメントで複数のビュー結果が生成されることがあります。ビューはjavascript(文書の作成/更新時に一度しか評価されません)で書かれているので、キーワード、数値、日付など、必要に応じてインデックスを付けることができます。ビュー結果を取得するのは非常に高速です。それらはB +ツリーにあらかじめインデックスされています。このアプローチの

メリット:

  • のCouchDBはそのデータ転送プロトコルとしてHTTPを介してJSONを使用していますので、あなたは、任意のHTTPクライアントまたはRESTクライアントまたはネイティブのC#ラッパーを使用することができます
  • (周りの利用可能ないくつかあります)
  • 200 kB文書の一括挿入はアトミックであり、単一のHTTP要求を受け取ります
  • あなたの挿入は、単なるHTTPであるため、非同期になります。
  • MVCC - CouchDBは並行性について非常に優れているので、ロックやスムージングは​​忘れてしまいます。

ちょうどチャンスを与える - それは私に時間のトンを救った。

+0

提案していただきありがとうございます。実際には、毎回10kレコード200kBではなく、毎秒約10k測定ですが、バイナリ形式では、約50KBの各グループを〜1kBで表すことができるため、生のバイナリデータは合計200kB /秒になります。 – Groo

関連する問題