實體-屬性-值存儲
實體-屬性-值存儲(Entity-Attribute-Value ,簡稱EAV)源於資料庫管理技術中的關係模型,它們不具備完整的SQL資料庫功能,如基於非程式性和陳述性查詢語言的查詢模型,它們也不僅僅是一個簡單 的key-value資料存儲,EAV資料存儲主要包括亞馬遜的SimpleDB,Google AppEngine 資料庫和微軟的SQL資料服務。
Google BigTable使用分散式檔案系統,它可以在數千台伺服器上 存儲非常大的資料集(PB大小),它基於Google AppEngine資料庫,Google自身也在使用它,和MapReduce一起,為網頁和應用如Google地球建立索引,BigTable是一個需 要大量分析的專案解決方案,如10億網頁和47.8億URL。對那些尋求BigTable開源替代方案的人而言,可以採用 Hadoop,Hypertable和HBase。Hypertable運行在分散式檔案系統(如HDFS)上。HBase資料通過表、行和多值列進行組 織的,它有一個集成式介面掃描行的範圍。Hypertable是用C++實現的,而HBase是用Java實現的。
Google AppEngine包括一個靈活的資料存儲,它專門為讀操作進行了優化,支援原子事務和一致性,可以和屬性一起存儲實體。它允許根據鍵和屬性過濾和排序, 內置21個資料類型,包括list,blob,postal address和geographical point。應用程式可以定義實體組作為執行事務更新的基礎。訪問Google AppEngine資料庫有程式設計介面,可以使用Python查詢物件。資料庫也是可程式設計的,可使用Java資料物件(JDO)和Java持久性API。雖 然AppEngine捆綁了一個資料存儲,AppScale專案提供了一個軟體操作其它資料存儲,如HBasem,Hypertable,MongoDB和MySQL。
亞馬遜平臺
亞馬遜SimpleDB是靈活的,基於ErLang實現的,適合於高可用應用的最終一致性資料存儲套件,資料模型提供了大項目收集域,實際上是包含了 key-value值的屬性的雜湊表,屬性可以有多個值,而且不需要聯合,查詢語言提供查詢返回一個專案名、所有的屬性、屬性數量以及屬性清單。資料是以 單個格式(無類型字串)存儲的,不應用約束,因此要得到準確的查詢結果,你必須將資料按規定格式存儲,例如使用0或ISO 8601:2004日期格式填充數位。
Azure服務平臺
微軟的Windows Azure和Google AppEngine以及Froce.com一樣,提供了一個雲端運算平臺,其中包括資料存儲和其他應用開發特性。微軟.NET服務提供了一個服務匯流排和認 證,Live服務就是通過搭積木的方式構建的應用。微軟在Azure雲中也提供了SharePoint服務和Dynamics CRM服務。和亞馬遜的S2和EC2類似,使用Azure服務平臺的通信是 基於Web Service模型的,但同時支援SOAP和REST。微軟Azure捆綁了SQL資料服務(SDS),通過ADO.NET資料服務將Azure表存儲進 行暴露。目前該資料庫僅提供了一個單一SQL Server實例,並限制了存儲空間最大為10GB。對於更大的需求,必須使用分區進行水準分割。
對於那些使用了很長時間的工業標準資料庫的人,需要適應新的EAV存儲,最大的不同是EAV缺乏強大的類型,SimpleDB使用字串值存儲一切,因 此進行比較和排序時需要你用0進行位元數補齊。微軟的SQL資料服務提供Base64,布林,日期時間小數和字串等類型,Google AppEngine內置了20多個類型,比SimpleDB和SQL資料服務都要多。
沒有留言:
張貼留言