2009-09-23 194 views
2

我的僱主有一個數據庫委員會,我們一直在討論不同的平臺。到目前爲止,我們已經有人在SqlLite,MySQL和PostreSql上。我們目前使用Microsoft堆棧,所以我們都非常熟悉Microsoft Sql Server。比較數據庫平臺

作爲比較的一部分,我認爲爲每個數據庫平臺創建一個小型參考應用程序以探索使用它的細節會很有趣。

第一:這個想法是否有意義,或者比較需要超越一個簡單的示例應用程序的範圍是什麼?

第二個:我會想象每個參考應用程序都有一組離散的但很小的一組需求,它們滿足我們定期碰到的許多場景。以下是我到目前爲止,還有什麼可以添加到列表中,但仍然保持應用程序足夠小,以在非常有限的時間內構建?從應用層

  • 連接

  • 工具數據庫管理

  • 創建模式(小的 「s」 的模式,表/視圖/功能的其他對象)

  • 的過程

    簡單CRUD(創建,檢索,更新,刪除)

  • 交易支持

三:有沒有人經歷了這個過程,你有什麼發現?

+0

如何確保你的評價將不被偏見嗎?說真的,只是使用人們最喜歡的數據庫引擎。如果它讓你放棄錢,去MS SQL服務器。 – 2009-09-23 15:54:53

+0

是... becasue SQL Express是不是免費的 – 2009-09-23 15:56:12

回答

0

其實每個RDMS的學習能力更重要。因爲它取決於應用程序。如果您需要空間數據功能PostgreSQL與PostgreSQL比MySQL更好。如果您需要輕鬆複製,高可用性功能MySQL似乎更好。還有許可證問題。用於比較的鏈接here。所有都有優點和缺點。首先得到您的項目或項目的要求,而不是將其與列出您選擇的RDMS的功能進行比較,並決定要去哪個項目。

0

我不認爲你需要測試簡單的CRUD的東西,很難想象一個供應商不支持基礎知識。

0

首先,我認爲你超出了示例應用程序的範圍。其次,我會選擇一個最適合您希望開發的工具或應用程序的工具或應用程序。例如,與存儲單用戶應用程序配置的數據庫相關的模式和事務是相關的嗎?第三,我曾與Access,SQL Server,SQLite,MySQL,PostgreSQL和Oracle合作過,他們都有自己的位置。如果您在MS空間中,請使用SQL Server(並且不要忘記Express)。還有ADO.NET的方式與我的列表中的其他人交談。這取決於你想要什麼。

+0

所以,當你與一個特定數據庫的工作,你只是使用它,因爲別人已經用它開始了嗎?或者你是如何選擇的,例如PostgreSQL vs MySQL - 哪些因素使特定場景更好?來自微軟的世界,我沒有這個決定的背景。 – t3rse 2009-09-23 16:07:02

+0

這取決於。做一些研究,包括市場滲透。在不玩產品的情況下作出技術決定會限制你的意見。例如,我喜歡網絡上的MySQL,因爲它是免費的,但是對於大型網站,SQL Server更加強大。我可以想象PostgreSQL對於企業級數據庫也足夠好。 – 2009-09-23 18:28:35

0

坦率地說,我懷疑一個任意定義的簡單應用程序可能會真正突出數據庫引擎之間的差異。我想你會更好地閱讀各種引擎的廣告文獻,看看他們聲稱他們的優點。然後考慮這些問題中的哪些對您有用,並構建專門用於驗證您關心的聲明的測試。

例如,這裏有專業人士和數據庫引擎的利弊我用那些跟我的關係最。我不主張這是一個詳盡的清單,但它可能給你的事情要考慮,一個想法:

MySQL的:注:MySQL有內部兩大引擎:MyISAM和InnoDB。我從未使用過InnoDB。 優點:快速。免費取決於你如何使用它便宜。非常方便和易於使用的管理模式的命令。一些非常有用的SQL標準擴展,如「插入...重複」。 缺點:MyISAM引擎不支持事務處理,即沒有回滾。 MyISAM引擎不會爲您管理外鍵。 (InnoDB沒有這些缺點,但正如我所說,我從來沒有使用它,所以我不能進一步評論。)與SQL標準有許多偏差。

Oracle:優點:快速。通常符合SQL標準。我的兄弟在甲骨文工作,所以如果你在那裏購買,你會幫助我的家人。 (好吧,也許這不是你的重要職業...) 缺點:難以安裝和管理。昂貴。

