埋め込まれた.NETデータベース(DB4O、Nhibernate、RavendBなど)のガイダンスを探しています
-
01-10-2019 - |
質問
埋め込みデータベースを使用して保存したいオブジェクトモデルがあります。私はこれまでのところ、db4o、nhibernate to sqlce(w/ linq)、およびravendbを見てきました。これは、デスクトップC#アプリケーションで使用されます。
私が活用しようとしている主な機能は、linqまたは類似のクエリ(SQLまたはHQLなし)、埋め込みデータエンジン、POCOS、POCOファーストモデル、インストールなし(レジストリまたは類似)
誰かがそれを提案できますか? 3人は最高の選択肢を見ていますか?他にオプションはありますか? 3つのうち、誰かが互いに推奨することができますか?
ありがとう
解決
さて、3つの提案されたデータベースの性質は非常に異なっています。 hibernateを使用したsqlce as rdbms a orm with a orm、db4o as object database、ravendb as document database。それぞれにその強みがあります。
SQL CE&NHIBERNATE-COMBOいいもの:
- ツーリング、知識、大きなコミュニティにおける非常に良いサポートがあります
- MS SQLサーバーに簡単にアップグレージできます
- 極端な良い報告サポート
- SQLのパワー
悪い人:
- マッピングが必要です
- OOとリレーショナルの世界の間のマッピングは簡単ではなく、複雑なモデルの問題につながる可能性があります。
Ravendb
いいもの:
- マッピングは必要ありません
- 使いやすい
- 強力なインデックス
- JSON&HTTPアクセス
悪い人:
- ドメインがドキュメント指向のアプローチに適合しない場合、それは非常に苦痛になります
- .NETフレームワーククライアントプロファイルをサポートしていません(OPの質問は組み込みデータベースに関するものであるため、これは特に重要です)
DB4O
いいもの:
- マッピングは必要ありません
- 使いやすい
- ストレージモデルはオブジェクトモデルに近いです。これは、非常に複雑なモデルでも機能します。 -
悪い人:
- ツールサポートは弱いです。
AFAIK 3つすべてがLinqとPoco-Firstアプローチをサポートしています。ただし、nhibernate&sql ceは、摩擦がないほど摩擦のないマッピングを必要としているためです。
Poco First、Linq-Support、EBeddedの使用、使いやすいことに焦点を当てている場合は、RavedbまたはDB4Oを試してみると思います。 「安全性」、コミュニティの知識、ツールサポート、レポートに焦点が当てられている場合は、NhibernateおよびSQL CEを使用します。
他のヒント
Firebird エンタープライズデータベースのすべての最新の機能を長い間サポートしてきた素晴らしい組み込みデータベースです。
- ANSI SQL
- 酸
- ストアドプロシージャ
- トリガー
あなたは得ることができます .NETプロバイダー (サイトによると5月24日に最後に更新されました)、それはエンティティフレームワークとLINQをサポートしています。