GAE 雲端程式簡介環境安裝管理介面資料庫中文編碼程式範例HelloGuestbookWikiBoxTxtDBase訊息相關網站參考文獻最新修改簡體版English |
簡介為了適應雲端運算的網路特性,GAE 必須支援非常龐大的資料庫,這些資料分別儲存在許多不同的電腦中,並且能快速且平行的被儲存或取出。由於 Google 是以搜尋引擎起家的公司,擅長文件型資料的處理,因此 GAE 所支援的資料庫,並非傳統的關連性資料庫,而是基於反向索引 (Reverse Index) 的全文檢索型資料庫。 GAE 直接連接到 Google 雲端平台,採用 Map-Reduce 運算與 BigTable、NFS 等基於全文檢索技術的資料庫,因此並不支援下列的操作,像是 JOIN、GROUP 等操作。其根本原因是 GAE 採用基於反向索引 (Reverse Index) 的全文檢索型機制,而關聯式資料庫則採用基於 B-Tree 的機制。 B-Tree 是一種具有排序特性的索引結構,因此可以輕易的支援 >、<、JOIN、GROUP 等操作,但是 Reverse Index 則是一種使用赫序函數 (Hash Function) 的雜湊表結構,因此難以支援 >、< 等操作,只能支援 = 這樣的操作符號。 在 Google Apps Engine (GAE) 雲端運算平台中,採用了 Java Data Object (JDO) 和 Java Persistence API (JPA) 等儲存技術。這種儲存技術乃是根據資料庫的概念進一步延伸而來的,讓任何 Java 物件都可以輕易的被「儲存、修改、刪除、查詢」。 GAE 的資料庫支援交易 (transaction),以便處理多人同時進行交易的情況,因此您可以在 GAE 的資料庫中使用 commit 機制,以確保交易的原子特性 (要嘛全都完成,要嘛全都放棄)。 物件的儲存GAE 的資料儲存單元是一種稱為實體 (entity) 的物件 (object),每個實體具有許多個屬性 (properties)。這些物件的儲存並非像傳統關聯式資料庫採用表格與欄位的方式,而是採用一種非結構性 (schemaless) 的儲存方式,直接由儲存引擎取出整個區塊後,再由應用層的 JDO 與 JPA 去對應到 Java 物件中。 JDO 與 JPA 的角色,主要是將非結構性區塊對應到 Java 物件,讓這些區塊能在 Java 程式中以物件的形式被使用,這也正是 GAE 採用 JDO 與 JPA 的主要原因。 參考文獻
|
GAE 採用的 Java 儲存技術
page revision: 10, last edited: 15 Oct 2010 03:18
Post preview:
Close preview