2011-04-08 14 views
1

RS232データを取り込み、すべてのデータを比較的高速(毎秒数百回)で組み込みデータベースに格納するC#WPFアプリケーションを作成しています。データベースからのデータのデータベース テイク高速書き込み複数の書き込みを含む組み込みデータベース

  • プロットに

    1. テイクRS232データとストア:アプリケーションは、同時に2つのことを行います。

    自分のアプリケーションに組み込みデータベースが必要で、単一のユーザーアプリケーションであるため、SQLiteを検討します。しかし、データの保存とグラフ表示(現在のデータを格納していて、昨日のデータをプロットすることができます)では、データベースへの同時読み書きが必要です。 SQLiteが1つのクエリでロックアップし、複数のクエリを同時に処理できないと聞きました。本当?もしそうなら、他の組込みデータベースは複数の書き込みをサポートしていますか?

  • 答えて

    2

    まず、SQLiteはスレッドセーフです。ただし、作成者はそれに熱心ではありません。ここでそれについて読む:http://www.sqlite.org/faq.html#q6

    第2に、「速い」は1秒あたり数百の挿入と言いました。トランザクション内のすべてをラップすると、SQLiteは1秒あたり30,000の挿入に簡単にアクセスできます。私はこれが本当にあなたの質問だったからではなく、これを知ることがあなたの決定に役立つかもしれないからです(それは "速い"と考えられるものを再定義するので)。

    +0

    SQLiteでは複数の書き込みができないと確信しています。しかし、「スレッドセーフ」というのは、少なくとも1回の書き込みと複数回の読み取りを持つことができるということですか? – KMC

    +0

    @KMC - Sqliteはトランザクションをサポートしていますので、これは同時実行制御の手段です(これはスレッドの安全性を意味していると思われます)。スレッド間で接続を共有しない限り、Sqliteはスレッドセーフです。また、Sqliteはデータベースレベルのロックのみをサポートしているため、接続数に関係なくタイマーで1つのライターに制限されます。 –

    0

    RavenDBをチェックしてください。 http://www.ravendb.net/いくつかのテストを実行して、それがあなたの要件を処理するかどうかを確認するのはかなり簡単です。

    3

    Berkeley DBは、非ブロッキング書き込みを持ち、高速であるという評価があります。

    非常に興味深いことに、it can be used as a drop in replacement for SQLite。 SQLiteの バージョン3 APIに書き込ま

    アプリケーションは のBerkeley DBのSQLiteライブラリと再リンクすることにより、コードなしで 変更を オラクルのBerkeley DBの使用に切り替えることができます。 2つの 製品のアプリケーションレベルの動作は同じですが、 バークレーDB の高度な機能は、パフォーマンス、同時実行性、スケーラビリティ、 と信頼性が向上した のSQLiteアプリケーションを提供します。

    これは非常にうまく紙幣に合うように聞こえます。

    +0

    ドロップインの交換について知らなかった。ありがとう! –

    関連する問題