Thông tin phi không gian thông tin thu c tính... 2.2.3 Automatic scheme evaluation PERST h tr “lazy automatic scheme evaluation”... C th Embedded Standalone relation thì dùng ph ng th c
Trang 2KHOA CÔNG NGH THÔNG TIN MÔN CÔNG NGH PH N M M
e&f
NGUY N TH LÝ - 0112187 NGUY N SAO K - 0112186
Trang 3-2-IC M N
Chúng em chân thành cám n Khoa Công ngh Thông tin, tr ng ih cKhoa 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
Chúng em chân thành cám n th y Nguy n Minh Nam ã t n tình h ng
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
Trang 4it ng khác.
Ch 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à 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
Trang 5-4-C L -4-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
Trang 62.8 So sánh v i các h qu n tr c s d li u h ng it 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 it ng trong Topology: 51
3.4 Các c p c a Topology: 53
-5-3.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 it 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
Trang 75.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 ts 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
-6-6.4.2 V n t i ut 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
Trang 8CH 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
-7-DANH SÁCH CÁC HÌNH
Hình 3.2-1 Các it 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 it 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
Trang 9Hì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
-8-Hì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 it ng 131
Trang 10-9-DANH 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 it 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
Trang 11ng 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
10
OODBMS
(Object-Oriented Database
Management System)
qu n tr c s d li u
ng i t ng
li u h ng i t ng
Trang 12Nhúng - -Embedded Có ngh a là PERST c
tích h p ch t vào ch ngtrình, g n nh kho ngcách gi a database và
ch ng trình r t nh ,PERST tr c ti p l u d
li u trong các i t ng
a ch ng trình vàkhông c n có nh ng n
mã làm công vi c chuy n
li u t c s d li uthành i t ng và ng ci
ng l i giao thôngGIS ( Geography th ng thông tin a
Trang 14T S KHÁI NI M, THU T NG- 11 - VÀ T VI T T T
12
a trên máy tính xây
Bao g m hai d ng:
ng hình h c:
mô t các c mhình d ng, v trí Ví
nh t a c a
m, ng…
D ng Topology:
mô t quan h gi acác i t ng hình
c Ví d nh
nh ng vùng nào k
i m t vùng xácnh
Thông tin phi không gian
( thông tin thu c tính )
Trang 1513
-ngPDA ( Personal Digital
Assistant )
Thi t b n t h tr
cá nhân, giúp ng i s
ng l u tr các thôngtin cá nhân, công vi c
n thi t c ng nh các
ph n m m t i thi u trên
t thi t b nh g nPocket PC Khái ni m này có th
dùng ch :
+ H u hànhnhúng Pocket PC doMicrosoft phát tri n
a trên nhân c a H
u hành WindowsCE
+ Các thi t bPDA s d ng h uhành Pocket PC
Trang 1614
-CH
NG 1 : Hi n tr ng và yêu c u
1.1 Hi n tr ng:
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ài
Trang 17Hoà, … ã 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
tr ng compact.NET framework nên có kh n ng phát tri n ng d ng trêncác thi t b di ng dùng WinCE hay PocketPC
15
-Vì 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
1.2 Gi i quy t bài toán:
Trang 18t 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ìnhTopology th hi n t t nh ng òi h i trên (Mô hình này s c c p sautrong 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
Bài toán s c gi i quy t ch y u b ng s ph i h p các ki n th c vGIS,PERST và ho
16
Trang 19ch 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#
Không gi ng v i các h qu n tr c s d li u h ng i t ng khác(OODBMSes), PERST không c n dùng n các b biên d ch hay các b ti n
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
li u h ng i t ng khác vi t b ng Java) V i gi i h n (benchmark)
007, PERST t o database nhanh g p 100 l n và th c hi n phép duy t qua các
it ng trong c s d li u nhanh g p 10 l n so v i Ozone Và khi so v i
t h c s d li u h ng it ng th ng m i khác là ObjectStore PSEPro, 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 aPERST t ng i th p H n n a, PERST c ng không c n n “s qu n tr ”
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
17
Trang 20-Có hai b n cài t c a PERST, m t b ng ngôn ng Java và m t b ng C#.
n cài t trên C# c chuy n t Java dùng b chuy n i Java sang 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
ng phát tri n ng d ng trên các thi t b di ng dùng WinCE hayPocketPC
Trong ph n này chúng ta s i vào các tính ch t quan tr ng nh t c aPERST 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
2.2.1 Persistency by reachability:
Trong ng d ng dùng PERST, m i i t ng c a các l p c d n xu t t
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
it ng này ct ng l u vào database khi nó c tham chi u t m t
it ng persistent khác và ph ng th c store c a it ng khá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 2118
-Database có m t it ng c bi t g i là root. it ng root này là i
ng duy nh t c truy xu t m t cách c bi t (dùng ph ng th c
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 it 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 it ng khác, ch có th có duy nh t m t it ng root trong c s
u vô h ng (scalar type):
Bool, int, short, double, enum …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 it 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.
Trang 22IPersistent hay t giao di n IValue và c ánh d u là Serializable C
ch Serialization chu n s c dùng óng gói d li u c a các i
19
-ng 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
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 23nh ph
Cách th hai là dùng ph ng th c Persistent.Modify: Ph ng th c này chánh d u các i t ng r ng chúng ã b thay i ch không l u ngay l p t cvào database Cách này c bi t h u d ng khi it ng c thay i nhi u
20
-n tro-ng 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
2.2.2 Semi transparent object loading:
Nh ã c p trên, PERST không dùng b t c b biên d ch hay ti n x
lý c bi t nào Và vì C# không cung c p thông tin v các tr ng thái(behavior) hay s thay i tr ng thái các it 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
su t” (transparent) c (ngh a là không th truy xu t các it ng c
u tr và không c l u tr m t cách hoàn toàn gi ng nhau vì ta không thphân bi t c khi nào ta ang truy xu t vào it ng c l u tr haykhô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
Giao di n IPersistent cung c p cho chúng ta ph ng th c
(return) giá tr true Có ngh a là PERST s load (vào b nh chính) m t cách
quy các it ng c tham chi u t m t it ng ngu n khi it ngngu n này c load Có ngh a là c ch này s gây ra vi c load ng m nh
Trang 24toàn b các it 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 it ng lên b nh chính
(do c ch recursiveLoading gây ra), chúng ta ph i quá t i (overload)
ph ng th c recursiveLoading trong m t vài l p b ng cách tr v (return) giá tr false trong hàm Các it ng c tham chi u t các i t ngthu c các l p ã nói trên s không c load ng m nh n a mà ph i c
21
-load m t cách t ng minh b ng ph ng th c Persistent.Load V y ta th y
ng ph ng th c recursiveLoading có th dùng u khi n cách th cload các i t ng t b nh ph vào b nh chính
u ý r ng các it ng dùng ”ch a” các it ng khác (container
thi t, không load t t c theo c ch recusiveLoading Ngoài ra, vi c truy xu t
các i t ng thành ph n c a m t l p ki u container u thông qua các
ph ng th c c a nó
PERST dùng ph ng th c kh i t o m c nh (không có tham s ) kh i
ob c ban u các it ng c load t b nh ph u này có ngh alà:
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 … )
Trang 25o 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
22
-Tó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
it 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 it ng Ch có các l p
“ch a” các it ng khác là ph i load t ng minh các it ng mà nó
ch a (vì các l p này ã m c nh c overload ph ng th c
recursiveLoading có giá tr tr v (return) false).
2.2.3 Automatic scheme evaluation
PERST h tr “lazy automatic scheme evaluation” Khi nh ngh a c a
t l p b thay i (thay iv s l ng bi n thành viên, thay i v ki u
a bi n thành viên…), PERST s chuy n các it ng ã c load sang
nh d ng m i N u it ng ó trong quá trình ho t ng có thay i và
Trang 26n ph i l u, nó s cl ud i d ng m i PERST có kh n ng h tr các
ki u thay i nh d ng sau:
1.Các thay i “t ng thích” l n nhau gi a các ki u d li u vô
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 ukhông t ng thích i v i các thành ph n…) u không c qu n lý b i c
ng tham chi u (references) trong C# Nh ng trong nhi u tr ng h p chúng
ta c n n quan h m t-nhi u hay quan h nhi u-nhi u PERST cung c p
giao di n (interface) Link dùng cho các tr ng h p này Giao di n này a ra
Trang 272 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 it ng
C hai d ng trên u cài t giao di n Link C th Embedded
Standalone relation thì dùng ph ng th c Storage.createRelation.
B ng sau ây minh h a các m i quan h gi a 2 l p A và B:
24
-Ki u quan h Object A Object B
t-nhi u Link bref; A aref;
Nhi u-m t B bref; Link aref;
Nhi u-nhi u Link bref; Link aref;
Trang 28ng 2.2.4-1 Các m i quan h gi a 2 l p A va B
2.2.5 Index:
Thông th ng it ng c truy xu t t m t it ng khác b ng tham
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)
Index và FieldIndex Giao di n Index dùng cho các khóa c l p và các giá
tr t ng ng c a khóa ó Còn giao di n FieldIndex thì dùng l p indexcho các it ng v i khóa chính là m t thành ph n c a it ng
Index c t o trong PERST b ng ph ng th c Storage.createIndex i
i Index hay Storage.createFieldIndex i v i FieldIndex Có th có vài
cách cài t Index nh ng hi n t i PERST ch dùng B+Tree cài t
25
-(B+Tree là c u trúc d li u hi u qu nh t cho database trên b nh ph ) Các
Trang 29ph ng th c c a giao di n Index và FieldIndex cho phép thêm, xóa, tìm
ki m it 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 :
a.IPersistent get(Key key): Ch n it ng b ng khóa chính xác v i khóanày nên là khóa duy nh t c a it ng
b.IPersistent[] get(Key from,Key till): L y ra m t m ng it ng có khóa
Trang 30m 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 it ng trong index này theochi u t ng c a khóa
26
-d.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
Ki u vông,chu i hay
ki u thamchi u
B+Tree Storage.CreateIndex
Index Nh trên nh ng áp
ng cho tr ng
Ki u vông,
B+Tree Storage.CreateThinkI
ndex
Trang 31Storage.createSet T p h p (set) c cài t b ng B+Tree v i object ID(OID) là khóa.
Ngoài ra, PERST còn h tr r t m nh cho d li u “không gian” (spatial
Trang 32data) b ng cách cung c p c u trúc SpatialIndex h tr vi c thêm, xóa, tìm
ki m các it ng “không gian” d dàng SpatialIndex c cài t b ng
u trúc RTree c a Guttman v i thu t toán “quadratic split” khá hi u qu
Trang 33trong vi c tìm ki m các it ng R2 (tìm ki m các it ng không gian
i khóa tìm ki m là các giá tr liên quan n t a )
Trang 38B ng d i ây tóm t t các ki u Index c PERST h tr :
27
Trang 39ki u thamchi u.
B+Tree Storage.CreateFieldIn
dex
BitIndex BitIndex dùng
tìm i t ng v ikhóa cógiá tr nhphân
Storage.CreateScalableSet
i ki u T-Tree Storage.CreateStorage
Collection
Trang 40nh 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
29
-i 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