Quản lý hệ thống thông tin địa lý thành phố Hồ Chí Minh
Trang 2TRNG I H C KHOA H C T NHIÊNKHOA CÔNG NGH THÔNG TIN
MÔN CÔNG NGH PH N M Me&f
Trang 3I C M N
Khoa h c T nhiên t o u ki n cho chúng em th c hi n tài lu n v n t tnghi p này.
n, ch b o chúng em trong su t th i gian th c hi n tài.
Chúng em chân thành cám n quý th y cô trong khoa ã t n tình gi ngy, trang b cho chúng em nh ng ki n th c quý báu trong nh ng n m h c
a qua.
Chúng con xin nói lên lòng bi t n sâu s c i v i cha m , nh ng ng iã ch m sóc, nuôi d y chúng con thành ng i và luôn ng viên tinh th ncho chúng con.
Và c ng chân thành cám n các anh ch và b n bè ã ng h , giúp , traoi ki n th c, kinh nghi m và ng viên chúng em trong th i gian h c t p vànghiên c u.
c dù chúng em ã c g ng hoàn thành lu n v n trong ph m vi và khng cho phép nh ng ch c ch n s không tránh kh i nh ng sai sót Chúngem kính mong nh n c s c m thông và t n tình ch b o c a quý th y côvà các b n.
Tp.H Chí Minh, tháng 7 n m 2005Nguy n Th Lý – 0112187
Nguy n Sao K - 0112186
Trang 4Ch ng 3: Gi i thi u v mô hình Topology: nêu lên nh ng khái ni m c b n,các i t ng trong Topology và các c p Topology.
Ch ng 4: Gi i thi u v GIS: gi i thi u t ng quan v GIS, các gi i pháp và ngng v GIS và ng d ng GIS trên PocketPC
Ch ng 5: Gi i thi u v chu n OpenGIS
Ch ng 6: T ng quan v PocketPC: Các v n và gi i pháp trên thi t b Tìnhtr ng b nh , t o c s d li u và ng d ng b n trên PocketPC.
Ch ng 7: ng d ng b n : mô hình phân tích thi t k
Ch ng 8: K t lu n, ánh giá và h ng phát tri n
Ch ng 9: Nh ng tài li u tham kh o khi th c hi n tài
Ch ng 10:Nêu nh ng thu t toán chính trong ch ng trình
Trang 52.2.2 Semi transparent object loading: 21
2.2.3 Automatic scheme evaluation 23
2.2.4 Relation: 24
2.2.5 Index: 25
2.2.6 Giao tác (Transaction): 29
2.3 Transparent API: 31
2.3.1 Dùng.NET Remoting API: 31
2.3.2 Dùng các thu c tính o (virtual properties): 32
Trang 63.5 MBR – Minimum Bounding Rectangle: 59
CHNG 4 : Gi i thi u v GIS 60
4.1 Gi i thi u v các ng d ng và gi i pháp v GIS: 60
4.2 Mô hình d li u c a thông tin a lý: 61
4.3 Thu th p d li u: 64
4.4 Các gi i thu t nghiên c u v GIS: 66
4.5 Các c u trúc d li u không gian trong GIS: 67
4.5.1 Cây t phân (Quad Tree): 67
4.7 ng d ng GIS trên PocketPC: 73
CHNG 5 : Gi i thi u v chu n OpenGIS 75
5.1 Các ki u d li u hình h c c a OpenGIS: 75
5.2 OpenGIS Specification (c t OpenGIS): 76
5.2.1 Các khái ni m: 76
5.2.2 Nh ng d ch v OpenGIS (OpenGIS Services ): 78
5.2.3 M t mô hình nh ng c ng ng thông tin (Information Communities Model ): 79
5.2.4 c m: 79
5.2.5 Phân lo i: 81
5.3 OpenGIS Abstract Specification: 82
5.3.1 Essential Model (mô hình b n ch t ): 83
Trang 77.3.1 Giao di n trên Desktop: 124
7.3.2 Giao di n trên PocketPC: 131
10.1.2 Gi i quy t bài toán: 134
10.2 Bài toán tìm chu trình t i u 136
10.2.1 Phát bi u bài toán 136
10.2.2 Gi i quy t bài toán: 137
Trang 8Hình 7.2.2.1-1 Use Case - Tìm ki m Edge 97
Hình 7.2.2.2-1 Use Case: Tìm ki m Region 98
Hình 7.2.5-5 Sequence Diagram: Tìm Edge 115
Hình 7.2.5-6 Collabration Diagram: Tìm Edge 116
Hình 7.2.5-7 Sequence Diagram: Tìm chu trình t i u 117
Hình 7.2.5-8 Collabrotion Diagram: Tìm chu trình t i u 118
Hình 7.2.5-9 Sequence Diagram: D ch chuy n vùng nhìn 119
Trang 9Hình 7.2.5-10 Collabrotion Diagram: Di chuy n vùng nhìn 120
Hình 7.2.5-11 Sequence Diagram: T l l i b n 120
Hình 7.2.5-12 Collaboration Diagram: T l l i b n 121
Hình 7.2.5-13 Sequence Diagram: Tìm a m 121
Hình 7.2.5-14 Collaboration Diagram: Tìm a m 122
Hình 7.2.5-15 Sequence Diagram: Tìm giao l 123
Hình 7.2.5-16 Collaboration Diagram: Tìm giao l 123
Hình 7.3.1-1 Khung nhìn t ng quát v giao di n 124
Trang 11T S KHÁI NI M, THU T NG VÀ T VI T T T
OODBMS Oriented DatabaseManagement System)
Trang 12Information System ) lý Là m t công ngha trên máy tính xâyng b n , phân tích
n t i và các s ki ny ra trên trái t.
m liên quan n hìnhng, v trí, quan h c acác i t ng a lý.
c Ví d nhnh ng vùng nào ki m t vùng xácnh.
Thông tin phi không gian( thông tin thu c tính )
m liên quan n th ngkê, thông tin s , thôngtin c tr ng gán cho
ph , dân s …
Trang 13u hành WindowsCE
Trang 14Region i t ng vùng ây không c p nqu n huy n nh ng có thhi u Region là qu n huy n.
tên ng, qu n huy n màch nh c t i ID vì c s dli u không thông tin tên
ng Và khi nh c t i têna i t ng b t k thìhi u là ID.
Trang 15CHNG 1 : Hi n tr ng và yêu c u
Trên th gi i hi n nay ã có nhi u ph n m m gi i quy t các bài toán vn giao thông nh : RouteSmart, BusStops, Arclogistics, Routronic 2000,DynaRoute… Vi t Nam nói riêng c ng có m t s công ty nh DolSoft, HàiHoà, … ã có m t s s n ph m v GIS nh Street Finder, SmartMap… Cácn ph m trên a ph n s d ng c s d li u c t ch c trên các h qu ntr c s d li u quan h ho c t t o Tuy nhiên v n có v n c t ra:
th ng th y các h c s d li u M c dù n gi n nh v y nh ng PERSTn h tr y tính ACID trong vi c th c hi n giao tác (transaction) và htr vi c ph c h i (recovery) t ng i nhanh khi h th ng g p s c
Không ch d ng l i ó mà PERST có h tr c vi c phát tri n trên môi
các thi t b di ng dùng WinCE hay PocketPC.
Trang 16Vì v y, ta có th th y vi c dùng PERST gi i quy t bài toán v qu n lý th ng thông tin a lý (GIS) là hoàn toàn kh thi.
t trong các y u t quan tr ng quy t nh s thành công hay th t b i c at h th ng thông tin a lí là vi c l a ch n mô hình c u trúc d li u thíchp, cho phép l u tr và khai thác thông tin m t cách hi u qu Và mô hình
trong lu n v n) Vì d li u Topology trên PERST không có s n nên chúng tan xây d ng l i d li u theo mô hình Topology D li u thô (d li u ngu n)
c dùng trong ng d ng này là các t p tin text.
Trang 17CHNG 2 :ng quan v PERST
PERST là m t h c s d li u “nhúng” dành cho các ng d ng c n tínhng l u tr PERST c thi t k dành riêng cho l p trình và không có giao
lý c bi t khác Nh v y, PERST có kh n ng cung c p c “tính trongsu t” trong l p trình m c cao Các hàm API c a PERST ti n l i, d s
ng và có t c cao Có th l y ví d khi so sánh v i Ozone (m t h c s
th ng th y các h c s d li u M c dù n gi n nh v y nh ng PERSTn h tr y tính ACID trong vi c th c hi n giao tác (transaction) và htr vi c ph c h i (recovery) t ng i nhanh khi h th ng g p s c
Trang 18Có hai b n cài t c a PERST, m t b ng ngôn ng Java và m t b ng C#.
(m c dù ph i có nhi u thay i c n th c hi n m i có c b n hoàn ch nh).c dù b n cài t dùng C# h tr nhi u ki u “nguyên th y” h n (g m cóki u s nguyên không d u và ki u li t kê (enum)) nh ng trong các ph ngdi n khác, các tính n ng c a hai b n là nh nhau Riêng PERST.NET có htr c vi c phát tri n trên môi tr ng compact.NET framework nên có kh
PERST C th chúng ta s tìm hi u phiên b n cài t trên môi tr ng.NET(g i t t là PERST.NET) ây các tính ch t có t nguyên g c ti ng Anh s
c gi nguyên do không có t ti ng Vi t thay th ng n g n mà úngngh a
p Persistentu có kh n ng l u tr (persistent hay còn d ch là b n v ng).
t bây gi , ta s g i t t các i t ng này là các i t ng persistent Các
i Có ngh a là ta không c n ph i g i tr c ti p, t ng minh ph ng th c
Trang 19Database có m t i t ng c bi t g i là root i t ng root này là i
cách bình th ng: ho c truy xu t b ng tham chi u t các i t ng persistent
nh trên ho c truy xu t b ng cách dùng các i t ng bao ch a (containerclass) nh Index,Link hay Relation Không gi ng nh các h c s d li u
ng i t ng khác, ch có th có duy nh t m t i t ng root trong c s
a các l p persistent c ng b gi i h n trong các ki u sau:
Ki u vô h ng (scalar type):
Ki u chu i: Ki u System.String.
Ki u ngày tháng: Ki u System.DateTime.
Ki u tham chi u n các i t ng persistent: các l p k th a t l p
Persistent hay các giao di n (interface) k th a t giao di n IPersistent.
Ki u giá tr (value type): Các ki u giá tr c a C# Các giá tr nàyc l u tr c ti p trong i t ng ch a chúng.
Ki u d li u nh phân thô: Các l p c a C# k th a t giao di n
Trang 20ng thành các m ng byte và l u chúng vào database Các l p này sc ánh d u là Serializable và không c ch a các tham chi u n cáci t ng persistent khác.
Ki u m ng: Các m ng m t chi u v i thành ph n là các ki u d li uc nêu trên.
Ki u Link: i di n cho quan h m t-nhi u trong mô hình c s dli u Hay nhìn theo góc l p trình ây chính là ki u m ng ng ch a các
i t ng persistent.
c u ó ch có cách là ta t so sánh t ng field c a tr ng thái c và m ii nhau Nh ng nh v y chi phí r t cao Vì th nên trong PERST, l p trìnhviên hoàn toàn ch u trách nhi m v vi c l u i t ng nào vào c s d li u.
Trang 21n trong m t giao tác Lúc ó, thao tác ghi a ch ph i th c hi n m t l nvào cu i giao tác, t ng hi u su t lên áng k
Nh ã c p trên, PERST không dùng b t c b biên d ch hay ti n x
(behavior) hay s thay i tr ng thái các i t ng trong th i gian th c thi(runtime) nên không th cài t c c u l u tr c a PERST hoàn toàn “trong
u tr và không c l u tr m t cách hoàn toàn gi ng nhau vì ta không th
không c l u tr ) Thay cho s cài t “trong su t” hoàn toàn, PERST ã g ng cung c p s “trong su t” trong a ph n các tr ng h p.
(return) giá tr true Có ngh a là PERST s load (vào b nh chính) m t cách
ngu n này c load Có ngh a là c ch này s gây ra vi c load ng m nhtoàn b các i t ng vào b nh chính C ch này t ng t cách làm vi c
a c ch “chu i hóa” (serialization).
tránh v n tràn b nh x y ra khi load i t ng lên b nh chính
ph ng th c recursiveLoading trong m t vài l p b ng cách tr v (return)
Trang 22load m t cách t ng minh b ng ph ng th c Persistent.Load V y ta th y
load các i t ng t b nh ph vào b nh chính.
thi t, không load t t c theo c ch recusiveLoading Ngoài ra, vi c truy xu t
1.M i l p có kh n ng l u tr c (persistent capable class) u nên cóph ng th c kh i t o m c nh (ho c là không có ph ng th c kh i t o nào,khi ó trình biên d ch s t t o ra cho ta) Ph ng th c này có th có m i t mtruy xu t có th c (public, private,protected … ).
o nh các thành ph n transient nói trên, ta c n kh i t o chúng trong hàm
nh chính.
Trang 23Tóm l i, các c ch trên cho chúng ta s thu n ti n, d dàng và m m d otrong l p trình, vì nó không yêu c u l p trình viên ph i load t ng minh cáci t ng trong khi v n cho phép vi c này, nói cách khác là PERST h trp trình viên trong vi c ki m soát vi c load các i t ng Ch có các l p
PERST h tr “lazy automatic scheme evaluation” Khi nh ngh a c at l p b thay i (thay i v s l ng bi n thành viên, thay i v ki u
ki u thay i nh d ng sau:
ng (thay i mà không c t b t d li u) Ví d nh thay i t ki u intsang float hay int sang long,… nh ng ng c l i thì không c.
2.Thay i th t các thành ph n trong l p hay thêm, b t các thànhph n trong l p này vào l p cha hay l p d n x t c a nó.
3.Thêm vào hay b l p kh i cây th a k c a l p.
4.Thay i nh d ng c a l p b ng cách thay i ý ngh a c a cácgiá tr
i thay i khác trong c u trúc l p ( i tên cho thành ph n, chuy n ki u
Trang 24ch thay i c u trúc d li u t ng c a PERST Trong các tr ng h p nàyta có th dùng c ch xu t nh p b ng XML c a PERST C s d li u có th
giao di n (interface) Link dùng cho các tr ng h p này Giao di n này a ra
B ng sau ây minh h a các m i quan h gi a 2 l p A và B:
Trang 25Ki u quan h Object A Object B
Nhi u-nhi u Link bref; Link aref;
ng 2.2.4-1 Các m i quan h gi a 2 l p A va B
chi u hay b ng Link nh trên Tuy nhiên, chúng ta c ng c n truy xu t các ing thông qua khóa Trong môi tr ng.NET, l p Hashtable là m t ví d
cho vi c truy xu t theo khóa này i v i c s d li u, vi c truy xu t ing theo khóa d nhiên là t ng i ph c t p Và vi c cài t trong PERSTn m t ch c n ng d ch các câu truy v n SQL là không kh thi vì nó s làmcho PERST phình to ra và ch m i Tuy nhiên trong ph n l n tr ng h p,các ng d ng ch th c hi n các l nh truy v n d li u t ng i n gi n nhtìm theo m t khóa chính xác hay trong m t kho ng giá tr nào ó TrongPERST vi c này c th c hi n b ng cách cài t các giao di n (interface)
tr t ng ng c a khóa ó Còn giao di n FieldIndex thì dùng l p indexcho các i t ng v i khóa chính là m t thành ph n c a i t ng.
i Index hay Storage.createFieldIndexi v i FieldIndex Có th có vài
Trang 26(B+Tree là c u trúc d li u hi u qu nh t cho database trên b nh ph ) Các
ki m i t ng theo khóa b ng giá tr chính xác ho c trong m t kho ng giátr nào ó Vì v y các tr ng h p tìm ki m sau ây là th c hi n c:
1 Khóa b ng giá tr VAL.
2 Khóa thu c kho ng [MIN_VAL,MAX_VAL].
3 Khóa thu c kho ng [MIN_VAL,MAX_VAL).
4 Khóa thu c kho ng (MIN_VAL,MAX_VAL].
5 Khóa thu c kho ng (MIN_VAL,MAX_VAL).
6 Khóa l n h n giá tr MIN_VAL.
7 Khóa l n h n hay b ng giá tr MIN_VAL.
8 Khóa bé h n giá tr MAX_VAL.
9 Khóa bé h n hay b ng giá tr MAX_VAL.
Có m t s cách ch n i t ng theo khóa khác nhau nh sau:
này nên là khóa duy nh t c a i t ng.
m trong m t kho ng giá tr cho tr c gi i h n b i giá tr from và till.Trong ó from và till có th mang giá tr tùy ý k c null.
c.IEnumerator GetEnumerator(): L y ra m t IEnumerator, có th dùng
câu l nh foreach duy t qua toàn b các i t ng trong index này theochi u t ng c a khóa.
Trang 27d.IEnumerator GetEnumerator(Key from, Key till, IterationOrder order):y ra m t IEnumerator v i khóa n m trong kho ng giá tr xác nh b ifrom và till Ta có th duy t qua IEnumerator này v i chi u khóa t ng hay
u c n m t t p h p các i t ng, chúng ta có th s d ng ph ng th c
(OID) là khóa.
Ngoài ra, PERST còn h tr r t m nh cho d li u “không gian” (spatial
data) b ng cách cung c p c u trúc SpatialIndex h tr vi c thêm, xóa, tìm
u trúc RTree c a Guttman v i thu t toán “quadratic split” khá hi u qu
i khóa tìm ki m là các giá tr liên quan n t a ).
B ng d i ây tóm t t các ki u Index c PERST h tr :
Ki u vông,chu i hayki u thamchi u.
B+Tree Storage.CreateIndex
Ki u vông,
B+Tree Storage.CreateThinkIndex
Trang 28p có khóa trùng chu i hayki u thamhi u.
FieldIndex Index v i khóa làt trong các
p Index.
Ki u vông,chu i hayki u thamchi u.
B+Tree Storage.CreateFieldIndex
khóa cógiá tr nhphân.
ng cókh n ng
u tr
B+Tree Storage.CreaateBitIndex
ng có kh n ngu tr
B+Tree Storage.CreateSet
ng có kh n ng
p này có kh n ngco giãn, có th qu n
u tr
Linkho cB+Tree
Storage.CreateScalableSet
Trang 29Index dành cho dli u không gian.
Index dành cho dli u không giannh ng có t a th c.
R-Tree Storage.CreateSpatialIndexR2
Index v i phép Toán
dùng nh ngh a.
i ki u T-Tree Storage.CreateStorageCollection
ng 2.2.5-1 Các ki u Index c PERST h tr :
ây ta không nh ngh a l i chính xác giao tác là gì mà ch n gi nhình dung giao tác là m t t p các l nh ph i th c hi n và ph i ho c là th chi n toàn b các l nh ó ho c là không l nh nào c th c hi n c PERSTcung c p tính n ng b o v s nh t quán c a d li u trong tr ng h p hth ng hay ng d ng có l i hay m t n ph i t t t ng t C ch cài t giao
nh kh i t o khi b t c m t l nh update c s d li u nào c th c hi n vàch m d t t ng minh b ng l nh commit, rollback hay close.
Vi c commit m t giao tác s làm cho các trang (page) b thay i trongquá trình th c hi n giao tác c ghi vào b nh ph ng b (Asynchronous
khác) Công vi c này là công vi c có chi phí r t cao Trung bình vi c nh v
Trang 30i v i các a hi n i là kho ng 10ms, ngh a là ch kho ng 100 thao tácnh v trong 1 giây Thêm vào ó các giao tác th ng ch a các thao tácupdate kho ng vài trang c s d li u nên trung bình ch còn kho ng 10 giaotác m i giây.
c dù v y, hi u su t th c thi s c nâng cao áng k khi ta h n ch s
n th c hi n l nh commit, có ngh a là m t giao tác s l n h n, th c hi nnhi u l nh h n PERST dùng c ch t o bóng (shadow mechanism) trong
vi c th c hi n giao tác Khi m t i t ng c thay i l n u tiên trong
trong giao tác ó thì c ng ch có m t b n copy c a i t ng c t o ra.
trong c s d li u thông th ng và các giao tác dài không th gây ra vi ctràn log giao tác nh các h c s d li u khác L u ý r ng n u ta không g i
thông th ng theo c ch không h tr giao tác.
Khuy t m duy nh t c a vi c giao tác dài h n bình th ng là kh n ngt i nhi u s thay i ã th c hi n c trong giao tác n u giao tác h nghay h th ng g p s c Trong các tr ng h p nh v y, d li u v n m b otính nh t quán (consistency) nh ng các thao tác thay i c s d li u tronggiao tác ó u m t.
Trang 312.3Transparent API:
.NET framework cung c p gói System.Runtime.Remoting nh m h tr vi c
cài t các ng d ng phân tán Ng i l p trình ch c n d n xu t các l p c a
mà còn cho các h th ng d a trên giao th c metaobject (metaobject
cài t giao di n “trong su t” (transparent) cho c s d li u h ng ing này, ngh a là vi c thao tác trên các i t ng persistent hoàn toàn bình
truy xu t nó.
Tuy nhiên có 2 gi i h n khi ta dùng remoting API:
1.Remoting API ch có th áp d ng i v i các thành ph n có t m truyxu t public c a i t ng.
Trang 322.Chi phí c a vi c g i hàm thông qua remoting API cao g p kho ng 100
n so v i g i hàm thông th ng.
Có m t ý t ng khác t o nên s “trong su t” cho PERST d a trên vi c
dùng các thu c tính o (virtual properties) Không gi ng nh Java, C# cung
p c ch cho phép óng gói các thu c tính, thành ph n c a m t l p Ýng ban u r t n gi n: T o ra l p bao b c (wrapper class) s cài t cácthu c tính này Nh v y l p trình viên s c gi i phóng kh i nhi u vi cnh nh t nh không ph i lo n chuy n quá t i hàm recursiveLoading, hay
a riêng nó:
(persistent fields) Thay vì th , ta ph i nh ngh a các thu c tính tr u
ng C# cung c p c ch cho phép ta d dàng làm vi c v i các thu ctính, nên vi c l p trình s n ng n h n.
bình th ng Ta ph i dùng ph ng th c IStorage.CreateClass dùng t op bao b c và t o ra i t ng c a l p này L p này c ng không có hàmkh i t o nào khác ngoài hàm kh i t o m c nh, và hàm kh i t o m c nhnày c ng không làm gì khác ngoài vi c kh i t o các thành ph n không
load t b nh ph ).
Trang 333.Ta c ng không th có thành ph n c a i t ng là m ng các tham
4.S phát sinh l p bao b c nh v y có chi phí cao, làm gi m hi u su tch ng trình n u có nhi u l p.
th i gian th c thi (runtime).
ch s trong m ng các a ch (offset) c a các i t ng trong database.
ph n c a m ng này c g i là m t m c qu n i t ng (object handle), gi
a ch trong database c a i t ng Có 2 b n c a m ng ch m c i t ng
trong PERST, m t là m ng “hi n hành” (current) và m ng còn l i g i là
hai m ng này và có m t bi n ch nh (indicator) âu là m ng “hi n hành”
Trang 34nguyên tr ng PERST s ánh d u trong trang Bitmap c a m ng ch m c i
Lúc giao tác (transaction) c hoàn t t và l nh commit c th c hi n,
ng hay không N u có, PERST c ng s t ng kích th c cho m ng ch m c
khi giao tác commit vì nh v y có th PERST s c p phát cho các i t ngi úng các vùng nh ó, trong khi chúng ta mu n các i t ng g c ch a
hi n thông qua Bitmap nên khi gi i phóng c n ph i làm tr ng m t s bit
trang Bitmap này c ng òi h i vùng nh , và ta có th c ng dùng các vùngnh c a các i t ng b gi i phóng nh trên Rõ ràng u này l i vi ph mtính nh t quán c a c s d li u theo nh lý do v a nêu T t c nh ng utrên chính là lý do t i sao vi c gi i phóng vùng nh trong PERST c chia
u v c p phát b nh nào c phép phát sinh.
Trang 35Sau khi gi i phóng các vùng nh thu c v các i t ng g c, PERST sng lo t ghi các trang b thay i lên a ng b thông tin trên b nh
(indicator) ch ra m ng ch m c i t ng hi n t i trong database thành giá
“bóng” s tr thành m ng hi n t i Ti p theo m t l n n a PERST s ghi trangch a header b thay i c a database lên a, chuy n database sang tr ng tháinh t quán m i Cu i cùng PERST s copy t t c các m c qu n i t ng bthay i t m ng ch m c i t ng “bóng” (tr c ây là hi n t i) sang m ng
i dung c a c hai m ng ch m c i t ng ã ng nh t và PERST có tht u m t giao tác m i.
Bitmap c a các i t ng b thay i có tác d ng gi m th i gian commitgiao tác Không ph i t t c m ng ch m c c copy mà ch có các trang b
nh ã nói trên.
Khi giao tác c b , không cho th c hi n n a b ng l nh Storage.rollback
i vào m ng ch m c i t ng hi n t i, có ngh a là các thay i n u có
nh t và c s d li u l i tr v tr ng thái nh t quán tr c khi th c hi n giaotác.
freehandle list Header c a list c ng c copy và c hai b n c a header này
Trang 36cùng c l u trên header c a database S chuy n qua l i gi a hai b n nàyc th c hi n t ng t nh vi c chuy n qua l i gi a hai m ng ch m c i
c c p phát thêm M ng ch m c i t ng là th duy nh t trong c s dli u không c copy trong quá trình thay i Thay vì th , PERST luôn luôn
d ng hai b n c a m ng này (m t b n hi n t i và m t b n “bóng”).
i t ng ã b xóa Các giá tr OID b t u t 1 c dùng cho các trangBitmap S trang Bitmap l i tùy thu c vào l ng b nh o t i a c a c s
li u Ví d v i 1tetrabyte b nh o thì kích th c trang 8Kb, kích th cn v vùng nh c p phát (allocation quantum) 64 byte và 32K trang Bitmap
riêng cho các trang Bitmap trong m ng ch m c i t ng Các trang Bitmapc c p phát khi c n thi t khi mà kích th c database t ng lên Theo các sli u trên thì rõ ràng i t ng c a ng i dùng u tiên s mang giá tr OID
ng 0x8002 (t c là 32K + 2).
Quá trình ph c h i c s d li u trong PERST c ng n gi n Khi ta m s d li u, PERST s ki m tra xem c s d li u tr c ó có c óng
database), PERST s th c hi n vi c ph c h i (t ng t nh c ch rollbachkã c p phía trên) PERST s làm nh sau:
Trang 37còn l i, các thay i th c hi n tr c ó n u có u không cón hi u l c,PERST l i tr v v tr ng thái nh t quán.
Th t s quá trình recovery ch làm chuy n copy trên (ch nh ng m c qu ncó giá tr khác nhau trên hai m ng ch m c i t ng m i c copy gi m trang c n ghi lên a) và kích th c c a m ng ch m c i t ng c ng nhnên vi c ph c h i di n ra r t nhanh u này giúp gi m th i gian “out-of-service” c a ng d ng.
PERST là c s d li u dành cho l p trình t ng i n gi n và nhanh.u ng d ng c a chúng ta c n có c s d li u n, không th c hi n nh ngthao tác truy xu t d li u quá “l t léo” và cái chúng ta c n là kh n ng l utr , truy xu t, nh v các i t ng trong c s d li u thông qua tham chi uhay qua khóa thì PERST r t thích h p Trong các tr ng h p này PERST scó hi u n ng làm vi c t t h n so v i các c s d li u quan h hay các c s
có th c c u hình l i sao cho có th dùng ít b nh chính và ph khilàm vi c).
Trang 385.Hi u n ng cao (không có các chi phí cho vi c truy n thông, khóa, phântích cú pháp các câu SQL và th c hi n các câu truy v n).
1 Không h tr ngôn ng truy v n.
2 Không thích h p cho vi c h tr a ng i dùng truy c p database (N umu n chúng ta ph i t thi t k m t server riêng, server này s nh n cácyêu c u t client r i tu n t truy xu t database r i m i g i k t qu v choclient).
Trang 39c xác nh trong ph ng th c Storage.Open khi m database (giá tr m cnh c a thông s này là 4Mb) Thông th ng t ng kích th c page pool sng hi u n ng làm vi c c a ch ng trình Nh ng chúng ta ph i l u ý nh ng
m sau tr c khi quy t nh có t ng kích th c page pool hay không.
ng file buffer V y d li u th t s c cache hai l n Tuy nhiên vi ctruy xu t d li u t page pool s nhanh h n do không ph i có các l nh g ihàm h th ng c ng nh chuy n ng c nh (switch context) khi g i hàm.
4 Vi c t o page pool có kích th c quá nh ho c th m chí b ng 0 (giaovi c cache data toàn b cho h u hành) c ng không th vì s gây ra l i.
page pool Có ngh a là page pool ph i c thi t l p cho l n có thch a c các trang này Vì v y, không nên t o page pool có kích th cbé h n 64kb.
u chúng ta ngh r ng m i d li u nên h t trong b nh chính, chúng
c t ng kích th c m i khi có m t trang m i c n a vào b nh chính.
Trang 40Có ngh a là l n l t m i trang s c cache và hi n di n trong b nh
u ý r ng kích th c database trong b nh chính s l n h n trên b nhph vì các i t ng s t n t i trong b nh chính d i c hai d ng: D ng
(unpacked: tham chi u t b cach i t ng).
Trong m t vài ng d ng (nh các ng d ng trên các thi t b di ng), khng l u tr là không c n thi t nh ng các l p bao ch a (container class) c a
Trong tr ng h p này ta s dùng cài t NullFile c a interface IFile cùng v i
nh chính Data trong tr ng h p này s không ph i ghi vào b nh ph
mu n thay i các thông s này, ta s ph i biên d ch l i PERST.
Mô t
ng này s c t ng kích th c khi c n thi t.Vi c c p phát l i vùng nh cho m ng này có chi