1. Trang chủ
  2. » Luận Văn - Báo Cáo

Điện toán đám mây với Google App Engine

66 470 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 2,74 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ki n trúc Google App Engine .... T ng quan Google App Engine .... Google Accounts ..... Google Accounts App Engine có kh n ng tích h p các tài kho n Google vào ng d ng, các Google Docs

Trang 1

TR NG I H C M TP.H CHÍ MINH

KHOA CÔNG NGH THÔNG TIN

xyxy

I N TOÁN ÁM MÂY V I GOOGLE APP ENGINE

BÁO CÁO KHÓA LU N T T NGHI P

Trang 2

L I CÁM N

th y Em xin chân thành c m n các th y đã b th i gian quý báu c a mình đ giúp em hoàn thành t t khóa lu n này

Trang 3

NH N XÉT C A GIÁO VIÊN H NG D N

NH N XÉT C A GIÁO VIÊN H NG D N ………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 4

M C L C

Ch ng 1 T NG QUAN 1

1.1 Gi i thi u 1

1.2 M c đích làm đ tài 1

1.3 Ph ng pháp nghiên c u 2

1.4 Ph m vi 2

1.5 B c c báo cáo 2

Ch ng 2 C S LÝ THUY T 4

2.1 T ng Quan i n Toán ám Mây 4

2.1.1 Gi i pháp c a đi n toán đám mây 5

2.1.2 C u trúc các ph n t o nên đám mây 6

2.1.2.1 Các d ch v ng d ng (SaaS) 6

2.1.2.2 Các d ch v n n t ng (PaaS) 6

2.1.2.3 Các d ch v c s h t ng (IaaS) 6

2.1.3 i n toán đám mây v i Google App Engine 7

2.2 Ki n trúc Google App Engine 7

2.2.1 T ng quan Google App Engine 7

2.2.2 Môi tr ng phát tri n 8

2.2.3 Các lo i t p tin t nh trên server 9

2.2.4 DataStore 9

2.2.5 Các lo i D ch V 10

2.2.6 Google Accounts 10

2.2.7 Các h n ch c a Google App Engine 10

2.3 Các thành ph n c a Google App Engine trong Java 11

2.3.1 BackEnds 11

2.3.2 Datastore 11

2.3.2.1 Th c Th , Thu c Tính và khóa 12

2.3.2.2 Transactions 15

Trang 5

2.3.2.3 Java Data Object (JDO) 17

2.3.2.4. Java Persistence API (JPA) 20

2.3.3 Các d ch v c a GAE 23

2.3.3.1 BlobStore Java API 23

2.3.3.2 Capabilities 24

2.3.3.3 Channel API 25

2.3.3.4 Image API 26

2.3.3.5 Mail API 26

2.3.3.6 Memcache Service 27

2.3.3.7 OAuth 27

2.3.3.8 Task Queues 29

2.3.3.9 URL Fetch 29

2.3.3.10 Users Service 29

2.3.3.11 XMPP 30

2.3.3.12 YAML 30

Ch ng 3 HI N TH C NG D NG 33

3.1 S l c ng d ng 33

3.1.1 Mô hình ho t đ ng 33

3.1.2 S l c các ch c n ng 33

3.2 Xây d ng ng d ng Frontend và Backend 33

3.2.1 ng b hóa d li u tài kho n google 33

3.2.2 S d ng App Engine Datastores 34

3.2.2.1 Tùy ch nh l u tr d li u 34

3.2.2.2 Xác đ nh m i k t h p và b ng s 34

3.2.2.3 Mô hình th c th m i k t h p 39

3.2.2.4 Mô hình v t lý d li u 40

3.2.3 S đ trang web (Site map) 40

3.2.4 Apache Struts Framework 41

Trang 6

3.2.5 Thanh toán tr c tuy n (Online Payment) 42

3.2.5.1 T ng quan v tính n ng thanh toán 42

3.2.5.2 C ng thanh toán Nganluong.vn 43

3.2.6 Các yêu c u v tính toán 44

3.2.7 D ch v Mail 46

3.3 Xây d ng ng d ng xem đi m trên Mobile 46

3.3.1 Mô hình ho t đ ng 47

3.3.2 Cách th c x lý 47

Ch ng 4 K T QU T C 49

4.1 Các d ch v ti n ích dành cho giáo viên, ph huynh và h c sinh 49

4.2 Ti n ích dành cho ng i qu n tr 53

4.3 ng d ng trên Mobile 55

Ch ng 5 K T LU N 56

5.1 L i ích c a đi n toán đám mây v i GAE 56

5.2 H n ch 56

TÀI LI U THAM KH O 57

Trang 7

DANH M C CÁC THU T NG TI NG ANH VÀ CH VI T

T T

OPENID: Th vi n giúp đ ng nh p vào m t website

GAE: Google App Engine

HDR: High Replication Datastore

API: M t t p các th vi n

SDK: B công c dành cho phát tri n ph n m m

JDO: Java Data Object

JPA: Java Persistence API

JPQL: M t lo i ngôn ng dùng đ truy v n d li u trong JPA

