天天看點

雲計算平台S3,Ec2,Simple Db

1.資料完整性無法保證

類似SimpleDB的分布式資料存儲系統目前還無法實作和RDBMS一樣嚴格的完整性限制,例如唯一性限制和外鍵限制等,是以資料的完整性需要在應用中來實作。

2.資料一緻性無法保證,将導緻非常糟糕的使用者體驗

SimpleDB做寫入操作做了優化,調用API時隻需要寫入資料到一台SimpleDB伺服器即傳回寫入成功的資訊,随後資料會被分布複制到更多的SimpleDB伺服器上,而在分布完成之前無法查詢到最新的資料。是以需要在應用中來處理這種查詢延時導緻的資料一緻性問題。

3.資料聚合将需要更多的額外編碼實作

SimpleDB沒有實作諸如join,group by,sum/average,sort等,這些操作都需要在應用中來實作。

4.複雜查詢和即席查詢更難實作

SQL标準已經出現很多年,資料庫引擎對于一些複雜的SQL查詢做了足夠多的優化。SimpleDB對于過于複雜的查詢和條件不定的Ad hoc查詢沒有提供特别的支援,是以SimpleDB還不太适合資料倉庫等OLAP應用。

5.資料聚合操作性能比RDBMS差

RDBMS引擎對于join,group by等聚合操作做了很多優化,優化器可以提供根據不同的情況使用諸如hash join,nested loop join等方式來實作。自己在應用中實作這些操作可能效率會不如成熟的RDBMS。當然,這一點有些牽強,在應用中實作有可能更壞也有可能更好,從分布式趨勢來看,資料庫将傾向于做越來越簡單的資料存儲,計算更多的應該交給前面的應用伺服器來完成。

6.資料的導入導出,備份等操作更慢更繁瑣

RDBMS提供了很多成熟的資料遷移和備份工具,這一點剛剛出世的SimpleDB等自然有不足,但這不是問題,隻要有需求和時間,就會有工具。

7.SimpleDB并沒有想象中的快

8.RDBMS也可以良好的可擴充性

列舉了一些RDBMS的成功應用案例,如Facebook和Livejournal使用MySQL,myspace使用MS SQL Server,Salesforge.com使用Oracle。通過良好的應用設計、資料的垂直分割和水準分割、主從複制和群集等技術,傳統的RDBMS也能實作不錯的可擴充性,支撐大型的網站系統毫無問題。

9.超級可擴充性是一種過度設計

技術應該以适用為原則,過度設計是一種巨大的浪費。

10.SimpleDB非常有用,但也要用在合适的場合

SimpleDB并不是為了替代OLTP資料庫而生的,它的key-value存儲結構更加适用于處理半結構化的資料。好的産品也要用的合适的地方才能揚長避短。