2009-11-19 53 views
2

在我編寫的程序中,它需要頻繁的數據庫通信,目前我只使用XML文件。通過XML使用MySQL或SQL是否真的有好處。請注意,我使用的是C#,所以MySQL在處理它的時候並不是很有趣(從我的經驗來看)。C# - XML vs MySQL

回答

4

在保持存儲在XML文件與關係數據庫(MySQL和你的情況)的數據而言,數據庫遠比簡單的XML文件更加穩健。但這只是確定應用程序需求的練習。與許多其他RDBMS一樣,MySql將提供的不僅僅是一個停放數據的地方。使用現代數據庫如MySql的最大優勢是支持ACID。這意味着您可以進行全有或全無交易,確保數據的一致性。

您還可以獲得referential integrity以確保相關記錄保持不變,並且不會讓您遺棄對其他數據記錄的引用。我們可以繼續討論locking的價值或stored procedures的權力。

但是,真的,你應該考慮你的應用程序的需求。如果您執行大量體操操作以保持數據順序,或者在嘗試讀取和寫入數據時關心共享訪問和文件鎖定,則需要在XML文件基礎上踢球。當一個基本的mysql數據庫能夠解決這些問題時,不需要試圖找到解決這些問題的方法。

+0

Perrty和我一起工作過的每個數據庫都有參考完整性問題(主要是由於缺乏規範化,大概是出於性能方面的原因)。它不是免費的,並且需要一定程度的能力,而這似乎並不存在於野外。 – 2010-03-08 16:12:58

+0

咦?誠然,可以設計數據庫來*不使用外鍵引用,但如果實現,我發現他們通常工作。 – jro 2010-03-08 19:48:45

0

如果存在真正的關係數據......您幾乎總是會從使用RDBMS中受益。在查詢引擎的支持下檢索數據會更快,而不是將XML節點綁定在一起。將數據插入結構時,您還將獲得參照完整性。

有一個針對MySQL的ADO.NET提供程序,因此您不應該比處理MS SQL Server更難處理MySQL數據庫。

你甚至可以下載DbLinq併爲他們的LINQ提供MySQL功能。可以讓事情變得更簡單(或者你可以使用Entity Framework和MySQL ADO.NET提供程序)。

0

XML文檔的大小可能是一個很大的因素。在XML中,您可能會生成大量且複雜的文本文件,其中包含大量附加數據,或者您的數據會跨多個文件進行分割。管理這些文件可能很頭疼。使用SQL數據庫可以讓你浪費更少的磁盤空間。

SQL比使用XML更快。

任何SQL數據庫都將允許您訪問可能難以使用XML強制執行的整套權限和角色功能。

0

如果您有關係數據,數據庫將工作。作爲MySQL的替代方案,如果您不想查找集中式解決方案,則可以使用SQLite。 SQLite在進程中運行(意味着運行它的程序是它自己的「數據庫服務器」),除了分發包含它的DLL文件之外,不需要安裝。

羅伯特·辛普森寫System.Data.SQLite,一個SQLite數據提供的.NET Framework。它是免費的和開放源代碼(如SQLite),工作和感覺像原生的System.Data.SqlClient一樣。它支持標準的ADO.Net約定,Linq和實體框架。

我使用System.Data.SQLite在工作項目,需要在本地進行多次運行(數據處理和作業調度)之間的比較快速運行和緩存數據的應用程序。 Firefox是使用SQLite的應用程序的一個很好的例子,Firefox 3使用SQLite的Cookies,下載歷史記錄,表單自動填充,最重要的是您的網頁瀏覽歷史記錄。

同樣,SQLite是爲直接應用程序使用而設計的,缺少用戶身份驗證和模式權限等功能。如果多個程序試圖寫入相同的數據庫(這些可以解決,但沒有像真正的RDBMS可以做的那樣),它就會出現問題。它最大的優點是不需要像MySQL那樣安裝和設置工作。在C#的情況下,你所要做的就是引用System.Data.SQLite並將.dll文件與你的程序一起復制,它就可以工作。