[DB] 檔案型與伺服器型的資料庫選擇


原文如下:

TerrySun 07-24-2006, 8:51 上午 UTC
請問一下各位大大…當遇到可以使用asp.net2.0來開發的時候,該選擇哪種資料庫呢??
主要是使用這兩種資料庫會有蠻大的價差的問題,而且一差就差了快一倍的價格…
一般來說…大家都會說,當資料量大的時候,就該使用sqlserver了…但如果資料量小的話,access就很夠用了…
在網路上,也蠻多網站都是用access來做開發…問題來了…資料量要大到多大,才叫大呢??
asp.net配合access到底可以做到多大的資料量存取呢??那如果用ASP.NET配合MYSQL會不會比配ACCESS效能來的高呢??
在asp.net出來之後,現在又出現了一個sqlserver 2005 express… 這些資料庫,
 
到底該怎麼選擇才可以達到最經濟、最實用、又最符合系統使用呢??
 
不知道有沒有相關的數具呢?在網上也找蠻久…似乎也沒相關的比較性的文章…
主要是為了能說服客戶使用sql server,必需提出原因,為何不使用access或mysql,如果只是資料量的關係…那多少筆資料內適用access,多少筆資料以上,又必需要用到sql server才不會因為資料庫的關係,造成系統效能不佳…這些在跟客戶解釋的時候,似乎都必需提出個數具,才有辦法說服客戶…讓客戶安心… 這部份沒這方面經驗…似乎也很難說出個所以然… 故上來跟各位大大求救…


小朱 07-24-2006, 9:14 上午 UTC
 

我不知道你的客戶需求是什麼,我提供幾個看法:

  • 如果用於小型的 Windows Application,可考慮使用 Access,但如果是少量使用者的小型 Web 應用程式,則可考慮使用 SQL Server Express,反正都是免費的,而且又有 SQL Server Management Studio Express 可輔助管理(這在 MSDE 時代可沒有的 …)
  • 如果是中型(50人以上,資料庫大小會超過 4GB 的),則可考慮使用 SQL Server Standard Edition,MySQL 也行,只是 MyODBC Driver 有部份中文的問題當無法解決,MySQL connector for .NET 是比較好的連接 MySQL 選擇,但 SQL Server 是首選 .
  • 大型系統則可考慮 SQL Server Enterprise Edition 或 MySQL Pro Certified Server,然而上述問題仍然存在 .
  • 如果你用的是 JSP, PHP 時,MySQL 是首選,但如果是 ASP.NET,SQL Server 似乎是比較好的選擇 .
  • 資料量大小要看各資料庫的負荷程度,SQL Server Express 有每個資料庫只能到 4GB 的限制,Access 則是 2GB(這個大小還要減去系統物件的空間才算),SQL Server 則是 1,048,516 TB,MySQL InnoDB 則是具有 64TB 的表格空間(資料庫空間查不到)

不過在查詢設計和效能上,SQL Server 都會勝於 Access,MySQL 的話則要看熟悉程度,但你要給客戶一個觀念,就是商用環境的 MySQL 是要錢的,MySQL Community Edition(免費的 MySQL)能否使用在商業環境,要看授權合約 .


璉璉 07-24-2006, 9:27 上午 UTC

 

記住:

MySQL 並非是免費,若是你開發的網頁系統並未開放原始碼,你可能需要購買商業授權,請參閱原廠網頁說明。

目前跟德瑞克討論 MySQL 授權的結論是,網頁系統若需支援 MySQL 時,會需要同時支援其他資料庫,以避免 MySQL 商業授權問題,置於委辦廠商要選那套受支援的資料庫時,由委辦廠商自己決定。


我目前的網頁系統視需求,必要時同時支援上述三種資料庫,開發用 Access ,正式系統用 SQL Server ,MySQL 則是因應上級單位要求。如果你沒有上級單位強力要求下,目前暫時仍不建議你使用 MySQL ,主要在於罕用字的支援,基本上在 Windows 下使用 MyODBC 連,實際上是不支援 Unicode ,所以日韓簡繁罕等遠東語系不能共存,但是你的應用程式若只有透過 MyODBC 連,則造成的編碼差異並不會明顯看出來,但是資料庫並非是設計給單一系統使用,若是連線端有用 jdbc 的,MySQL 在 jdbc 下才真正支援 Unicode ,就會造成一邊是亂碼,MyODBC/jdbc 只能有一邊正常。下面有更細的測試經驗談:

http://tlcheng.spaces.msn.com/blog/cns!145419920BFD55A7!763.entry

Access 跟 SQL Server/MySQL 的應用上來說,基本上就是檔案型與伺服器型的差異。

比較的文章先前有蒐集一些連結,放在下面位置:

http://tlcheng.spaces.msn.com/blog/cns!145419920BFD55A7!741.entry

個人看法:

Access 每個資料庫在瞬間同時不能有超過 255 人連線,包含未關閉的連線,不能超過 2GB,設計上以每個資料表的筆數在 50 萬筆以內仍能有不錯的效果,管理上可能會有巨集病毒的危機,不過一般連線程式並不會存取巨集病毒,到不用擔心。適合用於簡單、需轉散佈的系統上。(註:我自己就有單一表格超過 300 萬筆 (row) 的資料,跑起來也還好,沒有想像中的慢,目前每天仍在更新資料及提供查詢,一般 Access 連線用完會立刻關閉,所以瞬間同時可能只有 0.02 以內的時間間距,網頁服務人數通常會更先到達資源不足的狀況)

SQLExpress 有 4 GB 的限制,除非你考慮的是免費資料庫,否則直接拿 SQL Server 比是比較實在,當你單一資料表超過 50 萬筆以上時,用 SQL Server 仍能維持一定的效能(但是初始連線感覺比 Access 慢,可能是 .Net 架構關係?),SQL Server 是以大型資料庫為設計目標,設計考量包含了很多部份的最佳化,包含連線共用、效能調校、快取等,當你的系統很重視效能時,可以考慮 SQL Server ,不過這個要拿錢來換,SQL Server 想要跑的快又順,DRAM 越大越好。

當然大部分系統在效能上,很多是開發者的問題,比如說你沒有善用 SQL 語法,例如資料筆數你不用 Count 直接取得,卻要把資料全部讀取後,算 Count ,或是限制一定資料讀取筆數之類,這種是開發者要考量的,此外 SQL Server 通常為了安全考量,會跟 Web Server 分開放,一個放在安管內,一個放在廣域網路上,或是透過 port map 映射,這種情況兩台之間的網路頻寬會變成另外一個效能瓶頸,Access 通常放在本機上(不建議使用 UNC 做成網路資料庫),在傳輸上會比較快。

綜合考量時,通常配合你系統的規模,跟系統的安全穩定性,有金錢流的系統通常強調穩定、安全,這類要用 SQL Server ,如果只是一般資料查詢、檢視,比如說留言版之類,對於強度要求不高的,用 Access 就可以了。

Categories: 資料庫 | 發表留言

文章分頁導航

發表留言

在 WordPress.com 建立免費網站或網誌.