(sqlite、berkeley db) のような組み込みデータベースを使用するために、c# でデスクトップ アプリケーションを作成したいのですが、これらのデータベースのベンチマークを開始するにはどうすればよいですか?
3 に答える
最近、Oracle は BDB の btree ストレージの上に sqlite3 インターフェイスを追加したので、sqlite3 に対してコードを記述してから BDB をプラグインできるはずです。問題はライセンスです。BDB は、料金を支払うかオープン ソースに移行するかのいずれかを強制します。sqlite では、やりたいことが何でもできます。
ベンチマークについて考える前に、データベースの機能を比較する必要があります。
SQLite と BDB は、サポートする機能がまったく異なります。データが複雑な場合は、リレーショナル データのクエリを簡単に実行できる SQLite をお勧めします (データがそのようにレイアウトされている場合)。
最初に機能を比較する必要があるというオサマに同意します。
しかし、「複雑な」データが自動的に sqlite に向かわせるという意見には同意しません。私はベンチマークを見たことがありません (また、書く気もありませんでした) が、BerkeleyDB がほぼ毎回優れているという直観的な反応 (それが何であれ) を持っています。
それは言った。自分で判断するために使うものではないと思います。それらの機能に戻ります。シンプルなデータ ストアだけが必要な場合は、より簡単な sqlite を選択するでしょう。同様に、任意のフィールドで自分のデータを任意にクエリできるようにしたい場合、またはいつかそれを「エンタープライズ」SQL データベースに保存できるようにしたい場合は、将来の移行が簡単になるため、sqlite を使用する可能性があります。ただし、単純なデータ ストアを超えて移動するつもりであり、トランザクションの安全性、高い同時実行性、高可用性、多くのリーダーとライターなどを検討しており、かなり明確に定義された一連の「クエリ」がある場合は、おそらくBDBが欲しい。
私のデータの「複雑さ」は実際にはこれらの方程式に入っていないことに注意してください。理由は簡単です。BDB は、オブジェクトをネイティブのシリアライズ形式で保持できます。どのフレーバーの Sql にも有名なインピーダンスの不一致が伴い、IMO ではアプリケーションが複雑になります。
BDB を真剣に検討している場合は、BDB が提供するさまざまなタイプのストアに必ずしも互換性があるとは限らないため、事前に使用するストレージのタイプを決定する必要があることを警告する必要があります。