YAML: M t ngôn ng giúp c u hình ng d ng Java

XMPP: M t giao th c c a Google App Engine trong ng d ng Chat G talk

DDos: m t lo i t n công t ch i d ch v

GFS: Google File System, h th ng file c a Google

Trang 8

DANH M C CÁC HÌNH

Hình 2.1 Mô hình các c m máy ch trên đám mây 4

Hình 2.2 Các gi i pháp v cung c p các d ch v tài nguyên 5

Hình 2.3 Các ph n t o nên đám mây 6

Hình 2.4 Ki n trúc Google App Engine cho Java 8

Hình 2.5 So sánh gi a hai lo i l u tr d li u 12

Hình 2.6 Các ki u d li u đ c h tr b i GAE 15

Hình 2.7 Mô hình c p nh t c a d li u c a Transaction 16

Hình 2.8 Mô hình JDO 17

Hình 2.9 C u hình JDO trong Google App Engine 18

Hình 2.10 Mô Hình JPA 21

Hình 2.11 Mô Hình JPA trong Google App Engine 22

Hình 2.12 T o đ i t ng EntityManager 22

Hình 2.13 Cách th c l u d li u c a BlobStore trong Datastore 23

Hình 2.14 Cách s d ng Capabilities 24

Hình 2.15 Các lo i Capabilities GAE h tr 25

Hình 2.16 Trao đ i d li u gi a client và server s d ng Channel API 26

Hình 2.17 C u hình Channel trong Google App Engine 26

Hình 2.18 C u hình Mail trong Google App Engine 27

Hình 2.18 Ch ng th c s d ng OAuth 28

Hình 2.20 Ch n ph ng th c ch ng th c trong GAE 30

Hình 3.1 Quy trình đ ng b hóa website v i google Accouts 34

Hình 3.2 M i k t h p x p l p h c sinh 35

Hình 3.3 M i k t h p x p l p giáo viên 35

Hình 3.4 M i k t h p x p lo i h c sinh 36

Trang 9

Hình 3.5 M i k t h p ki m tra 37

Hình 3.6 M i k t h p giáo viên ch nhi m và phân ban l p h c 38

Hình 3.7 Mô hình th c th m i k t h p 39

Hình 3.8 Mô hình v t lý d li u 40

Hình 3.9 S đ c a website 40

Hình 3.10 Quy trình ho t đ ng c a Struts Framework 41

Hình 3.11 Ch ng th c tài kho n trong thanh toán 42

Hình 3.12 Chuy n kho n trong thanh toán 43

Hình 3.13 Thanh toán ki u tích h p đ n gi n 44

Hình 3.14 Mô hình ho t đ ng ng d ng mobile 47

Hình 3.15 L u đ x lý yêu c u c a ng d ng Mobile 48

Hình 4.1 Thông tin c a h c sinh 49

Hình 4.2 Thông tin c a giáo viên 50

Hình 4.3 Thông tin v đi m s 51

Hình 4.4 Thông tin v h c phí 51

Hình 4.5 Chuy n kho n qua nganluong.vn 52

Hình 4.6 G i thông tin cho h c sinh 53

Hình 4.7 Các ti n ích dành cho ng i qu n tr 54

Hình 4.8 màn hình ng i dùng nh p vào mã s sinh viên 55

Hình 4.9 ng i dùng sau khi tra c u đi m thành công 55

Trang 10

Ch ng 1 T NG QUAN

1.1 Gi i thi u

Thu t ng "cloud computing" ra đ i gi a n m 2007 không ph i đ nói v m t

đang di n ra t m y n m qua khái ni m này có th đ c di n gi i m t cách đ n gi n:

(đám mây) trên Internet thay vì trong máy tính gia đình và v n phòng (trên m t đ t) đ

m i b i nhi u doanh nghi p hi n không có máy ch riêng, PC ch cài m t s ph n

hosting cho website công ty, thuê công c qu n lý doanh thu t Salesforce.com, l y d

tìm ki m, phân tích, chia s và l u tr tài li u

V i các d ch v s n có trên Internet, doanh nghi p không ph i mua và duy trì hàng tr m, th m chí hàng nghìn máy tính c ng nh ph n m m H ch c n t p trung

s n xu t b i đã có ng i khác lo c s h t ng và công ngh thay h

Google n m trong s nh ng hãng ng h đi n toán máy ch o tích c c nh t b i

ho t đ ng kinh doanh c a h d a trên vi c phân ph i các cloud (virtual server), và các web services s d ng các d ch v hosting c a Google, đ c g i là Google App Engine (GAE)

GAE là m t n n t ng hosting bao g m web server, c s d li u BigTable và kho

l u tr file GFS GAE cho phép vi t ng d ng web d a trên c s h t ng c a Google Ngh a là chúng ta không c n quan tâm là trang web c a chúng ta đ c l u tr

nh th nào (k c database đi kèm), mà ch c n quan tâm đ n vi c phát tri n ng

d ng theo các API do Google cung c p

Vì th khi s d ng GAE chúng ta nh m đ n các l i ích mà nó mang l i nh gi m

