TRNG I HC M TP.H CHÍ MINH
KHOA CÔNG NGH THÔNG TIN
xyxy
IN TOÁN ÁM MÂY VI
GOOGLE APP ENGINE
BÁO CÁO KHÓA LUN TT NGHIP
SVTH: Nguyn Ngc Mãn
MSSV: 10761245
Ngành: Khoa Hc Máy Tính
Hng Chuyên Ngành: Mng Máy Tính
Lp: TH07B1
Ngi Hng Dn
TS.Lê Xuân Trng
T
p
. H Chí Minh –Thán
g
9 nm 2011
LI CÁM N
Khóa lun đc thành công là nh s hng dn, giúp đ ca các
thy. Em xin chân thành cm n các thy đã b thi gian quý báu ca mình đ
giúp em hoàn thành tt khóa lun này.
NHN XÉT CA GIÁO VIÊN HNG DN
NHN XÉT CA GIÁO VIÊN HNG DN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
MC LC
Chng 1. TNG QUAN 1
1.1. Gii thiu 1
1.2. Mc đích làm đ tài 1
1.3. Phng pháp nghiên cu 2
1.4. Phm vi 2
1.5. B cc báo cáo 2
Chng 2. C S LÝ THUYT 4
2.1. Tng Quan in Toán ám Mây 4
2.1.1. Gii pháp ca đin toán đám mây 5
2.1.2. Cu trúc các phn to nên đám mây 6
2.1.2.1. Các dch v ng dng (SaaS) 6
2.1.2.2. Các dch v nn tng (PaaS) 6
2.1.2.3. Các dch v c s h tng (IaaS) 6
2.1.3. in toán đám mây vi Google App Engine 7
2.2. Kin trúc Google App Engine 7
2.2.1. Tng quan Google App Engine 7
2.2.2. Môi trng phát trin 8
2.2.3. Các loi tp tin tnh trên server 9
2.2.4. DataStore 9
2.2.5. Các loi Dch V 10
2.2.6. Google Accounts 10
2.2.7. Các hn ch ca Google App Engine 10
2.3. Các thành phn ca Google App Engine trong Java 11
2.3.1. BackEnds 11
2.3.2. Datastore 11
2.3.2.1. Thc Th, Thuc Tính và khóa 12
2.3.2.2. Transactions 15
2.3.2.3. Java Data Object (JDO) 17
2.3.2.4. Java Persistence API (JPA) 20
2.3.3. Các dch v ca 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
Chng 3. HIN THC NG DNG 33
3.1. S lc ng dng 33
3.1.1. Mô hình hot đng 33
3.1.2. S lc các chc nng 33
3.2. Xây dng ng dng Frontend và Backend 33
3.2.1. ng b hóa d liu tài khon google 33
3.2.2. S dng App Engine Datastores 34
3.2.2.1. Tùy chnh lu tr d liu 34
3.2.2.2. Xác đnh mi kt hp và bng s 34
3.2.2.3. Mô hình thc th mi kt hp 39
3.2.2.4. Mô hình vt lý d liu 40
3.2.3. S đ trang web (Site map) 40
3.2.4. Apache Struts Framework 41
3.2.5. Thanh toán trc tuyn (Online Payment) 42
3.2.5.1. Tng quan v tính nng thanh toán 42
3.2.5.2. Cng thanh toán Nganluong.vn 43
3.2.6. Các yêu cu v tính toán 44
3.2.7. Dch v Mail 46
3.3. Xây dng ng dng xem đim trên Mobile 46
3.3.1. Mô hình hot đng 47
3.3.2. Cách thc x lý 47
Chng 4. KT QU T C 49
4.1. Các dch v tin ích dành cho giáo viên, ph huynh và hc sinh 49
4.2. Tin ích dành cho ngi qun tr 53
4.3. ng dng trên Mobile 55
Chng 5. KT LUN 56
5.1. Li ích ca đin toán đám mây vi GAE 56
5.2. Hn ch 56
TÀI LIU THAM KHO 57
DANH MC CÁC THUT NG TING ANH VÀ CH VIT
TT
Datastore: Ni lu tr d liu ca đin toán đám mây
OPENID: Th vin giúp đng nhp vào mt website
GAE: Google App Engine
HDR: High Replication Datastore
API: Mt tp các th vin
SDK: B công c dành cho phát trin phn mm
JDO: Java Data Object
JPA: Java Persistence API
JDOQL: Mt loi ngôn ng dùng đ truy vn d liu trong Java
JPQL: Mt loi ngôn ng dùng đ truy vn d liu trong JPA
YAML: Mt ngôn ng giúp cu hình ng dng Java
XMPP: Mt giao thc ca Google App Engine trong
ng dng Chat G talk
DDos: mt loi tn công t chi dch v
GFS: Google File System, h thng file ca Google
DANH MC CÁC HÌNH
Hình 2.1 Mô hình các cm máy ch trên đám mây 4
Hình 2.2 Các gii pháp v cung cp các dch v tài nguyên 5
Hình 2.3 Các phn to nên đám mây 6
Hình 2.4 Kin trúc Google App Engine cho Java 8
Hình 2.5 So sánh gia hai loi lu tr d liu 12
Hình 2.6 Các kiu d liu đc h tr bi GAE 15
Hình 2.7 Mô hình cp nht ca d liu ca Transaction 16
Hình 2.8 Mô hình JDO 17
Hình 2.9 Cu 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 To đi tng EntityManager 22
Hình 2.13 Cách thc lu d liu ca BlobStore trong Datastore 23
Hình 2.14 Cách s dng Capabilities 24
Hình 2.15 Các loi Capabilities GAE h tr 25
Hình 2.16 Trao đi d liu gia client và server s dng Channel API 26
Hình 2.17 Cu hình Channel trong Google App Engine 26
Hình 2.18 Cu hình Mail trong Google App Engine 27
Hình 2.18 Chng thc s dng OAuth 28
Hình 2.20 Chn phng thc chng thc trong GAE 30
Hình 3.1 Quy trình đng b hóa website vi google Accouts 34
Hình 3.2 Mi kt hp xp lp hc sinh 35
Hình 3.3 Mi kt hp xp lp giáo viên 35
Hình 3.4 Mi kt hp xp loi hc sinh 36
Hình 3.5 Mi kt hp kim tra 37
Hình 3.6 Mi kt hp giáo viên ch nhim và phân ban lp hc 38
Hình 3.7 Mô hình thc th mi kt hp 39
Hình 3.8 Mô hình vt lý d liu 40
Hình 3.9 S đ ca website 40
Hình 3.10 Quy trình hot đng ca Struts Framework 41
Hình 3.11 Chng thc tài khon trong thanh toán 42
Hình 3.12 Chuyn khon trong thanh toán 43
Hình 3.13 Thanh toán kiu tích hp đn gin 44
Hình 3.14 Mô hình hot đng ng dng mobile 47
Hình 3.15 Lu đ x lý yêu cu ca ng dng Mobile 48
Hình 4.1 Thông tin ca hc sinh 49
Hình 4.2 Thông tin ca giáo viên 50
Hình 4.3 Thông tin v đim s 51
Hình 4.4 Thông tin v hc phí 51
Hình 4.5 Chuyn khon qua nganluong.vn 52
Hình 4.6 Gi thông tin cho hc sinh 53
Hình 4.7 Các tin ích dành cho ngi qun tr 54
Hình 4.8 màn hình ngi dùng nhp vào mã s sinh viên 55
Hình 4.9 ngi dùng sau khi tra cu đim thành công 55
-1 -
Chng 1. TNG QUAN
1.1. Gii thiu
Thut ng "cloud computing" ra đi gia nm 2007 không phi đ nói v mt
trào lu mi, mà đ khái quát li các hng đi ca c s h tng thông tin vn đã và
đang din ra t my nm qua. khái nim này có th đc din gii mt cách đn gin:
các ngun đin toán khng l nh phn mm, dch v s
nm ti các máy ch o
(đám mây) trên Internet thay vì trong máy tính gia đình và vn phòng (trên mt đt) đ
mi ngi kt ni và s dng mi khi h cn.
Nh vy, cloud computing ch là khái nim hoàn chnh cho mt xu hng không
mi bi nhiu doanh nghip hin không có máy ch riêng, PC ch cài mt s phn
mm c bn còn tt c đu ph thuc vào cloud. Chng hn, h đ
ng ký dch v
hosting cho website công ty, thuê công c qun lý doanh thu t Salesforce.com, ly d
liu kho sát th trng t t chc Survey Monkey Và tt nhiên, h dùng Google đ
tìm kim, phân tích, chia s và lu tr tài liu.
Vi các dch v sn có trên Internet, doanh nghip không phi mua và duy trì
hàng trm, thm chí hàng nghìn máy tính cng nh phn mm. H ch cn tp trung
sn xut bi đã có ngi khác lo c s h tng và công ngh
thay h.
Google nm trong s nhng hãng ng h đin toán máy ch o tích cc nht bi
hot đng kinh doanh ca h da trên vic phân phi các cloud (virtual server), và các
web services s dng các dch v hosting ca Google, đc gi là Google App Engine
(GAE).
GAE là mt nn tng hosting bao gm web server, c s d liu BigTable và kho
lu tr file GFS. GAE cho phép vit ng dng web da trên c s h tng ca
Google. Ngha là chúng ta không cn quan tâm là trang web ca chúng ta đc lu tr
nh th nào (k c database đi kèm), mà ch cn quan tâm đn vic phát trin ng
dng theo các API do Google cung cp.
Vì th khi s dng GAE chúng ta nhm đn các li ích mà nó mang li nh gim
bt chi phí bn quyn, các chi phí v mua và bo dng máy ch, không cn quan
tâm ti gii hn phn cng cng nh v trí đa lý. D liu trong mô hình
đin toán
đám mây đc lu tr 1 cách phân tán ti nhiu cm máy ch ti nhiu v trí khác
nhau. iu này giúp tng đ tin cy, đ an toàn ca d liu mi khi có s c hoc
thm ha xy ra. Vic tp trung d liu t nhiu ngun khác nhau s giúp các chuyên
gia bo mt tng cng kh nng bo v d liu ca ngi dùng, c
ng nh gim thiu
ri ro b n cp toàn b d liu. Và các lp trình viên cng d dàng hn trong vic cài
đt, nâng cp ng dng ca mình. Da vào nhng tiêu chí này, chúng ta có th to ra
mt ng dng có th phát trin thành ng dng ln và nó không là mt ý ngh xa vi
da trên nhng li ích mà nó mang li.
1.2. Mc đích làm đ tài
-2 -
Da trên công ngh GAE mà cung cp, phát trin mt ng dng qun lý hc sinh
đ minh ha v nhng li ích mà Google App Engine mang li
1.3. Phng pháp nghiên cu
• Áp dng công ngh Servlet & JSP
• S dng FrameWork Apache Struts, Apache Struts là mt web Application
FrameWork mã ngun m đc phát trin trong d án Apache Jakarta, s dng
mô hình MVC
• Công ngh v đin toán đám mây vi Google App Engine
• S dng c s d liu App Engine Datastore, s dng mt chun ging lnh
SQL đ truy vn d liu, đc gi là ngôn ng JDOQL(Java Data Object
Query Language)
• Chng thc user s dng tài khon Gmail
1.4. Phm vi
• Dch v web(Web services):
ứ Cung cp cho ph huynh và hc sinh có th tra cu đc đim
ứ Các thông tin v các lp hc
ứ Danh sách lp
ứ Giáo viên ch nhim lp.v.v
• Thanh toán trc tuy
n (Online payment)
ứ Cho phép ph huynh đóng tin trc tuyn
• Phiên bn mobile
ứ ng dng có th xem đim ngay trc tip trên mobile, ch cn Mobile có kt
ni GPRS hoc WIFI
• Java Mail Service
ứ Kh nng gi mail t đng. Cp nht các thông báo ca nhà trng đn ph
huynh.
1.5. B cc báo cáo
• Chng 1: Tng quan
ứ chng này s nói v m
c đích nghiên cu ca đ tài, phng pháp thc
hin cng nh tính hiu qu ca đ tài.
-3 -
• Chng 2: C s lý thuyt
chng này s nói v các công ngh da trên Google App Engine
ứ Các dch v mà Google App Engine cung cp
ứ Giao tip vi c s d liu Datastore
ứ Chi tit v Framework Struts
ứ Chi tit v giao dch trc tuyn (Online Payment).
• Chng 3: Hin thc h thng
chng này s nêu bt lên các công ngh đc áp dng vào trong ng dng
ứ Các dch v ng dng vào h thng
ứ Cách thc hin thc h thng
ứ Kt qu có đc t h thng
• Chng 4: Kt qu đt đc
ứ chng này s biu din các hình nh ca ng dng khi thc hin đc
• Chng 5: Kt lun
ứ Trong chng cui này báo cáo s trình bày các li ích và hn ch
ca
Google App Engine
-4 -
Chng 2. C S LÝ THUYT
2.1. Tng Quan in Toán ám Mây
T “ám mây” trong in toán đám mây thc cht ch là 1 phép n d đ mô t
Internet. Theo đnh ngha thì đin toán đám mây là bin pháp s dng da trên kt ni
Internet, ni mà nhng ngi dùng chia s cùng mt mng máy ch, phn mm và d
liu Nu nh chúng ta s dng nhng ng dng web t các hãng l
n nh Google hoc
Microsoft thì chính chúng ta đang s dng Cloud Computing. Các ng dng web nh
Gmail, Google Calendar, Hotmail, SaleForce, Dropbox và Google Docs đu da trên
Cloud Computing bi vì khi kt ni ti nhng dch v đó, ngi dùng đã đc truy
cp vào nhng cm mây o ca h thng máy ch đ s thng nht ca các hãng ln
trên Internet.
Hình 2.1 Mô hình các cm máy ch trên đám mây
Mi công ty thng chy các ng dng ngay trên các máy ch ca chính h.
Nhng máy ch đc đt ngay v trí công ty. iu đó đòi hi rt nhiu công sc
trong vic bo dng, bo trì, tin bc và thi gian đ gi cho mi th liên tc đc
chy, nâng cp và đm bo. Nu các doanh nghip áp dng in toán đám mây, h
s
vn s dng đc các ng dng y ht nhng chúng li đc đt các cm máy ch
trên Internet. Các doanh nghip ch vic kt ni qua mng Internet mà không phi mt
chút công sc nào đ bo trì, bo dng, nâng cp, chy máy ch. Không nhng th,
các doanh nghip còn có th cho khách hàng ca h s dng ng dng mà không phi
mt công cài đt
-5 -
2.1.1. Gii pháp ca đin toán đám mây
Hình 2.2 Các gii pháp v cung cp các dch v tài nguyên
̇ Vn đ v lu tr d liu
D liu đc lu tr tp trung các trung tâm d liu khng l. Các
công ty ln nh Microsoft, Google có hàng chc trung tâm d liu nm ri
rác khp ni trên th gii. Các công ty ln này s cung cp các dch v cho
phép doanh nghip có th lu tr và qun lý d liu c
a h trên các trung
tâm lu tr.
̇ Vn đ v sc mnh tính toán
Có 2 gii pháp chính:
• S dng các siêu máy tính đ x lý tính toán.
• S dng các h thng tính toán song song, phân tán.
̇ Vn đ v cung cp tài nguyên, phn mm.
Cung cp các dch v nh IaaS (infrastructure as a service), PaaS
(platform as a service), SaaS (Storeage as a service).
-6 -
2.1.2. Cu trúc các phn to nên đám mây
Hình 2.3 Các phn to nên đám mây
2.1.2.1. Các dch v ng dng (SaaS)
Tng dch v ng dng này lu tr các ng dng phù hp vi mô hình
SaaS. ây là nhng ng dng chy trong mt đám mây và đc cung cp theo
yêu cu. ôi khi các dch v này đc cung cp min phí và các nhà cung cp
dch v to ra doanh thu t nhng th khác nh các qung cáo Web và nhiu
khi các nhà cung cp
ng dng to ra doanh thu trc tip t vic s dng dch
v. Nu bn đã kim tra th ca bn khi s dng Gmail hoc Yahoo Mail hoc
đc nhc các cuc hn khi s dng Google Calendar, thì bn đã quen thuc
vi tng trên cùng ca đám mây. ây ch là mt vài ví d v các kiu ng dng
này.
Các ng dng đc cung cp qua mô hình SaaS làm li cho ngi tiêu
dùng bng cách gii phóng cho h khi vic cài đt và bo trì phn mm và các
ng dng có th đc s dng thông qua các mô hình cp phép có h tr tr
tin đ s dng.
2.1.2.2. Các dch v nn tng (PaaS)
ây là tng đó chúng ta thy c s h tng ng dng ni lên nh là
mt tp hp các dch v. Các dch v
đây đc dành đ h tr cho các ng
dng. Các ng dng này có th đang chy trong đám mây và chúng có th đang
chy trong mt trung tâm d liu doanh nghip truyn thng. đt đc kh
nng m rng cn thit trong mt đám mây, các dch v khác nhau đc đa ra
đây thng đc o hóa. Các ví d trong phn này ca đám mây bao gm
Amazon Web Services, Boomi, và Google App Engine. Các d
ch v nn tng
này cho phép khách hàng chc chn rng các ng dng ca h đc trang b đ
đáp ng các nhu cu ca ngi dùng bng cách cung cp c s h tng ng
dng da theo yêu cu.
2.1.2.3. Các dch v c s h tng (IaaS)
-7 -
đây, chúng ta thy mt tp hp các tài sn vt lí nh các máy ch, các
thit b mng và các đa lu tr đc đa ra nh là các dch v đc cung cp
cho ngi tiêu dùng. Các dch v đây h tr c s h tng ng dng và nhiu
ngi tiêu dùng hn. Cng nh vi các dch v nn tng, s o hóa là mt
phng pháp thng đc s dng đ to ra ch đ phân phi các ngun tài
nguyên theo yêu cu. Ví d v các dch v c s h tng bao gm IBM
Bluehouse, VMware, Amazon EC2, Microsoft Azure Platform, Sun ParaScale
Cloud Storage
2.1.3. in toán đám mây vi Google App Engine
Google nm trong s nhng hãng ng h đin toán máy ch o tích cc
nht bi hot đng kinh doanh ca h da trên vic phân phi các cloud (virtual
server). Google cung cp các d
ch v hai tng, tng ng cao nht ca đám mây
là SaaS, Google cho phép s dng các dch v ca h nh Gmail, Google Doc và
tng Paas h cung cp các tp API dành cho các doanh nhip, cá nhân, hay t chc
đ h tr cho các ng dng web Application s dng các dch v hosting ca
Google, đc gi là Google App Engine (GAE).
2.2. Kin trúc Google App Engine
2.2.1. Tng quan Google App Engine
Nhiu doanh nghip s dng rt nhiu ph
n cng đ chy các ng dng nh
các c s d liu, các máy ch ng dng, các h thng qun lý thay đi và các
công c ln vt tìm li. Tuy vy, ngày nay, các phn cng này này có th d dàng
vt b đ thay bng vic s dng chính gói phn mm y di dng mt dch v
đang chy trên mt c s h tng c
a ngi, hay t chc nào đó khác.
Mt doanh nghip có th vt b phn cng nm bên di ca mt ng dng
web c th đ thay bng vic chy ng dng trên phn cng đc cung cp bi
Amazon, Google hoc các đi tác khác. Các công ty này đa ra kh nng thuê
phn cng các mc đ khác nhau, va vn có th lu tr mt ng d
ng. Hn
na, các công ty này có kh nng qun lý m rng, sao lu và bo mt. Amazon và
Google đã nêu ra nhng mi quan tâm này và đi phó tt hn vi chúng ta, có
nhiu đi mi xung quanh các khía cnh ca vic chy các nn tng phn mm sao
cho hiu qu.
App Engine ca Google là mt nn tng thc s đ xây dng và trin khai
ng dng Web Java, Python và Go trên c s h tng m rng c
a Google. Nó
không yêu cu l phí cp phép s dng (tr ra mt s th vin phn mm mà
chúng ta chn đ s dng trên c s h tng y yêu cu giy phép) và không cn
chi phí tr trc cho bng thông hoc không gian lu tr. C s h tng ca App
Engine là hoàn toàn min phí cho đn khi đt đn ngng v mc s dng, dung
lng lu tr 500MB và theo nh
trích dn nguyên vn t Google, "đ CPU và
bng thông cho khong 5 triu lt xem trang mi tháng". Ch cn nói rng, khi
đt ti đim mà Google bt đu gi hóa đn tính phí, thì ng dng Web ca chúng
ta rõ ràng đã to ra lu lng đáng k , có nhiu ngi xem và có lãi.
-8 -
Hình 2.4 Kin trúc Google App Engine cho Java
2.2.2. Môi trng phát trin
Hin nay Google App Engine h tr phát trin trên ba môi trng nn tng.
Mt là Java Runtime Environment, Python Runtime Environment và Go Runtime
Environment. Môi trng đc chn ph thuc vào ngôn ng ca ng dng và
công ngh mà chúng ta s dng đ phát trin ng dng.
Môi trng Java h tr cho ng dng s dng Java 6 virtual Machine. ng
dng có th phát trin bng ngôn ng Java, hay hu ht các ngôn ng khác mà có
th chy trên JVM nh PHP(s
dng Quercus), Ruby (s dng JRuby), JavaScript,
Scala, Groovy. ng dng có th chy trên môi trng và s dng các dch v bng
các công ngh web chun hin nay nh servlet và Java Persistence API
Môi trng Python h tr cho các ng dng đc vit bng ngôn ng
Python 2.5 đc ci tin t phiên bn CPython. Môi trng Python trên Google
App Engine cho phép các ng dng Python s dng CGI, mt th vin chun h
tr giao din. Mt ng dng python có th
s dng đc hu ht các th vin
chun. Nhiu th vin mã ngun m điu hot đng tt vi google App Engine
nh là Django, Web2py, Pylons và App Engine còn cha nhiu th vin ca riêng
nó
-9 -
Môi Trng Go h tr cho các ng dng đc vit bng ngôn ng Go phiên
bn Release r58.1 tr lên, môi trng này hin đang đc th nghim trên Google
App Engine. Trong gói SDK ca GAE đã cha trình biên dch ca Go và mt th
vin chun.
Môi trng Java, Python và Go có đim chung đó là s dng cách thc
ging nhau trong vic truy cp d liu: mt ng dng đc đnh tuyn ti máy ch
ca Google, sau
đó máy ch s xem yêu cu và chun b d liu, nu có d liu
theo yêu cu thì máy ch tin hành tr li cho client. Mi môi trng s dng mt
trình thông dch riêng.
Tt c các ng dng ca server cn mt trình thông dch riêng (JVM hay
Python interpreter), vì th trc khi các yêu cu đc gi ti server, thì server phi
thc hin nhim v là chun b môi trng phù hp vi ng dng có yêu c
u.
2.2.3. Các loi tp tin tnh trên server
Mt website có rt nhiu tài nguyên.Hu ht các website có resource đc
cp phát cho trình duyt mà không có s thay đi trong quá trình hot đng thng
xuyên ca nó. Hình nh và CSS đc mô t nh là s xut hin ca các trang
web, mã JavaScript giúp chy các tác v trên trình duyt, và các trang HTML
không có các thành phn d liu đng là các ví d ca nhng tài nguyên này, đc
gi chung là các tp tin tnh. S cp phát tài nguyên này cho browser không liên
quan ti mã code ca ng d
ng, không cn thit và không hiu qu đ đáp ng t
các máy ch. Thay vào đó, App Engine cung cp mt thành phn chuyên bit ca
máy ch chuyên dng đ cung cp tnh các tp tin này. Các server này đc ti u
hóa cho kin trúc ni b và phng thc truyn dn mng đ x lý các yêu cu v
tài nguyên tnh.
Khi duyt website, các tp tin tnh cùng các mã ng dng đc load lên.
các tp tin tnh có th
đáp ng yêu cu ca website, phi cu hình mt s khía
cnh trong các tp tin cu hình bao gm: các URL tnh ca tp tin, các loi ni
dung và hng dn cho các trình duyt đ gi các bn sao ca các tp tin trong b
nh Cache cho mt s lng và thi gian nht đnh đ làm gim lu lng và tc
đ dng hình ca trang khi trang đc load. Mc đnh trong GAE thì các file hình
nh và CSS trong th mc resouse ca ng d
ng đu là các tp tin Static.
2.2.4. DataStore
Hu ht các ng dng web hu ích cn phi lu tr thông tin trong vic x
lý yêu cu. Vì th các website thng có các lung xut nhp d liu và phi có
mt hoc nhiu máy ch web kt ni vi máy ch c s d liu đ lu tr hoc ly
d liu. Tuy nhiên, khó khn đc đt ra khi có nhiu kt n
i đng thi đ yêu cu
d liu, vì th h thng máy ch c s d liu phi đòi hi mt s cu hình v
phn cng đ có th đáp ng đc nhiu yêu cu cùng lúc.
Hin nay, các h thng lu tr d liu ph bin nht cho các ng dng web
là lu tr theo table, hàng và ct, gin lt không gian, s
p xp, s dng các ch s
index đ nâng cao kh nng truy xut d liu. Các loi khác ca h thng lu tr
-10 -
d liu bao gm các kho d liu phân cp (XML) và c s d liu hng đi
tng (Object database). Mi loi c s d liu có u và khuyt đim riêng, và
loi tt nht phù hp cho mt ng dng ph thuc vào bn cht d liu ca ng
dng. Và mi loi c s d liu có nhng k thut c
a riêng mình đ phát trin qua
các h thng các máy ch.
H thng c s d liu ca Google App Engine gn ging nht vi mt c
s d liu kiu đi tng(object). Nó không phi là mt c s d liu quan h,
điu này có th s yêu cu thay đi cách suy ngh v d liu ca ng dng.
2.2.5. Các loi Dch V
Mi quan h gia datastore và thi gian thc thi đó là mt loi dch v: dch
v này cung cp các tp API đ truy xut vào h thng c s d liu. Google App
Engine bao gm mt s dch v hu ích cho các ng dng web. Dch v b nh
Cache là mt dch v giúp kh nng truy xut nhanh vì chính li th ca nó là
nhanh, nhanh hn nhiu so vi truy xut trc ti
p trên database. Nhng mt nhc
đim ca nó là khi server có s c v mt đin hay tt máy thì các giá tr ghi tm
thi trong memcache b xóa hoàn toàn. Nh tên gi ca nó, dch v memcache s
dng nh là mt b nh cache đ lu các kt qu ca các truy vn thng xuyên
hoc thc hin các phép tính toán.
ng dng ca App Engine có th truy xut đn các tài nguyên ca các trang
web khác s dng d
ch v URL Fetch. Dch v này to ra kt ni HTTP ti server
khác trên internet đ nhn v tài nguyên
ng dng App Engine có th gi mail s dng dch v Mail. Tin nhn có
th gi đn các user khác trong Domain hoc ngoài Domain và có th nhn mail t
các user khác. Nu ng dng đc cu hình đ nhn mail thì tin nhn s đc gi
đn đa ch ca ng dng, sau đó ng dng s đnh tuy
n ti Mail service và hin
th trên webform nu có yêu cu
Ngoài gi nhn Mail. App Engine còn cho phép ng dng có th nhn tin
nhn chat ca Google Talk s dng giao thc XMPP bng dch v XMPP service
X lý nh cng là mt phn trong dch v ca App Engine bao gm các
dch v xoay nh, ct nh, hin th nh…
2.2.6. Google Accounts
App Engine có kh nng tích hp các tài khon Google vào ng dng, các
tài khon này ngi dùng đã
đng kí trên các dch v Saas nh Google Mail,
Google Docs và Google Calendar. S bo mt hn nu chúng ta có th s dng tài
khon Google đ chng thc thay vì s dng mt h thng đng nhp riêng. Tt
nhiên, Chúng ta có th s dng h thng riêng ca chúng ta hoc là mt nhà cung
cp khác mà GAE có h tr nh là OpenID
2.2.7. Các hn ch ca Google App Engine
-11 -
App Engine cung cp phng thc kt ni an toàn(HTTPS) cho tên min
con ca google h tr là application-id.appspot.com, nhng cha h tr phng
thc kt ni này cho tên min khác. Google account đng nhp luôn luôn s dng
phng thc kt ni an toàn này
ng dng s dng dch v URL Fetch đ to kt ni HTTPS và gi yêu cu
đn mt website khác, nhng App Engine không kim tra đc certificate (giy
chng nhn) s d
ng trên máy ch t xa.
2.3. Các thành phn ca Google App Engine trong Java
2.3.1. BackEnds
Backends đc mô t nh là mt phn ph tr ca GAE, là mt ng dng
đc bit không có gii hn thi gian yêu cu, có b nh cao hn và tng bng
thông CPU. BackEnds đc thit k cho các ng dng cn hiu sut nhanh hn,
cn b nh nhiu hn, và các quá trình yêu cu là liên tc. Nhng phn ph tr
này s tính phí theo thi gian hot đng
2.3.2. Datastore
App Engine cung cp hai tùy chnh lu tr d liu khác nhau đc phân
bit bi tính kh dng và tính nht quán:
• Kho d liu Master/Slave: s dng mt h thông sao chép master-slave. Có
ngha là d liu ch đc lu tr ti mt trung tâm d liu vt lý. Tùy chn
này cung cp tính nht quán mnh m v d liu cho tt c các l
n đc và
truy vn. Tùy chn này giúp ngi qun tr ít tn dung lng lu tr, và tc
đ CPU gim đi đáng k
• Kho d liu High Replication: D liu đc nhân rng trên khp các trung
tâm d liu bng cách s dng mt h thng da trên thut toán Paxos. Tùy
chn này cung cp cho ngi s dng các tính nng v tng hp d liu
nhanh trong mi ln đ
c và ghi d liu xung. Vi tùy chn này thì dung
lng lu tr s tng lên và chi phí cho CPU tng gp 3 ln so vi tùy chn
Master/Slave
C s d liu App engine lu tr mt h thng các đi tng, đc bit đn
nh là mt thc th. Mt thc th có th có nhiu thuc tính, tên và giá tr ca mt
trong s các loi d liu đc h
tr bi GAE.
High Replication Master/Slave
Cost
Storage 1x 1/3x
Put/Delete CPU 1x 5/8x
-12 -
Get CPU 1x 1x
Query CPU 1x 1x
Performance
Put/Delete Latency 1/2x–1x 1x
Get Latency 1x 1x
Query Latency 1x 1x
Consistency
Get/Put/Delete Strong Strong
Most Queries Eventual Strong
Ancestor Queries Strong Strong
Occasional Planned
Read-Only Period
No Yes
Unplanned Downtime
Rt him xy ra. Nu có
xy ra thì không mt d
liu
Him khi xy ra. Có th mt mt
lng nh % d liu gn lúc server
b Down
Hình 2.5 So sánh gia hai loi lu tr d liu
Khi mi ng dng mi đc to ra thì GAE s la chn mc đnh loi lu
tr CSDL là HRD(High Replication Datastore).
2.3.2.1. Thc Th, Thuc Tính và khóa
Mt đi tng trong c s d liu ca GAE đc bit đn nh là mt
thc th. Mi thc th có mt khóa duy nht đ xác đnh các đi tng trên
toàn b h thng. Nu có mt khóa, các thc th có th tìm ra mt cách nhanh
chóng. Khóa đc lu tr nh là mt thuc tính trong thc th. Mt phn ca
khóa là ID ca ng dng, đ đm bo rng các ng dng khác không th truy
cp vào ng dng ca chúng ta, và ng dng ca chúng ta không th truy cp
vào ng dng khác. Sau khi thc th đc to ra thì khóa không th thay đi.
Ta có th hình dung đi vi CSDL quan h thì 1 entity đc ví nh là 1
dòng record trong mt bng, tuy nhiên có mt s khác bit đôi chút. Kho d
liu ca App Engine đc xây dng theo hng CSDL hng đi t
ng
(object database), đây là 1 loi CSDL vn còn mi và vn cha đc thông
dng, CSDL quan h mi là loi đang đc s dng rng rãi và ph bin. Vì
th kho d liu ca App Engine đã c gng xây dng ht tt c nhng đc đim
-13 -
vn có ca CSDL quan h đ đem li cho ngi phát trin s quen thuc.
Chúng ta vn có nhng câu query, transaction, khóa … nh chúng ta tng làm
vic vi CSDL quan h.
u tiên là entity, mi entity s có 1 khóa đ phân bit mình vi tt c
các entity khác trong datastore. Trong datastore không h có bng nh trong
CSDL quan h thông thng. i vi datastore, ta nên hiu nó ch là 1 bng và
là 1 cái bng rt ln, đó là lý do mà nó có tên là BigTable. Vì th khóa dùng đ
phân bit entity này vi tt c các entity khác trong cái bng to l
n y. Khóa có
2 dng, chúng ta có th t đt tên cho khóa đ có th s dng sau này, hoc nu
ta không ch đnh tên cho khóa thì h thng s phát sinh s ngu nhiên (id) cho
entity. Vì th, 1 entity hoc là có tên khóa, hoc là có s id ca khóa. Vic gán
tên cho khóa ch xy ra khi entity đc khi to và giá tr đó không th thay đi
đc khi entity đã đc to ra ri.
Mi entity có 2 loi thuc tính: thuc tính tnh (fixed property) và thuc
tính đng (dynamic property). Vi thu
c tính tnh, ta có th hình dung nó nh
là các ct trong CSDL quan h, có giá tr và cùng kiu d liu. Tuy nhiên đi
vi thuc tính đng, s lng thuc tính này thay đi tùy vào mc đích ca
chúng ta. Vì th, mc dù cùng 1 entity nhng 2 th hin có th có s lng
thuc tính đng khác nhau, và có th các thuc tính đng có tên ging nhau
nhng kiu d liu khác nhau. Mi thuc tính đu có kiu d liu riêng ca nó,
các kiu d li
u trên datastore đã đc đánh ch mc mt cách t đng. Tuy
nhiên chúng ta phi khai báo ch mc cho nhng thuc tính cn s dng trong
câu query vì đy là yêu cu bt buc ca datastore.
Trong datastore, đ có th ly đc các entity cha d liu, ta có 2 cách.
Th nht là bit khóa ca nó và ly da vào khóa. Th 2, ph bin hn, là s
dng câu truy vn (query). Trong datastore, các thuc tính đc s dng trong
câu query bt bu
c phi đc khai báo ch mc. Nu không câu query s không
hot đng. Vic khai báo ch mc index s giúp câu query đt đc tc đ tt
nht.
Java SDK cung cp mt tp các API đn gin h tr trc tip. Các hàm
API này nm trong gói com.google.appengine.api.datastore. Chúng ta có th s
dng API này đ truy xut trc tip ti các ng dng, và có th to ra mt tp
API riêng t vic tng hp các API này. Java SDK c
ng cung cp hai loi truy
xut d liu chun là: Java Data Objects(JDO) và Java Persistence API (JPA).
Vi vic s dng 1 trong 2 giao din trên, chúng ta có th to ra đc thc th
vi thuc tính c đnh. to ra thc th loi A, ta cn đnh ngha mt class A
và khai báo các thuc tính kèm theo kiu d liu mà ta mun thc th ca ta có.
Tuy nhiên đ s dng JDO hoc JPA, chúng ta cn phi cu hình đ App
Engine nhn bi
t chúng
Chúng ta giao tip vi Datastore bng cách s dng các hàm get(),
put(),delete() đ ly, to mi và xóa mt thc th trong Datastore. Các hàm này
là phng thc trong đi tng DatastoreService
-14 -
DatastoreService datastore=
DatastoreServiceFactory.getDatastoreService();
S dng phng thc to khóa cho thc th createKey(Entity name,
Key key) bng đi tng KeyFactory. Sau đây là các kiu và các thuc tính ca
thc th mà GAE h tr
Value type Java type Sort order Notes
Boolean
boolean or java.lang.Boolean
false < true
Byte string,
short
com.google.appengine.api.da
tastore.ShortBlob
byte order
Up to 500 bytes. A
value longer than
500 bytes throws a
JDOFatalUserExcep
tion.
Byte string,
long
com.google.appengine.api.da
tastore.Blob
n/a
up to 1 megabyte;
not indexed
category
com.google.appengine.api.da
tastore.Category
Unicode
Date and time
java.util.Date
chronological
email address
com.google.appengine.api.da
tastore.Email
Unicode
floating point
number
float, java.lang.Float,
double, java.lang.Double
numeric
64-bit double
precision, IEEE 754
geographical
point
com.google.appengine.api.da
tastore.GeoPt
b
y 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.
-15 -
key, blobstore
com.google.appengine.api.bl
obstore.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.da
tastore.Link
Unicode
messaging
handle
com.google.appengine.api.da
tastore.IMHandle
Unicode
null
null
n/a
postal address
com.google.appengine.api.da
tastore.PostalAddress
Unicode
rating
com.google.appengine.api.da
tastore.Rating
numeric
telephone
number
com.google.appengine.api.da
tastore.PhoneNumber
Unicode
Text string,
short
java.lang.String
Unicode
Up to 500 Unicode
characters. A value
longer than 500
characters throws a
JDOFatalUserExcep
tion
.
Text string,
long
com.google.appengine.api.da
tastore.Text
n/a
up to 1 megabyte;
not indexed
Hình 2.6 Các kiu d liu đc h tr bi GAE
2.3.2.2. Transactions
Vi các ng dng web, có th có nhiu ngi truy cp và cp nht d
liu đng thi. Hu ht các h qun tr c s d liu đu đm bo tính toàn vn
d liu khi thc hin nhiu mt tp hp các hot đng, mt tp các hot đng
đó đc đc thc hin liên tc đc g
i là mt transaction. Mt h thng h
-16 -
tr Transaction đm bo rng nu mt giao dch thành công, tt c các hot
đng trong giao dch đu đc hoàn thành. Nu có bt kì mt li nào phát sinh
t mt hot đng bên trong vì bt c lý do gì thì d liu s tr v trng thái lúc
ban đu, lúc cha thc hin Transaction
Mt hot đng có th tht bi có th là do s lng ngi truy cp cùng
lúc vào mt entity quá ln, hoc v
t quá mc đ tài nguyên mà GAE cung
cp min phí cho ngi dùng, trong trng hp này nu mun s dng thêm
phi đng kí vi nhà cung cp dch v và bt đu tính phí. Tùy trng hp tht
bi 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 kt vi các hot đng con
txn.commit();
} finally {
if (txn.isActive()) {
txn.rollback();
}
}
Transactions là mt tính nng tùy chn ca Datastore nên không cn s
dng Transaction trong các hot đng ca kho d liu. Tùy trng hp ng
dng yêu cu phi s dng Transaction trong các hot đng ly d liu đ đm
bo tính toàn vn d liu
Hình 2.7 Mô hình cp nht ca d liu ca Transaction
Khi ng dng s dng Transaction cho mt nhóm các thc th,
Datastore to ra mt bin đ đánh du thi gian. Khi ng dng gi datastore
cp nht các thc th, Datastore ghi các yêu cu thay đi vào Journal, mt hàng