Java開發2.0

來源:互聯網
上載者:User

Java開發2.0 - 使用Amazon SimpleDB進行雲端儲存,第1部分 - 開始使用SimpleDB和Amazon SDK

在整個系列中,我和您了分享大量非關係型資料存放區,統稱為 NoSQL。在一篇最近的文章中,我向您展示了一個面向文檔的資料存放區 (CouchDB)與面向模式的關係型資料庫的巨大區別。此外,CouchDB 的整個 API 是 REST 式的,且支援不同的查詢方式:JavaScript 中定義 的 MapReduce 功能。很顯然,這是對傳統 JDBC 的一個很大突破。

我最近還寫了 Google 的 Bigtable 相關內容,它不是一種關係型 或面向文檔的資料解決方案(且它偶爾不支援 JDBC)。Bigtable 就是 所謂的鍵 / 值儲存。也就是說,它是 無模式的,一般支援您儲存的任何內容,不管是一個停車罰單一實例、比賽列表還是比賽中的參賽者。 Bigtable 的無模式形式提供了大量靈活性,因而支援快速開發。

Bigtable 不是惟一可供我們選擇的鍵 / 值資料存放區。Amazon 有自己的雲端式的鍵 / 值儲存式 Amazon SimpleDB。Bigtable 是通過 Google App Engine 提供的一個抽象公開給 Java 開發人員的,而 Amazon SimpleDB 是通過 web 服務介面公開的。因此,您可以通過 web 和 HTTP 操作 SimpleDB 資料存放區。Amazon 的 Web Service 基礎設施之上的綁定使得我們可以自己選擇語言來使用 SimpleDB,包括 PHP、Ruby 、C# 和 Java 語言。

這個月,我將通過 Amazon 的官方 SDK 向您介紹 SimpleDB。我將使用另一個比賽相關樣本展示這個而強大的、雲端式的資料存放區更加不同 的一面:字典式搜尋。

SimpleDB 簡介

在底層,SimpleDB 是一個可大規模伸縮、用 Erlang 編寫的高可用資料存放區。從概念上講,它就像 Amazon 的 S3。但是 S3 有對象位於 bucket 中,而 SimpleDB 在邏輯上被定義為包含項目的域。SimpleDB 也允許項目包含屬性。將一個 域看作是 S3 中的一個 bucket 或關係意 義中的一個表(或更準確地講,Bigtable 的 “kind” 概念)。不過要注意,不要將關係性投射到 SimpleDB 的概念中,因為它最終會像 Bigtable 一樣無模式。域可以有多重專案(類似於行),且項目可以有多個屬性(類似於關係型表中的列)。

SimpleDB 的‘最終一致性’

CAP theorem表明,一個分布式系統不能同時高度可用、可伸縮並確保一致性;確實,一個分布式系統任何時候僅支援這三個特質中的兩種 。相應地,SimpleDB 可以確保一個高度可用、可伸縮的資料存放區,但不支援即時一致性。SimpleDB 支援的是 最終一致性,這並不像您想象的 那樣糟糕。

對於 Amazon 來說,最終一致性是指一切在 幾秒內在所有節點(不過在一個地區內)上都變得一致。在這一小段時間內,兩個並發進程可 能會讀取同一資料的兩個不同執行個體,而在此期間您換來的是大規模可靠性和一個實惠的價格。(您只需向提供類似可靠性的商業實體漫天要價 ,從而查看其區別。)

屬性是真正的名 / 值對(有點像 Bigtable,不是嗎?)且 “對” 並不局限於一個值。也就是說,一個屬性名稱可以有一個相關值集合(或 列表);例如,一個詞項目可以有多重定義的屬性值。此外,SimpleDB 內的所有資料都以 String形式表示,這明顯不同於 Bigtable 或甚至 是一個 RDBMS,後者通常支援混合資料類型。

SimpleDB 的單資料類型屬性值方法有利有弊,這取決於您如何去看待它。不管是利是弊,它確實隱含著查詢的運行方式(不久將介紹更多 相關內容)。SimpleDB 也不支援跨域聯結的概念,因此您不能查詢多個域中的項目。不過,您可以通過執行多個 SimpleDB 並在您這一端執行 聯結來克服此局限。

項目 本身沒有主鍵(就像 Bigtable 一樣)。一個項目的主鍵或惟一標識符是項目的名稱。SimpleDB 非常智能,能夠在發出一個複本建立 請求時更新一個項目,只要該項目的屬性已被更改。

與其他 Amazon Web Services 一樣,SimpleDB 通過 HTTP 公開一切內容,因而有多種方式可與之互動。在 Java 中,我們的選項從 Amazon 自己的 SDK(我們會在接下來的例子中用到)到一個名為 Topica 的流行項目,甚至到成熟的 JPA 實現(我們將在第 2 部分探討)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.