tâm t i gi i h n ph n c ng c ng nh v trí đ a lý D li u trong mô hình đi n toán đám mây đ c l u tr 1 cách phân tán t i nhi u c m máy ch t i nhi u v trí khác

th m h a x y ra Vi c t p trung d li u t nhi u ngu n khác nhau s giúp các chuyên

r i ro b n c p toàn b d li u Và các l p trình viên c ng d dàng h n trong vi c cài

đ t, nâng c p ng d ng c a mình D a vào nh ng tiêu chí này, chúng ta có th t o ra

m t ng d ng có th phát tri n thành ng d ng l n và nó không là m t ý ngh xa v i

d a trên nh ng l i ích mà nó mang l i

1.2 M c đích làm đ tài

Trang 11

D a trên công ngh GAE mà cung c p, phát tri n m t ng d ng qu n lý h c sinh

đ minh h a v nh ng l i ích mà Google App Engine mang l i

1.3 Ph ng pháp nghiên c u

• Áp d ng công ngh Servlet & JSP

• S d ng FrameWork Apache Struts, Apache Struts là m t web Application

mô hình MVC

• S d ng c s d li u App Engine Datastore, s d ng m t chu n gi ng l nh

ứ Giáo viên ch nhi m l p.v.v

• Thanh toán tr c tuy n (Online payment)

ứ Cho phép ph huynh đóng ti n tr c tuy n

• Phiên b n mobile

ứ ng d ng có th xem đi m ngay tr c ti p trên mobile, ch c n Mobile có k t

n i GPRS ho c WIFI

• Java Mail Service

ứ Kh n ng g i mail t đ ng C p nh t các thông báo c a nhà tr ng đ n ph huynh

1.5 B c c báo cáo

• Ch ng 1: T ng quan

ứ ch ng này s nói v m c đích nghiên c u c a đ tài, ph ng pháp th c

hi n c ng nh tính hi u qu c a đ tài

Trang 12

• Ch ng 2: C s lý thuy t

ứ Các d ch v mà Google App Engine cung c p

ứ Giao ti p v i c s d li u Datastore

ứ Chi ti t v Framework Struts

ứ Chi ti t v giao d ch tr c tuy n (Online Payment)

Trang 13

Ch ng 2 C S LÝ THUY T

2.1 T ng Quan i n Toán ám Mây

T “ ám mây” trong i n toán đám mây th c ch t ch là 1 phép n d đ mô t Internet Theo đ nh ngh a thì đi n toán đám mây là bi n pháp s d ng d a trên k t n i

li u N u nh chúng ta s d ng nh ng ng d ng web t các hãng l n nh Google ho c Microsoft thì chính chúng ta đang s d ng Cloud Computing Các ng d ng web nh Gmail, Google Calendar, Hotmail, SaleForce, Dropbox và Google Docs đ u d a trên

trên Internet

Hình 2.1 Mô hình các c m máy ch trên đám mây

ch y, nâng c p và đ m b o N u các doanh nghi p áp d ng i n toán đám mây, h s

v n s d ng đ c các ng d ng y h t nh ng chúng l i đ c đ t các c m máy ch trên Internet Các doanh nghi p ch vi c k t n i qua m ng Internet mà không ph i m t chút công s c nào đ b o trì, b o d ng, nâng c p, ch y máy ch Không nh ng th , các doanh nghi p còn có th cho khách hàng c a h s d ng ng d ng mà không ph i

m t công cài đ t

Trang 14

2.1.1 Gi i pháp c a đi n toán đám mây

Hình 2.2 Các gi i pháp v cung c p các d ch v tài nguyên

công ty l n nh Microsoft, Google có hàng ch c trung tâm d li u n m r i rác kh p n i trên th gi i Các công ty l n này s cung c p các d ch v cho phép doanh nghi p có th l u tr và qu n lý d li u c a h trên các trung tâm l u tr

̇ V n đ v s c m nh tính toán

Có 2 gi i pháp chính:

• S d ng các h th ng tính toán song song, phân tán

Cung c p các d ch v nh IaaS (infrastructure as a service), PaaS (platform as a service), SaaS (Storeage as a service)

Trang 15

2.1.2 C u trúc các ph n t o nên đám mây

Hình 2.3 Các ph n t o nên đám mây 2.1.2.1 Các d ch v ng d ng (SaaS)

T ng d ch v ng d ng này l u tr các ng d ng phù h p v i mô hình SaaS ây là nh ng ng d ng ch y trong m t đám mây và đ c cung c p theo yêu c u ôi khi các d ch v này đ c cung c p mi n phí và các nhà cung c p

d ch v t o ra doanh thu t nh ng th khác nh các qu ng cáo Web và nhi u khi các nhà cung c p ng d ng t o ra doanh thu tr c ti p t vi c s d ng d ch

đ c nh c các cu c h n khi s d ng Google Calendar, thì b n đã quen thu c

v i t ng trên cùng c a đám mây ây ch là m t vài ví d v các ki u ng d ng này

