Là m t công ngha trên máy tính xây Thông tin phi không gian thông tin thu c tính... Riêng PERST.NET có h tr c vi c phát tri n trên môi tr ng compact.NET framework nên có kh PocketPC...
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 ng
y, 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 , trao
i 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à kh
ng cho phép nh ng ch c ch n s không tránh kh i nh ng sai sót Chúng
em 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ý – 0112187Nguy n Sao K - 0112186
Header Page 3 of 126.
Trang 4Ch ng 4: Gi i thi u v GIS: gi i thi u t ng quan v GIS, các gi i pháp và ng
ng 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ình
tr 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
Header Page 4 of 126.
Trang 5C L C
I C M N 3
TÓM T T LU N V N 4
DANH SÁCH CÁC HÌNH 8
DANH SÁCH CÁC B NG 10
T S KHÁI NI M, THU T NG VÀ T VI T T T 11
CH NG 1 : Hi n tr ng và yêu c u 15
1.1 Hi n tr ng: 15
1.2 Gi i quy t bài toán: 16
CH NG 2 : T ng quan v Perst 17
2.1 Gi i thi u: 17
2.2 c tính: 18
2.2.1 Persistency by reachability: 18
2.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
2.4 C ch th c hi n giao tác (Transaction): 33
2.5 Nh ng tr ng h p nên dùng PERST: 37
2.6 Các thông s c a PERST: 38
2.7 S l c v RTree: 44
2.7.1 Gi i thi u: 44
2.7.2 S l c v d li u không gian (spatial data) và các gi i pháp: 44
2.8 So sánh v i các h qu n tr c s d li u h ng i t ng khác: 45
CH NG 3 : Gi i thi u v mô hình Topology 50
3.1 Gi i thi u: 50
3.2 Các khái ni m c b n trong Topology: 50
3.3 Các lo i i t ng trong Topology: 51
3.4 Các c p c a Topology: 53
Header Page 5 of 126.
Trang 63.5 MBR – Minimum Bounding Rectangle: 59
CH NG 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.5.2 k-d Tree: 68
4.5.3 R-Tree: 69
4.5.4 R*-Tree: 70
4.5.5 R+-Tree: 71
4.6 ng d ng b n : 72
4.6.1 Các ki u b n : 72
4.6.2 Các i t ng c a b n : 72
4.7 ng d ng GIS trên PocketPC: 73
CH NG 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
5.3.2 Abstract Model: 85
CH NG 6 : T ng quan v PocketPC 89
6.1 T ng quan v PocketPC: 89
6.2 Kh n ng l p trình trên PocketPC: 89
6.3 M t s v n khi l p trình ng d ng trên PocketPC: 89
6.3.1 T c và các h tr kh n ng hi n th : 89
6.3.2 Kh n ng và hình th c l u tr : 90
6.3.3 T ng tác gi a ng i s d ng và thi t b : 91
6.4 Các gi i pháp cho ng d ng b n trên PocketPC: 92
6.4.1 Yêu c u chung: 92
Header Page 6 of 126.
Trang 76.4.2 V n t i u t c hi n th : 93
6.5 T ch c d li u b n trên PocketPC: 93
CH NG 7 : ng d ng b n : 95
7.1 Phân tích và xác nh yêu c u: 95
7.2 Phân tích - thi t k : 96
7.2.1 S s d ng: 96
7.2.2 c t Use-Case chính: 97
7.2.2.1 Tìm ki m ng i: 97
7.2.2.2 Tìm ki m Region: 98
7.2.2.3 Tìm ng i ng n nh t: 99
7.2.2.4 Tìm chu trình t i u: 101
7.2.3 S l p Class Diagram: 102
7.2.3.1 S t ng quát: 102
7.2.3.2 S l p d li u: 103
7.2.3.3 S l p v : 103
7.2.3.4 S s ki n: 104
7.2.4 Mô t các l p: 104
7.2.5 Các l u ho t ng: 111
7.3 Thi t k giao di n: 124
7.3.1 Giao di n trên Desktop: 124
7.3.2 Giao di n trên PocketPC: 131
7.4 Cài t: 131
CH NG 8 : K t Lu n, ánh giá và h ng phát tri n 132
8.1 K t lu n, ánh giá: 132
8.2 H ng phát tri n: 132
CH NG 9 : Tài li u tham kh o 133
CH NG 10 : Ph l c 134
10.1 Bài toán tìm ng i ng n nh t gi a hai m: 134
10.1.1 Phát bi u bài toán: 134
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
Header Page 7 of 126.
Trang 8DANH SÁCH CÁC HÌNH
Hình 3.2-1 Các i t ng trong mô hình Topology 51
Hình 3.4-1 Quan h Topology c p 0 56
Hình 3.4-2 Quan h Topology c p 1 và 2 57
Hình 3.4-3 Quan h Topology c p 3 58
Hình 4.2-1 Thông tin c n l u tr 61
Hình 4.2-2 So sánh Raster và Vector 64
Hình 4.3-1 Ph ng pháp Scanning 65
Hình 4.5.1-1 Cây t phân 67
Hình 4.5.2-1 K-D Tree 68
Hình 4.5.3-1 R-Tree 69
Hình 4.5.5-1 R+-Tree 71
Hình 4.6.2-1 Các i t ng chính trong b n .73
Hình 5.1-1 H phân c p các ki u d li u hình h c c a OpenGIS .76
Hình 5.3.1-1 L p khái ni m 85
Hình 7.2.1-1 S s d ng t ng quát 96
Hì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.2.3-1 Use Case – Tìm ng i ng n nh t 99
Hình 7.2.2.4-1 Use-Case - Tim chu trình t i u 101
Hình 7.2.3.1-1 S t ng quát 102
Hình 7.2.3.2-1 S l p d li u 103
Hình 7.2.3.3-1 S l p v 103
Hình 7.2.3.4-1 S s ki n 104
Hình 7.2.4-1 L p CNode 106
Hình 7.2.4-2 L p CEdge 109
Hình 7.2.5-1 Sequense Diagram: Hi n th b n .112
Hình 7.2.5-2 Collabration Diagram: Hi n th b n .113
Hình 7.2.5-3 Sequence Diagram: Tìm ng ng n nh t 113
Hình 7.2.5-4 Collabration Diagram: Tìm ng ng n nh t 114
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
Header Page 8 of 126.
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
Hình 7.3.1-2 Toolbar c a ch ng trình 124
Hình 7.3.1-3 Các ch c n ng chính trên thanh công c 127
Hình 7.3.1-4 Thanh th c n File 128
Hình 7.3.1-5 Thanh th c n View 128
Hình 7.3.1-6 Khung nhìn b n thu nh 130
Hình 7.3.1-7 Khung Layer 130
Hình 7.3.1-8 Khung hi n th thông tin i t ng 131
Header Page 9 of 126.
Trang 10DANH SÁCH CÁC B NG
ng 2.2.4-1 Các m i quan h gi a 2 l p A va B 25
ng 2.2.5-1 Các ki u Index c PERST h tr : 29
ng 2.6-1 H ng s c nh ngh a s n trong l p StorageImpl 42
ng 2.8-1 So sánh các c tính c a các h qu n tr 47
ng 2.8-2 B ng so sánh k t qu c a các h qu n tr c s d li u h ng i t ng 49
ng 3.4-1 Các c p Topology trong các l p VPF 55
ng 3.4-2 Các c t c yêu c u nh ngh a quan h Topology trong VPF 56
ng 3.5-1 nh ngh a khung ch nh t nh nh t MBR 59
ng 4.2-1 B ng so sánh ki u d li u Raster va Vector 64
ng 7.1-1 Các ch c n ng chính 96
ng 7.2.4-1 L p CDatabase 105
ng 7.2.4-2 L p CMapView 105
ng 7.2.4-3 L p CMapEvent 106
ng 7.2.4-4 Thu c tính l p CNode 107
ng 7.2.4-5 Ph ng th c l p CNode 108
ng 7.2.4-6 Thu c tính l p CEdge 110
ng 7.2.4-7 Ph ng th c l p CEdge 111
ng 7.3.1-1 Các ch c n ng chính trên thanh th c n 129
Header Page 10 of 126.
Trang 12Information System ) lý Là m t công ngh
a trên máy tính xây
Thông tin phi không gian
( thông tin thu c tính )
Trang 13a trên nhân c a H
u hành WindowsCE
Trang 14Region i t ng vùng ây không c p n
Trang 15CH NG 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 v
n 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ác
th ng th y các h c s d li u M c dù n gi n nh v y nh ng PERST
n h tr y tính ACID trong vi c th c hi n giao tác (transaction) và h
tr 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
Header Page 15 of 126.
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 a
t 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ích
p, 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 ta
n 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
Header Page 16 of 126.
Trang 17ch t ch c a PERST v i m t ngôn ng l p trình xác nh Hi n t i PERST
ch h tr cho 2 ngôn ng l p trình là Java và C#
lý c bi t khác Nh v y, PERST có kh n ng cung c p c “tính trong
su 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
007, PERST t o database nhanh g p 100 l n và th c hi n phép duy t qua các
i t ng trong c s d li u nhanh g p 10 l n so v i Ozone Và khi so v i
Pro, PERST nhanh h n g p 4 l n
PERST là m t h c s d li u t ng i nh (so v i các h c s d li ukhác) v i ph n lõi ch g m kho ng 5000 dòng mã Yêu c u c u hình c a
th ng th y các h c s d li u M c dù n gi n nh v y nh ng PERST
n h tr y tính ACID trong vi c th c hi n giao tác (transaction) và h
tr vi c ph c h i (recovery) t ng i nhanh khi h th ng g p s c
Header Page 17 of 126.
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 ng
di n khác, các tính n ng c a hai b n là nh nhau Riêng PERST.NET có h
tr c vi c phát tri n trên môi tr ng compact.NET framework nên có kh
PocketPC
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 Persistent u 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
Header Page 18 of 126.
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 (container class) 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ày
c 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
Header Page 19 of 126.
Trang 20ng thành các m ng byte và l u chúng vào database Các l p này s
c ánh d u là Serializable và không c ch a các tham chi u n các
i 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 u
c nêu trên
Ki u Link: i di n cho quan h m t-nhi u trong mô hình c s d
li u Hay nhìn theo góc l p trình ây chính là ki u m ng ng ch a các
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)
Header Page 21 of 126.
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
là:
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
Header Page 22 of 126.
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ác
i t ng trong khi v n cho phép vi c này, nói cách khác là PERST h tr
p 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 a
t 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 int sang 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ành
ph 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
Header Page 23 of 126.
Trang 24ch thay i c u trúc d li u t ng c a PERST Trong các tr ng h p này
ng tham chi u (references) trong C# Nh ng trong nhi u tr ng h p chúng
giao di n (interface) Link dùng cho các tr ng h p này Giao di n này a ra
ng i t ng r i m i truy xu t
T p h p (relation) có 2 d ng:
1 D ng “nhúng” (embedded relation): Các tham chi u n các i
2 D ng c l p (standalone relation): Khi ó relation là m t i
ng riêng bi t, ch a các tham chi u n các i t ng
C hai d ng trên u cài t giao di n Link C th Embedded
B ng sau ây minh h a các m i quan h gi a 2 l p A và B:
Header Page 24 of 126.
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 i
ng 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 i
ng theo khóa d nhiên là t ng i ph c t p Và vi c cài t trong PERST
n 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.createFieldIndex i v i FieldIndex Có th có vài
Header Page 25 of 126.
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
Header Page 26 of 126.
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 i from 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 hay
ki u thamchi u
B+Tree Storage.CreateIndex
Ki u vông,
B+Tree Storage.CreateThinkI
ndex
Header Page 27 of 126.
Trang 28p có khóa trùng chu i hay
ki u thamchi u
Storage.CreateScalableSet
Header Page 28 of 126.
Trang 29R-Tree Storage.CreateSpatialI
ndexR2
SortedCollection
th 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
Header Page 29 of 126.
Trang 30i v i các a hi n i là kho ng 10ms, ngh a là ch kho ng 100 thao tác
nh 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 n nhi 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 ng
t 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
Header Page 30 of 126.
Trang 312.3 Transparent 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 i
ng 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 truy
xu t public c a i t ng
Header Page 31 of 126.
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 c
nh 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 o
p 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àm
kh 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 )
Header Page 32 of 126.
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 t
ch 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 ng
i ú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ùng
nh 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
Header Page 34 of 126.
Trang 35Sau khi gi i phóng các vùng nh thu c v các i t ng g c, PERST s
ng 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 trang
ch a header b thay i c a database lên a, chuy n database sang tr ng thái
nh 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ó th
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
Header Page 35 of 126.
Trang 36cùng c l u trên header c a database S chuy n qua l i gi a hai b n này
c 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 d
li 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 c
n 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 Bitmap
c c p phát khi c n thi t khi mà kích th c database t ng lên Theo các s
li 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:
Header Page 36 of 126.
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 n
có 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 u
tr , 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 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)
Header Page 37 of 126.
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 u
mu 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 c
nh c a thông s này là 4Mb) Thông th ng t ng kích th c page pool s
ng 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 (giao
vi 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ó th
ch a c các trang này Vì v y, không nên t o page pool có kích th c
bé 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
Header Page 39 of 126.
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 nh
ph 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), kh
ng 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
cnh
Mô t
dbDefaultInitTindexSize
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
Header Page 40 of 126.