1 / 48

資料儲存

資料儲存. 教材. 湯秉翰 著 (2013) , 雲端網頁程式設計- Google App Engine 應用實作 ( 第二版 ) , 博碩文化, ISBN 978-986-201-824-8 ( 書號 PG31356) 鍾葉青、鍾武君 著 (2013) , 雲端計算, 東華書局, ISBN 9789861579030 ( 書號 CL009) 許清榮、林奇暻、買大誠 著 (2012) , 掌握 Hadoop 翱翔雲端 -Windoop 應用實作指南, 博碩文化, ISBN 978-986-201-673-2 ( 書號 PG21241)

thy
Download Presentation

資料儲存

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 資料儲存

  2. 教材 湯秉翰 著(2013), 雲端網頁程式設計-Google App Engine應用實作(第二版), 博碩文化, ISBN 978-986-201-824-8 (書號 PG31356) 鍾葉青、鍾武君 著(2013), 雲端計算, 東華書局, ISBN 9789861579030 (書號 CL009) 許清榮、林奇暻、買大誠 著(2012), 掌握Hadoop翱翔雲端-Windoop應用實作指南, 博碩文化, ISBN 978-986-201-673-2 (書號 PG21241) 鍾葉青、李冠憬、許慶賢、賴冠州 著(2011), 雲端程式設計: 入門與應用實務, 東華書局, ISBN 9789861578125 (書號 CL008)

  3. 章節大綱 Datastore JDO 類別與屬性 物件的儲存 資料查詢 更新實體資料 刪除實體資料

  4. 前言 GAE 的 Datastore 與傳統的關聯式資料庫不同,提供JDO 與 JPA 方式儲存資料

  5. 資料儲存 • 資料必須儲存在後端 • 由 Servlet 負責 • 前端接收使用者輸入後,利用 RPC 或 AJAX 傳遞至後端程式 • 傳統的資料庫系統不適合雲端應用 • GAEDatastore 為雲端儲存 • Schemaless • NoSQL

  6. GAEDatastore • Entity 實體 • 儲存在 Datastore 裡的物件稱為實體(Entity) • 類比傳統關聯式資料庫表格中的記錄(Record) • Kind 種類 • 每一個 Entity 都屬於某一特定種類 • 分類的依據(Categorizes)

  7. GAEDatastore • Entity 儲存時必須具備一個鍵值(Key) • Key 的組成元素 • Kind 分類 • Identifier 識別項,不可更改 • 名稱字串,使用者自訂 • 整數 ID,系統自動產生 • Ancestor Path(非必要) • 樹狀結構路徑

  8. JDO(Java Data Object) • GAE 採用 JDO2 • 2001 年 JDO1 • Persistence 持久化 • 將物件儲存到不會因為斷電而消失之處

  9. JDO(Java Data Object) Model

  10. Contact

  11. Contact String Identity

  12. ContactInteger Identity

  13. 建構子 Source/Generate Constructor using Fields

  14. 識別鍵值-Key • Key 鍵值型態(com.google.appengine.api.datastore.Key) • 物件互相參照時,使用 Key 型態識別鍵值。 • 一個會員擁有一個聯絡資料 • 聯絡資料 ContactInfo • 會員 Member

  15. 物件的儲存 • PersistenceManager • 讀取資料 • 儲存資料 • 降低系統的負荷與時間成本 • PMF(Persistence Manager Factory) • 建立 PersistenceManager • 測試類別 ContactCRUD • 新增、讀取、修改、刪除

  16. 補充:Factory Design Pattern 讓次類別決定要實體化的類別為何

  17. Persistence Manager Factory

  18. 利用鍵值取得資料庫中的物件 • 當資料使用 long 為辨識鍵值,在呼叫PersistenceManager的makePersistent方法時,Datastore會為資料產生鍵值並儲存。 • 使用 getObjectById方法,以鍵值取得儲存在資料庫中的物件。

  19. ContactCRUD

  20. 資料查詢 Query • 使用查詢「Query」可從資料庫中取得符合查詢條件的物件實體,可能沒有符合條件的資料,也可能是一個實體或是多個實體的集合。 • 傳回實體的鍵值(key) • 傳回完整的實體 • JDO的查詢語言-JDOQL • JDOQL是JDO的資料庫查詢語言標準 • 開發人員可以使用字串下達查詢條件,或是使用Java的方法設定查詢條件、排序與參數。 • javax.jdo.Query • Query 類別是 JDO 中專門用來查詢的類別 • 可由 PersistenceManager的 newQuery方法產生

  21. 字串方式查詢 • 查詢 Datastore中所有 Contact 實體

  22. 字串方式查詢 • 查詢 Datastore 中所有 Contact 實體鍵值

  23. 字串方式查詢(續) • 查詢 Datastore中所有符合name==‘Tom’ 的 Contact 實體

  24. 篩選器的運算元 • 篩選器的運算元可以是以下任一種: • < 小於。 • <= 小於或等於。 • == 等於。 • > 大於。 • >= 大於或等於。 • != 不等於。

  25. 字串方式查詢 • 查詢符合name值條件,並給予一個字串作為參數

  26. 字串方式查詢 • 查詢結果排序

  27. 使用JDO的方法(methods)查詢 查詢字串在不適合複雜的查詢,且程式碼不利維護。 Query類別提供了許多設定篩選器、排序與參數等方法實作出相同的效果

  28. 使用JDO的方法查詢 • 查詢 Datastore 中所有 Contact 實體。

  29. 使用JDO的方法查詢 • 查詢 Datastore 中所有 Contact 實體鍵值。

  30. 使用JDO的方法查詢 • 查詢Datastore中所有符合name==‘Tom’的Contact實體

  31. 使用JDO的方法查詢 • 查詢符合name值條件,並給予一個字串作為參數

  32. 使用JDO的方法查詢 • 在篩選器中亦可使用其他類別為外來參數

  33. 使用JDO的方法查詢 • 另法

  34. 使用JDO的方法查詢 • 查詢結果的排序 • 使用方法setOrdering可指定查詢結果的排序方式,ascending 為昇冪,descending 為降冪

  35. 更新實體資料 • 當利用PersistenceManager由Datastore中取得物件時,物件是「附接(attached)」在PersistenceManager身上 • 當物件的內容被修改或改變,當呼叫PersistenceManager的close方法關閉時,物件內容的修改將在關閉時,更新至Datastore。

  36. 更新實體資料

  37. 更新實體資料 @PersistenceCapable(detachable="true") public class Contact{ … } • 若是不想在物件資料變動時一併更新至Datastore,則可在類別的可持久化標示語法中加入「detachable="true"」,代表該實體為可「卸離」

  38. 刪除實體資料 • 欲刪除一個Datastore內的物件,可呼叫PersistenceManager的「deletePersistent(物件)」方法

  39. 刪除實體資料

  40. 以JSP與Servlet實作會員註冊 • 以一個測試專案「store」為例,在專案中實作一個會員註冊功能 • 提供使用者輸入會員資料的頁面,將資料傳送至後端,再儲存至Datastore

  41. JSP 與 JavaBean • JavaBean 是一個單純的類別,並遵循幾個特定被規範的要件: • 是一個公開(publie)類別。 • 具有公開的getter與setter方法(存取屬性) • 具有空參數的建構子。 • 對於網頁設計師很難在混雜有HTML標籤的程式碼中進行修改與維護。 • JavaBean-Member類別 • 為Member類別加入一個無參數的建構子 • 實作 java.io.Serializable • 設計getter與setter方法 • 程式碼區按下滑鼠右鍵,選擇「Source/ Generate setters and getters」

  42. JSP 與 JavaBean • 使用<jsp:useBean>標籤 • 在JSP中若想要使用Member這個JavaBean,可使用JSP標籤宣告之: • <jsp:useBean id="member" class="com.store.Member" /> • 以EL標準得到member物件的屬性時,系統會自動呼叫該屬性的getter方法 • ${member.email}等於呼叫member.getEmail()方法 • 在JSP中使用Session與EL標籤必須先做必要的設定

  43. 在JSP中展示所有會員資料 <c:foreachvar="物件或變數名稱" items="集合" > … </c:foreach> • 使用JSTL標籤的foreach,將可提高JSP程式碼的可讀性,也提高網頁設計師修改JSP的效率。 • See query.jsp

  44. 物件之間的關係 • 一對一(one to one)關係 • 一個會員擁有一個聯絡資料 • 一對多(one to Many)的關係 • 留言版會員(Member)與該會員所發表的文章(Post),一個會員可能擁有許多文章

  45. GAE規範中支援的集合類別 java.util.ArrayList java.util.HashSet java.util.LinkedHashSet java.util.LinkedList java.util.List java.util.Set java.util.SortedSet java.util.Stack java.util.TreeSet java.util.Vector

  46. Datastore 管理介面 http://127.0.0.1:8888/_ah/admin

More Related