Postgres的:優點:非常高的符合SQL標準。自由。非常好的「解釋」計劃。 缺點:相對較慢。優化器很容易在複雜的查詢中混淆。修改現有表格有些尷尬。

訪問:優點:易於安裝和管理。非常容易使用模式管理。內置的數據輸入工具和查詢生成器,用於快速和骯髒的東西。低廉。 缺點:慢。不可靠的多個用戶。

+0

「insert ... on duplicate」是非標準的 - 標準版本是MERGE(不幸的是PostgreSQL缺乏)。另外,我認爲調用PostgreSQL緩慢或容易混淆並且快速調用MySQL是不公平的。 MySQL既沒有真正的優化器,也沒有很多計劃可供選擇(沒有合併連接或散列連接!)。在PostgreSQL中修改現有表有什麼尷尬? – 2009-09-23 17:18:07

+0

恩,我知道「插入...重複」是非標準的。這就是爲什麼我將其稱爲「SQL標準的擴展」。它與「合併」並不完全相同。從源表中「合併」讀取並寫入目標表,即它期望涉及兩個表。將記錄直接添加到表格時,可以使用「重複插入」。 – Jay 2009-09-23 20:30:22

+0

的確,MySQL連接表的方法較少,但在我看到的任何基準測試中,速度都更快。我相信Oracle和MySQL通常會贏得性能基準測試。如果您查看Postgres生成的解釋計劃,我想您會發現,隨着查詢變得複雜,Postgres經常會將非常糟糕的計劃放在一起。有混淆MySQL的複雜查詢,但在我(不可否認的是,軼事)的經驗中,這種情況發生得少得多。我的觀點並不是破壞Postgres--它肯定有它的優勢,我列出了幾個。 – Jay 2009-09-23 20:34:58

1

這個想法是否有意義或者是 比較需要超越一個簡單的示例應用程序的 範圍?

我不認爲這是一個好主意。大多數真正影響你的事情是長期的數據庫管理問題,以及你選擇的數據庫管理系統如何處理這些事情。

你可以在喜歡的東西「我在3秒內發現瞭如何使用XYZ數據庫管理系統做這個」短期誘惑。現在,我並不是說支持並不重要;恰恰相反。但在3秒內在谷歌找到答案意味着你得到了一個簡單問題的答案。有多快,如果有的話,你能找到一個具有挑戰性的問題的答案?

的簡短列表中要考慮的重要事情(並非全部)是:

  • 備份和恢復 - 在兩個邏輯層面和物理層面
  • 的函數(或存儲過程),觸發了很好的支持,各種SQL查詢結構
  • 支持真正可擴展性的API--這些功能可以幫助您擺脫困境,讓您以創新的方式解決問題。用戶定義的類型和函數可以完成什麼,你會感到驚訝。用戶定義的類型如何與索引系統交互?
  • SQL標準支持 - 並沒有超過其他所有的東西,但是如果在幾個領域缺乏支持,真的考慮爲什麼它缺乏,變通辦法是什麼,以及這些變通辦法的成本是多少。
  • 一個強大的執行程序,它提供了一系列的基本算法(例如哈希聯接,合併聯接等)和索引結構(B樹,哈希,也許全文選項等)。如果它缺少一些算法或索引結構,請考慮數據庫在回答時效率低下的問題類型。注意:我不只是在這裏表示「緩慢」錯誤的算法可能會輕易地以數量級更差。
  • 能否類型系統合理地代表你的公司嗎?如果可用的類型集合非常弱,那麼你將會陷入混亂。把所有東西都表示爲字符串就像裝配程序設計(無類型),你會有一團糟。

一個不重要的應用程序不會顯示任何的那些東西。簡單的事情很容易解決。如果你有一個「數據庫委員會」,那麼你的公司關心它的數據,你應該認真對待責任。您需要確保您可以輕鬆開發應用程序,並獲得您和開發人員期望的結果;當您遇到問題時,您需要訪問強大的系統和質量支持,以幫助您度過難關。

0

我認爲,你可以調查Firebird too

這是火鳥長關於yahoogroups提取物,我覺得很客觀

我們自然讀者是開發誰 要打包和出售專利 應用程序。 Firebird比Postgres更易於 封裝和安裝; 比SQLite更強大;而不是 收取像MySQL一樣的版稅。

+1

是的。我只有Firebird的簡短經驗,但我認爲Access和Firebird是我見過的唯一可以輕鬆打包供最終用戶部署的數據庫。要求你的平均非IT人員安裝MySQL或Postgres或Oracle或MS SQL Server肯定是一個很好的方式來保存你的服務檯人員無聊。 – Jay 2009-09-23 20:37:26