Các ng d ng đ c cung c p qua mô hình SaaS làm l i cho ng i tiêu dùng b ng cách gi i phóng cho h kh i vi c cài đ t và b o trì ph n m m và các

ng d ng có th đ c s d ng thông qua các mô hình c p phép có h tr tr

ti n đ s d ng

2.1.2.2 Các d ch v n n t ng (PaaS)

m t t p h p các d ch v Các d ch v đây đ c dành đ h tr cho các ng

d ng Các ng d ng này có th đang ch y trong đám mây và chúng có th đang

n ng m r ng c n thi t trong m t đám mây, các d ch v khác nhau đ c đ a ra đây th ng đ c o hóa Các ví d trong ph n này c a đám mây bao g m Amazon Web Services, Boomi, và Google App Engine Các d ch v n n t ng

đáp ng các nhu c u c a ng i dùng b ng cách cung c p c s h t ng ng

d ng d a theo yêu c u

2.1.2.3 Các d ch v c s h t ng (IaaS)

Trang 16

đây, chúng ta th y m t t p h p các tài s n v t lí nh các máy ch , các

nguyên theo yêu c u Ví d v các d ch v c s h t ng bao g m IBM Bluehouse, VMware, Amazon EC2, Microsoft Azure Platform, Sun ParaScale Cloud Storage

2.1.3 i n toán đám mây v i Google App Engine

server) Google cung c p các d ch v hai t ng, t ng ng cao nh t c a đám mây

là SaaS, Google cho phép s d ng các d ch v c a h nh Gmail, Google Doc và

t ng Paas h cung c p các t p API dành cho các doanh nhi p, cá nhân, hay t ch c

đ h tr cho các ng d ng web Application s d ng các d ch v hosting c a Google, đ c g i là Google App Engine (GAE)

2.2 Ki n trúc Google App Engine

2.2.1 T ng quan Google App Engine

Nhi u doanh nghi p s d ng r t nhi u ph n c ng đ ch y các ng d ng nh các c s d li u, các máy ch ng d ng, các h th ng qu n lý thay đ i và các công c l n v t tìm l i Tuy v y, ngày nay, các ph n c ng này này có th d dàng

v t b đ thay b ng vi c s d ng chính gói ph n m m y d i d ng m t d ch v đang ch y trên m t c s h t ng c a ng i, hay t ch c nào đó khác

n a, các công ty này có kh n ng qu n lý m r ng, sao l u và b o m t Amazon và

nhi u đ i m i xung quanh các khía c nh c a vi c ch y các n n t ng ph n m m sao cho hi u qu

App Engine c a Google là m t n n t ng th c s đ xây d ng và tri n khai

