我正在製作這個微小的實用程序(Windows窗體),它需要將一些數據保存到磁盤。用數據庫術語來說,它大概是一張表,不超過大約幾千行,每行大小不超過1KB。.NET中的快速嵌入式數據庫有哪些選擇?
你會用什麼?
加入:忘了說 - 如果整個程序只是一個.EXE文件(當然還有數據文件),那將是非常整潔的。因此我更喜歡.NET中構建的東西。
我正在製作這個微小的實用程序(Windows窗體),它需要將一些數據保存到磁盤。用數據庫術語來說,它大概是一張表,不超過大約幾千行,每行大小不超過1KB。.NET中的快速嵌入式數據庫有哪些選擇?
你會用什麼?
加入:忘了說 - 如果整個程序只是一個.EXE文件(當然還有數據文件),那將是非常整潔的。因此我更喜歡.NET中構建的東西。
SQLite。它很小,有.Net的great wrapper。
您可以使用SQL Server Compact Edition(隨Visual Studio提供)或SQLite。
還有很多其他的,但這些是最常見的。
我是SQLite的忠實粉絲,因爲它很小,簡單而且快捷。它有一個很棒的ADO.NET provider,它支持實體框架。
SQLite的.NET端口位於http://code.google.com/p/csharp-sqlite/。這是純粹的.NET,因此你可以將ILMerge合併成一個.exe
如果你使用的是嵌入式數據庫,那麼SQL Server Compact Edition可能是你最好的選擇,SQLite緊隨其後。
如果你正在談論一張表,這聽起來像一個嵌入式數據庫可能是矯枉過正,你可以更好地通過一個簡單的文本文件。
或theres Esent,這是內置於每個窗口副本中的內置數據庫。在這裏閱讀:http://ayende.com/Blog/archive/2008/12/23/hidden-windows-gems-extensible-storage-engine.aspx
如果你感覺很勇敢,我已經把一個簡單的文檔db PieDb(就像'easy as'一樣)。
我第二次投票SQLite。除非您需要與中央數據庫輕鬆同步,否則SQL Server CE對於任何嵌入式目的來說都太重了 - 那太棒了。
如果你正在談論一張表,我不明白爲什麼你覺得你必須使用關係數據庫來實現你的目標。那麼單個文件呢?
當然,根據您需要存儲信息的原因以及數據相關的方式,您可能有理由需要db。但是你應該考慮一下,在這種情況下,數據庫是否真的是你需要的。
關係數據庫不應該是存儲數據的事實標準。在選擇RDBMS之前,您應該考慮許多備選方案。
查看mcintyre321的帖子。
有趣的是,人們如何看到「DB」這個詞,並立即鎖定DBMS的思維。我有沒有說我想要一個完整的DBMS?的確,我更關心平面文件解決方案,XML序列化等等。我只是想知道其他人會做什麼,爲什麼或不會選擇一些解決方案。 +1 – 2009-10-16 14:21:02
我很想知道什麼是最快的平面文件格式和庫來查詢它。最常見的問題是,在搜索沒有後臺引擎的平面文件來生成索引時,您沒有索引的好處。 – 2009-10-16 15:05:57
這將與嵌入式數據庫管理系統有關。平面文件是平坦的,因爲它們沒有索引。恕我直言。 – 2009-10-16 17:47:50
對於小而簡單的事情,我可能會去用XML而不使用數據庫。如果您抽象CRUD代碼,您可以稍後修改代碼的數據層部分,以便在數據增長的規模和複雜性時使用數據庫。
如果它不一定是SQL兼容的數據庫,那麼我也會看看Db4o。 Db4o是Java和.NET的對象數據庫。 .NET版本完全用C#編寫。
您可以創建一個類的數組,將其標記爲[Serializable],並使用內置的serialize/deserialize方法進行持久化。
一旦我調查了同樣的問題。從所有可能的候選人中,兩人看起來不錯這些是SQLite和Firebird(firebirdsql.org)。但火鳥有比SQLite更多的功能。
UPD:這裏約火鳥+ DOTNET http://www.firebirdsql.org/dotnetfirebird/embedded/index.html
+1命名替代SQLite – tobsen 2009-12-03 22:17:08
我第二次SQL精簡版或放氣的作家,以儘量減少大小簡單的XML文件的有趣的信息。快速,沒有那麼髒。
Berkeley DB也是嵌入式數據庫的不錯選擇。還有一個爲其提供.NET 2.0接口的library。
試試這個:https://github.com/mdsoftware/mData。沒有第三方,包括所有資源,還包括一些像Lisp一樣的數據處理和表達式編譯器。我試圖讓一些非常簡單但功能性很強的東西。
+1。我不知道.NET的包裝器。很酷。 – 2009-10-16 15:06:43
而.NET端口http://code.google.com/p/csharp-sqlite/ – mcintyre321 2009-10-16 15:22:13
正如對SQLite包裝的補充警告一樣,它支持LINQ。 – 2009-10-16 15:52:43