2010年6月14日 星期一

Cloud

可以託管應用和資料庫的商業公司提供的軟體即服務(SaaS)、平臺即服務(PaaS)、基礎架構即服務(IaaS)和資料庫即服務(DaaS)。

1.基礎架構提供商包括亞馬遜的彈性計算雲EC2、 GoGrid、Rackspace Mosso和Joyent,

2.微軟的Azure、Google AppEngine、Force.com、Zoho和Facebook則是平臺提供商

3.針對特定用戶的雲服務提供者,如惠普的雲列印服務,IBM 的LotusLive為企業提供的協作和社交網路服務。
其它SaaS提供商如Birst和SAS提供按需商務智慧服務,Salesforce.com和 Zoho提供客戶關係管理(CRM),Epicor、 NetSuite、SAP Business ByDesign和Workday提供企業資源規劃(ERP)套件

4.DaaS提供商包括EnterpriseDB、FathomDB、 Longjump和TrackVia。

文檔存儲和列存儲

文檔存儲和列存儲
   按列存儲資料雖然沒有顛覆傳統的按行存儲資料的理論,但結合資料壓縮,無共用,大規模並行處理架構時,它可以保持高性能做應用分析和商務智慧處理,在雲 計算服務中使用Sybase IQ或Vertica列存儲,組織可以在保持伺服器硬體不變的情況下增強BI能力,Sybase IQ處理複雜的分析查詢,加速報告處理,包括為字串處理建立索引,如SQL LIKE查詢,它通過標準資料訪問API提供連接,它的Rcube方案相對普通關係資料倉庫和資料集市提供了性能上的優勢。Vertica分析資料庫支援 網格架構,TB級大小的資料庫,基於標準的連接,亞馬遜EC2用戶可以即付即用,有一個大型AMI實例,ODBC,JDBC,Python和Ruby驅動,資料庫大小每節點可以達到1TB,節點數量可以無限制增加。

   Apache CouchDB是一個靈活的,具有容錯功能的資料存儲,它支援JavaScript物件標記(JSON)和AtomPub資料格式,它為讀取和更新命名文 檔提供REST風格的API。為了確保資料一致性,它具有ACID屬性,不會覆蓋提交的資料,它使用一個文檔ID和序號寫入B叉樹索引,並依靠序號提 供生成文檔版本的功能。CouchDB提供了一個基於對等的分散式資料庫解決方案,支援雙向複製。

RDF和語義資料存儲

RDF和語義資料存儲
  社交網路和 電子商務已經向我們表明了許多網路應用必須使用大規模資料存儲,支援上百萬的用戶併發訪問,雲端運算通常被吹捧為解決這一問題最佳辦法,並提出了Web 3.0的概念。資料存儲可以處理非常大的知識庫和資料集編碼,使用W3C資源描述格式(RDF)和W3C SPARQL查詢語言傳遞語義。RDF資料是按照主題-謂詞-物件三元組進行存儲的,重要的RDF資料還存儲了額外的資訊,如版本資訊,臨時查詢資訊等。

  Sesame, Jena, and Mulgara是開源的解決方案,OpenLink Virtuoso是一個萬能伺服器, 最近的基準測試達到了110500三元組/秒,除了SQL和XML資料庫外,它還提供了線上備份亞馬遜S3和安裝RDFizer盒子的功能。Franz AllegroGraph RDFStore提供了一種手段在雲中構建基於RDF的聯合知識庫存儲,它支援SPARQL查詢,Prolog語言和RDFS + +分析。在亞馬遜EC2上,它使用10個大型EC2實例花了6.19小時存儲和索引了10億三元組資料集。可以存儲RDF三元組的SQL/XML產品包括 Oracle 11g,IBM Boca for DB2。在專利方面,微軟一直在想辦法存儲RDF三元組,以及將SPARGL轉換成SQL。

實體-屬性-值存儲

實體-屬性-值存儲
   實體-屬性-值存儲(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資料服務都要多。

分散式雜湊表和key-value資料存儲:memcached, MemcacheDB, Project Voldemort, Scalaris, and Tokyo Cabinet

分散式雜湊表和key-value存儲是構建可伸縮的,負載均衡的應用程式的工具,不強制執行資料完整性、一致性、和原子持久性檢查,它們有限地支援應 用做即席查詢和複雜分析處理。這樣的產品包括memcached, MemcacheDB, Project Voldemort, Scalaris, and Tokyo Cabinet。

  Memcached使用得非常普遍,廣泛用於資料庫驅動的 網站緩存解決方案,他是一個巨大的關聯陣列,使用GET或PUT功能訪問,用一個鍵值標識資料的唯一性。對於緩存查詢代價高的SQL語句返回的資訊特別有 用,如數量和總計。MemcacheDB是一個分散式key-value資料存儲,符合memcached協定,但使用了Berkeley資料庫進行資料 持久化存儲。

  Scalaris是一個分散式key-value存儲,它是用ErLang實現的,它為事務實現了無阻塞提交協定,使用 Web介面,你可以讀寫key-value值,每個操作都是一個原子事務。使用Java可以執行更複雜的事務。Scalaris具有很強的一致性,支持對 稱複製,但沒有持久性存儲。

  開源的Tokyo Cabinet資料庫key-value存儲目前在網上很多社區討論得火熱,它的速度快得驚人,使用雜湊表引擎存儲1百萬條記錄只需要0.7秒,使用B叉 樹引擎時也只需要1.6秒。資料模型是每個鍵都有一個值,它支持LZW壓縮,當鍵排好序後,可以進行首碼和範圍匹配,在處理事務時,它可以在寫入日誌和影 式分頁之前寫入。

  Tokyo Tyrant是 Tokyo Cabinet的一個資料庫伺服器版本,它主要用於高容量應用中緩存SQL資料庫。

  有些產品支援基於鍵範圍的查詢,但即席查詢操作和總計操作(求和,平均數和分組)需要程式設計實現,因為沒有內置這些功能。

Database

MemCachedb, Tokyo Cabinet (Tokyo Tyrant), Redis

Plunk: LightCloud

CouchDb

MongoDb

Cassandra

SimpleDB (Amazon)

InfoGrid, Neo4J,
HypergraphDB
Twitter's FlockDB

http://www.slideshare.net/thobe/nosqleu-graph-databases-and-neo4j