ng d ng Web Java, Python và Go trên c s h t ng m r ng c a Google Nó không yêu c u l phí c p phép s d ng (tr ra m t s th vi n ph n m m mà

Engine là hoàn toàn mi n phí cho đ n khi đ t đ n ng ng v m c s d ng, dung

đ t t i đi m mà Google b t đ u g i hóa đ n tính phí, thì ng d ng Web c a chúng

ta rõ ràng đã t o ra l u l ng đáng k , có nhi u ng i xem và có lãi

Trang 17

Hình 2.4 Ki n trúc Google App Engine cho Java 2.2.2 Môi tr ng phát tri n

M t là Java Runtime Environment, Python Runtime Environment và Go Runtime

công ngh mà chúng ta s d ng đ phát tri n ng d ng

d ng có th phát tri n b ng ngôn ng Java, hay h u h t các ngôn ng khác mà có

th ch y trên JVM nh PHP(s d ng Quercus), Ruby (s d ng JRuby), JavaScript,

các công ngh web chu n hi n nay nh servlet và Java Persistence API

Python 2.5 đ c c i ti n t phiên b n CPython Môi tr ng Python trên Google App Engine cho phép các ng d ng Python s d ng CGI, m t th vi n chu n h

nh là Django, Web2py, Pylons và App Engine còn ch a nhi u th vi n c a riêng

Trang 18

Môi Tr ng Go h tr cho các ng d ng đ c vi t b ng ngôn ng Go phiên

App Engine Trong gói SDK c a GAE đã ch a trình biên d ch c a Go và m t th

vi n chu n

gi ng nhau trong vi c truy c p d li u: m t ng d ng đ c đ nh tuy n t i máy ch

c a Google, sau đó máy ch s xem yêu c u và chu n b d li u, n u có d li u

trình thông d ch riêng

T t c các ng d ng c a server c n m t trình thông d ch riêng (JVM hay

2.2.3 Các lo i t p tin t nh trên server

M t website có r t nhi u tài nguyên.H u h t các website có resource đ c

c p phát cho trình duy t mà không có s thay đ i trong quá trình ho t đ ng th ng xuyên c a nó Hình nh và CSS đ c mô t nh là s xu t hi n c a các trang web, mã JavaScript giúp ch y các tác v trên trình duy t, và các trang HTML không có các thành ph n d li u đ ng là các ví d c a nh ng tài nguyên này, đ c

g i chung là các t p tin t nh S c p phát tài nguyên này cho browser không liên quan t i mã code c a ng d ng, không c n thi t và không hi u qu đ đáp ng t các máy ch Thay vào đó, App Engine cung c p m t thành ph n chuyên bi t c a máy ch chuyên d ng đ cung c p t nh các t p tin này Các server này đ c t i u

tài nguyên t nh

c nh trong các t p tin c u hình bao g m: các URL t nh c a t p tin, các lo i n i

đ d ng hình c a trang khi trang đ c load M c đ nh trong GAE thì các file hình

nh và CSS trong th m c resouse c a ng d ng đ u là các t p tin Static

2.2.4 DataStore

H u h t các ng d ng web h u ích c n ph i l u tr thông tin trong vi c x

d li u Tuy nhiên, khó kh n đ c đ t ra khi có nhi u k t n i đ ng th i đ yêu c u

ph n c ng đ có th đáp ng đ c nhi u yêu c u cùng lúc

Hi n nay, các h th ng l u tr d li u ph bi n nh t cho các ng d ng web

Trang 19

d li u bao g m các kho d li u phân c p (XML) và c s d li u h ng đ i

lo i t t nh t phù h p cho m t ng d ng ph thu c vào b n ch t d li u c a ng

d ng Và m i lo i c s d li u có nh ng k thu t c a riêng mình đ phát tri n qua các h th ng các máy ch

H th ng c s d li u c a Google App Engine g n gi ng nh t v i m t c

đi u này có th s yêu c u thay đ i cách suy ngh v d li u c a ng d ng

2.2.5 Các lo i D ch V

M i quan h gi a datastore và th i gian th c thi đó là m t lo i d ch v : d ch

v này cung c p các t p API đ truy xu t vào h th ng c s d li u Google App Engine bao g m m t s d ch v h u ích cho các ng d ng web D ch v b nh Cache là m t d ch v giúp kh n ng truy xu t nhanh vì chính l i th c a nó là

đi m c a nó là khi server có s c v m t đi n hay t t máy thì các giá tr ghi t m

th i trong memcache b xóa hoàn toàn Nh tên g i c a nó, d ch v memcache s

d ng nh là m t b nh cache đ l u các k t qu c a các truy v n th ng xuyên

ho c th c hi n các phép tính toán

ng d ng c a App Engine có th truy xu t đ n các tài nguyên c a các trang web khác s d ng d ch v URL Fetch D ch v này t o ra k t n i HTTP t i server khác trên internet đ nh n v tài nguyên

ng d ng App Engine có th g i mail s d ng d ch v Mail Tin nh n có

th g i đ n các user khác trong Domain ho c ngoài Domain và có th nh n mail t các user khác N u ng d ng đ c c u hình đ nh n mail thì tin nh n s đ c g i

đ n đ a ch c a ng d ng, sau đó ng d ng s đ nh tuy n t i Mail service và hi n

th trên webform n u có yêu c u

Ngoài g i nh n Mail App Engine còn cho phép ng d ng có th nh n tin

nh n chat c a Google Talk s d ng giao th c XMPP b ng d ch v XMPP service

X lý nh c ng là m t ph n trong d ch v c a App Engine bao g m các

d ch v xoay nh, c t nh, hi n th nh…

2.2.6 Google Accounts

App Engine có kh n ng tích h p các tài kho n Google vào ng d ng, các

Google Docs và Google Calendar S b o m t h n n u chúng ta có th s d ng tài kho n Google đ ch ng th c thay vì s d ng m t h th ng đ ng nh p riêng T t nhiên, Chúng ta có th s d ng h th ng riêng c a chúng ta ho c là m t nhà cung

c p khác mà GAE có h tr nh là OpenID

2.2.7 Các h n ch c a Google App Engine

Trang 20

App Engine cung c p ph ng th c k t n i an toàn(HTTPS) cho tên mi n

th c k t n i này cho tên mi n khác Google account đ ng nh p luôn luôn s d ng

ng d ng s d ng d ch v URL Fetch đ t o k t n i HTTPS và g i yêu c u

đ n m t website khác, nh ng App Engine không ki m tra đ c certificate (gi y

ch ng nh n) s d ng trên máy ch t xa

2.3 Các thành ph n c a Google App Engine trong Java

2.3.1 BackEnds

Backends đ c mô t nh là m t ph n ph tr c a GAE, là m t ng d ng

đ c bi t không có gi i h n th i gian yêu c u, có b nh cao h n và t ng b ng thông CPU BackEnds đ c thi t k cho các ng d ng c n hi u su t nhanh h n,

c n b nh nhi u h n, và các quá trình yêu c u là liên t c Nh ng ph n ph tr này s tính phí theo th i gian ho t đ ng

đ CPU gi m đi đáng k

tâm d li u b ng cách s d ng m t h th ng d a trên thu t toán Paxos Tùy

Trang 21

toàn b h th ng N u có m t khóa, các th c th có th tìm ra m t cách nhanh chóng Khóa đ c l u tr nh là m t thu c tính trong th c th M t ph n c a khóa là ID c a ng d ng, đ đ m b o r ng các ng d ng khác không th truy

c p vào ng d ng c a chúng ta, và ng d ng c a chúng ta không th truy c p vào ng d ng khác Sau khi th c th đ c t o ra thì khóa không th thay đ i

Ta có th hình dung đ i v i CSDL quan h thì 1 entity đ c ví nh là 1 dòng record trong m t b ng, tuy nhiên có m t s khác bi t đôi chút Kho d

th kho d li u c a App Engine đã c g ng xây d ng h t t t c nh ng đ c đi m

Trang 22

v n có c a CSDL quan h đ đem l i cho ng i phát tri n s quen thu c Chúng ta v n có nh ng câu query, transaction, khóa … nh chúng ta t ng làm

vi c v i CSDL quan h

u tiên là entity, m i entity s có 1 khóa đ phân bi t mình v i t t c các entity khác trong datastore Trong datastore không h có b ng nh trong

là 1 cái b ng r t l n, đó là lý do mà nó có tên là BigTable Vì th khóa dùng đ phân bi t entity này v i t t c các entity khác trong cái b ng to l n y Khóa có

2 d ng, chúng ta có th t đ t tên cho khóa đ có th s d ng sau này, ho c n u

entity Vì th , 1 entity ho c là có tên khóa, ho c là có s id c a khóa Vi c gán tên cho khóa ch x y ra khi entity đ c kh i t o và giá tr đó không th thay đ i

đ c khi entity đã đ c t o ra r i

M i entity có 2 lo i thu c tính: thu c tính t nh (fixed property) và thu c tính đ ng (dynamic property) V i thu c tính t nh, ta có th hình dung nó nh

là các c t trong CSDL quan h , có giá tr và cùng ki u d li u Tuy nhiên đ i

v i thu c tính đ ng, s l ng thu c tính này thay đ i tùy vào m c đích c a

các ki u d li u trên datastore đã đ c đánh ch m c m t cách t đ ng Tuy nhiên chúng ta ph i khai báo ch m c cho nh ng thu c tính c n s d ng trong câu query vì đ y là yêu c u b t bu c c a datastore

Trong datastore, đ có th l y đ c các entity ch a d li u, ta có 2 cách

Th nh t là bi t khóa c a nó và l y d a vào khóa Th 2, ph bi n h n, là s

d ng câu truy v n (query) Trong datastore, các thu c tính đ c s d ng trong câu query b t bu c ph i đ c khai báo ch m c N u không câu query s không

xu t d li u chu n là: Java Data Objects(JDO) và Java Persistence API (JPA)

V i vi c s d ng 1 trong 2 giao di n trên, chúng ta có th t o ra đ c th c th

v i thu c tính c đ nh t o ra th c th lo i A, ta c n đ nh ngh a m t class A

và khai báo các thu c tính kèm theo ki u d li u mà ta mu n th c th c a ta có

Engine nh n bi t chúng

Chúng ta giao ti p v i Datastore b ng cách s d ng các hàm get(), put(),delete() đ l y, t o m i và xóa m t th c th trong Datastore Các hàm này

Trang 23

DatastoreService datastore=

DatastoreServiceFactory.getDatastoreService();

th c th mà GAE h tr

Value type Java type Sort order Notes

Byte string,

short

com.google.appengine.api.da tastore.ShortBlob byte order

Up to 500 bytes A value longer than

500 bytes throws a JDOFatalUserException

Byte string,

long

com.google.appengine.api.da tastore.Blob n/a up to 1 megabyte;

not indexed

email address com.google.appengine.api.datastore.Email Unicode

floating point

number

float, java.lang.Float, double, java.lang.Double numeric 64-bit double

precision, IEEE 754geographical

point

com.google.appengine.api.da tastore.GeoPt

by latitude, then longitude

Google

Accounts user

com.google.appengine.api.us ers.User

email address in Unicode order

integer

short, java.lang.Short, int, java.lang.Integer, long, java.lang.Long

numeric

Stored as long integer, then converted to the field type Out-of-range values overflow

Trang 24

key, blobstore com.google.appengine.api.blobstore.BlobKey byte order

key, datastore

com.google.appengine.api.da tastore.Key, or the

referenced object (as a child)

by path elements (kind,

ID or name, kind, ID or name )link com.google.appengine.api.datastore.Link Unicode

messaging

handle

com.google.appengine.api.da tastore.IMHandle Unicode

postal address com.google.appengine.api.datastore.PostalAddress Unicode

telephone

number

com.google.appengine.api.da tastore.PhoneNumber Unicode

Text string,

Up to 500 Unicode characters A value longer than 500 characters throws a JDOFatalUserException.

Text string,

long

com.google.appengine.api.da tastore.Text n/a up to 1 megabyte;

not indexed

Hình 2.6 Các ki u d li u đ c h tr b i GAE 2.3.2.2 Transactions

li u đ ng th i H u h t các h qu n tr c s d li u đ u đ m b o tính toàn v n

d li u khi th c hi n nhi u m t t p h p các ho t đ ng, m t t p các ho t đ ng

đó đ c đ c th c hi n liên t c đ c g i là m t transaction M t h th ng h

Trang 25

tr Transaction đ m b o r ng n u m t giao d ch thành công, t t c các ho t

đ ng trong giao d ch đ u đ c hoàn thành N u có b t kì m t l i nào phát sinh

t m t ho t đ ng bên trong vì b t c lý do gì thì d li u s tr v tr ng thái lúc

ban đ u, lúc ch a th c hi n Transaction

M t ho t đ ng có th th t b i có th là do s l ng ng i truy c p cùng

ph i đ ng kí v i nhà cung c p d ch v và b t đ u tính phí Tùy tr ng h p th t

b i mà phát sinh các exception khác nhau nh DatastoreTimeoutException,

ConcurrentModificationException, or DatastoreFailureException

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService() Transaction txn = datastore.beginTransaction();

try { // Các liên k t v i các ho t đ ng con txn.commit();

} finally {

if (txn.isActive()) { txn.rollback();

} }

Transactions là m t tính n ng tùy ch n c a Datastore nên không c n s

d ng yêu c u ph i s d ng Transaction trong các ho t đ ng l y d li u đ đ m

b o tính toàn v n d li u

Hình 2.7 Mô hình c p nh t c a d li u c a Transaction

Khi ng d ng s d ng Transaction cho m t nhóm các th c th ,

Trang 26

đ i và đ c đánh d u là “uncommited” Khi ng d ng k t thúc các Transaction

không thay đ i k t khi Transaction b t đ u, thì các thay đ i c a giao d ch

đ c đánh d u là “commited”, có ngh a là các giao d ch đã thành công Và

đ u Transaction thì datastore s h y các giao d ch hi n t i và thông báo th t

b i Khi các d li u trong Journal đ c đánh d u toàn b là Commited ( i m C).Thì datastore b t đ u áp d ng t t c các thay đ i cho các th c th theo th

t trong hàng đ i

2.3.2.3 Java Data Object (JDO)

JDO là m t giao di n chu n giúp cho vi c l u tr các đ i t ng có ch a

d li u vào trong m t c s d li u Gói giao di n này cho phép s d ng các truy v n đ l y v các đ i t ng trong database, đ c, ghi d li u, và t ng tác

v i m t c s d li u b ng cách s d ng các Transaction M t ng d ng s

d ng gói JDO có th làm vi c v i m t lo i database khác mà không c n m t

lo i liên k t đ c bi t nào, bao g m c c s d li u quan h , c s d li u phân

Trang 27

• Khi biên d ch project ph i có m t b c biên d ch “đ c bi t” đ các l p

d li u đ c biên d ch và k t h p chúng v i JDO

chúng ta đ u đ c Eclipse làm h Ti p sau s đi vào chi ti t nh ng c u hình trong file jdoconfig.xml:

Hình 2.9 C u hình JDO trong Google App Engine

̇ nh ngh a d li u v i JDO

M i đ i t ng đ c l u tr b ng JDO là m t th c th trong Datastore

chính M t thu c tính trong class có th có m t ho c nhi u giá tr , JDO h tr

Trang 28

• java.util.TreeSet< >

• java.util.Vector< >

N u ki u d li u đ c khai báo là List thì thu c tính đó s tr v ki u ArrayList, n u ki u là Set thì datastore s tr v HashSet, n u thu c tính đ c khai báo là SortedSet thì ki u datastore tr v là TreeSet

̇ T o m i, L y v và xóa d li u trong JDO

makePersistent() c a PersistenceManager đ t o m i d li u trong Datastore

makePersistentAll( ) v i m t t p Collection các objects

đ i t ng thông qua khóa chính M t trong nh ng cách đ c p nh t d li u đó

xóa đ i t ng ra kh i datastore, g i hàm deletePersistent() c a PersistenceManager Mu n xóa t t c các đ i t ng thu c class đó g i deletePersistentAll( )

̇ Java Data Object Query Language (JDOQL)

m i query:

Query query = pm.newQuery(JDOQL string);

Trang 29

C u trúc ng pháp c a JDOQL:

SELECT [UNIQUE] [<result>] [INTO <result-class>]

[FROM <candidate-class> [EXCLUDE SUBCLASSES]]

[WHERE <filter>]

[VARIABLES <variable declarations>]

[PARAMETERS <parameter declarations>]

m t kho ng là setOrdering() và setRange()

2.3.2.4 Java Persistence API (JPA)

Java Persistance API (JPA) là m t giao di n chu n cho vi c l u tr d

Transaction App Engine Java SDK s d ng JPA 1.0 cho c s d li u c a App

h nh ng App Engine Datastore không ph i là m t c s d li u quan h Vì

th , s có m t s ch c n ng c a JPA mà App Engine không h tr

Trang 30

Hình 2.10 Mô Hình JPA

• Nh ng file jar c a JPA và plugin DataNucleus c a App Engine ph i

persistence.xml

Trang 31

Hình 2.11 Mô Hình JPA trong Google App Engine

̇ Các tính n ng h tr c a JPA

JPA cung c p m t ngôn ng dùng đ truy v n d li u t ng t SQL g i

là Java Persistence Query Language(JPQL) JPA c ng cung c p các t khóa

đ i t ng EntityManager l y v đ i t ng EntityManager chúng ta s d ng

Hình 2.12 T o đ i t ng EntityManager

Trang 32

̇ Các tính n ng không h tr c a JPA trong GAE

li u quan h

• Các câu l nh truy v n t ng h p (group by, having, sum, avg, max, min)

m t lo i th c th riêng bi t trong Datastore

2.3.3 Các d ch v c a GAE

2.3.3.1 BlobStore Java API

Hình 2.13 Cách th c l u d li u c a BlobStore trong Datastore

dùng upload file s d ng giao th c HTTP, BlobStore t o ra blob t n i dung

dùng có th s d ng file thông qua key này, ho c blob có th đ c đ c tr c ti p

lo i l n nh là hình nh ho c Video Blob không th s a đ i sau khi nó đ c

com.google.appengine.api.blobstore.BlobstoreService.MAX_BLOB_FETCH_SIZE trong GAE

Trang 33

t o ra blob t file đ c upload, s d ng

chúng ta v a upload và l u tr trong Datastore đ ph c v cho ng i dùng khi

c n thêm thông tin v Blob mà chúng ta v a upload Sau khi t o ra blob, Blob

có th đ c chia s cho các ng i dùng khác, th vi n cung c p ph ng th c serve đ ng i dùng có th l y v Blob blobstoreService.serve(blobKey, res);

blob r ng m i s d ng createNewBlobFile() và có th ghi d li u vào blob m i

t o này b ng File API

2.3.3.2 Capabilities

Capabilities cung c p m t s th vi n dùng đ ki m tra c u hình mà

nào dùng đ c và cái nào không dùng đ c Có hai tr ng thái mà Capabilities

tr v là DISABLED và ENABLED N u s d ng đ c thì tr ng thái tr v là

Hình 2.14 Cách s d ng Capabilities

Ngày đăng: 13/05/2015, 23:08

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Mô hình các c m máy ch  trên đám mây - Điện toán đám mây với Google App Engine
Hình 2.1 Mô hình các c m máy ch trên đám mây (Trang 13)
Hình 2.3 Các ph n t o nên đám mây  2.1.2.1.  Các d ch v   ng d ng (SaaS) - Điện toán đám mây với Google App Engine
Hình 2.3 Các ph n t o nên đám mây 2.1.2.1. Các d ch v ng d ng (SaaS) (Trang 15)
Hình 2.4 Ki n trúc Google App Engine cho Java 2.2.2.  Môi tr ng phát tri n - Điện toán đám mây với Google App Engine
Hình 2.4 Ki n trúc Google App Engine cho Java 2.2.2. Môi tr ng phát tri n (Trang 17)
Hình 2.10 Mô Hình JPA - Điện toán đám mây với Google App Engine
Hình 2.10 Mô Hình JPA (Trang 30)
Hình 2.16 Trao đ i d  li u gi a client và server s  d ng Channel API - Điện toán đám mây với Google App Engine
Hình 2.16 Trao đ i d li u gi a client và server s d ng Channel API (Trang 35)
Hình 2.18 Ch ng th c s  d ng OAuth - Điện toán đám mây với Google App Engine
Hình 2.18 Ch ng th c s d ng OAuth (Trang 37)
Hình 3.1 Quy trình đ ng b  hóa website v i google Accouts - Điện toán đám mây với Google App Engine
Hình 3.1 Quy trình đ ng b hóa website v i google Accouts (Trang 43)
Hình 3.7 Mô hình th c th  m i k t h p - Điện toán đám mây với Google App Engine
Hình 3.7 Mô hình th c th m i k t h p (Trang 48)
Hình 3.8 Mô hình v t lý d  li u  3.2.3.  S  đ  trang web (Site map) - Điện toán đám mây với Google App Engine
Hình 3.8 Mô hình v t lý d li u 3.2.3. S đ trang web (Site map) (Trang 49)
Hình 3.13 Thanh toán ki u tích h p đ n gi n - Điện toán đám mây với Google App Engine
Hình 3.13 Thanh toán ki u tích h p đ n gi n (Trang 53)
Hình 3.15 L u đ  x  lý yêu c u c a  ng d ng Mobile - Điện toán đám mây với Google App Engine
Hình 3.15 L u đ x lý yêu c u c a ng d ng Mobile (Trang 57)
Hình 4.2 Thông tin c a giáo viên - Điện toán đám mây với Google App Engine
Hình 4.2 Thông tin c a giáo viên (Trang 59)
Hình 4.4 Thông tin v  h c phí - Điện toán đám mây với Google App Engine
Hình 4.4 Thông tin v h c phí (Trang 60)
Hình 4.6 G i thông tin cho h c sinh - Điện toán đám mây với Google App Engine
Hình 4.6 G i thông tin cho h c sinh (Trang 62)
Hình 4.7 Các ti n ích dành cho ng i qu n tr - Điện toán đám mây với Google App Engine
Hình 4.7 Các ti n ích dành cho ng i qu n tr (Trang 63)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w