Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.51 MB, 138 trang )
<span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">
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
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">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à 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 tốn chính trong ch ng trình
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><small>2.2.2 Semi transparent object loading: ...21</small>
<small>2.2.3 Automatic scheme evaluation...23</small>
<small>2.2.4 Relation: ...24</small>
<small>2.2.5 Index: ...25</small>
<small>2.2.6 Giao tác (Transaction):...29</small>
<small>2.3 Transparent API: ...31</small>
<small>2.3.1 Dùng.NET Remoting API: ...31</small>
<small>2.3.2 Dùng các thu c tính o (virtual properties):...32</small>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><small>3.5 MBR – Minimum Bounding Rectangle: ...59</small>
<small>CHNG 4 : Gi i thi u v GIS ...60</small>
<small>4.1 Gi i thi u v các ng d ng và gi i pháp v GIS: ...60</small>
<small>4.2 Mơ hình d li u c a thông tin a lý: ...61</small>
<small>4.3 Thu th p d li u: ...64</small>
<small>4.4 Các gi i thu t nghiên c u v GIS: ...66</small>
<small>4.5 Các c u trúc d li u không gian trong GIS: ...67</small>
<small>4.5.1 Cây t phân (Quad Tree):...67</small>
<small>4.7 ng d ng GIS trên PocketPC: ...73</small>
<small>CHNG 5 : Gi i thi u v chu n OpenGIS ...75</small>
<small>5.1 Các ki u d li u hình h c c a OpenGIS: ...75</small>
<small>5.2 OpenGIS Specification (c t OpenGIS):...76</small>
<small>5.2.1 Các khái ni m: ...76</small>
<small>5.2.2 Nh ng d ch v OpenGIS (OpenGIS Services ):...78</small>
<small>5.2.3 M t mơ hình nh ng c ng ng thông tin (Information Communities Model ): ...79</small>
<small>5.2.4 c m: ...79</small>
<small>5.2.5 Phân lo i: ...81</small>
<small>5.3 OpenGIS Abstract Specification: ...82</small>
<small>5.3.1 Essential Model (mơ hình b n ch t ): ...83</small>
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><small>7.3.1 Giao di n trên Desktop: ...124</small>
<small>7.3.2 Giao di n trên PocketPC: ...131</small>
<small>10.1.2 Gi i quy t bài tốn:...134</small>
<small>10.2 Bài tốn tìm chu trình t i u ...136</small>
<small>10.2.1 Phát bi u bài toán...136</small>
<small>10.2.2 Gi i quy t bài tốn:...137</small>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8"><small>Hình 7.2.2.1-1 Use Case - Tìm ki m Edge...97</small>
<small>Hình 7.2.2.2-1 Use Case: Tìm ki m Region...98</small>
<small>Hình 7.2.5-5 Sequence Diagram: Tìm Edge...115</small>
<small>Hình 7.2.5-6 Collabration Diagram: Tìm Edge ...116</small>
<small>Hình 7.2.5-7 Sequence Diagram: Tìm chu trình t i u ...117</small>
<small>Hình 7.2.5-8 Collabrotion Diagram: Tìm chu trình t i u ...118</small>
<small>Hình 7.2.5-9 Sequence Diagram: D ch chuy n vùng nhìn ...119</small>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><small>Hình 7.2.5-10 Collabrotion Diagram: Di chuy n vùng nhìn ...120</small>
<small>Hình 7.2.5-11 Sequence Diagram: T l l i b n ...120</small>
<small>Hình 7.2.5-12 Collaboration Diagram: T l l i b n ...121</small>
<small>Hình 7.2.5-13 Sequence Diagram: Tìm a m ...121</small>
<small>Hình 7.2.5-14 Collaboration Diagram: Tìm a m ...122</small>
<small>Hình 7.2.5-15 Sequence Diagram: Tìm giao l ...123</small>
<small>Hình 7.2.5-16 Collaboration Diagram: Tìm giao l ...123</small>
<small>Hình 7.3.1-1 Khung nhìn t ng quát v giao di n...124</small>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">T S KHÁI NI M, THU T NG VÀ T VI T T T
OODBMS Oriented DatabaseManagement System)
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Information 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 …
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">u hành WindowsCE
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Region 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.
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">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àiHồ, … ã 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.
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">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à hồn tồ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.
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">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 .
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">Có 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 hồ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 ngun 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 ngun do khơng có t ti ng Vi t thay th ng n g n mà úngngh a..
<i>p Persistentu có kh n ng l u tr (persistent hay còn d ch là b n v ng).</i>
t bây gi , ta s g i t t các i t ng này là các i t <i>ng persistent. Các</i>
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
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">Database có m t i t ng <i>c bi t g i là root. </i> 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 <i>ng persistent</i>
nh trên ho c truy xu t b ng cách dùng các i t <i>ng bao ch a (containerclass) nh Index,Link hay Relation. Không gi ng nh các h c s d li u</i>
ng i t ng khác, ch có th có duy nh t m t i t <i>ng root trong c s</i>
<i>a các l p persistent c ng b gi i h n trong các ki u sau:</i>
Ki u vô h ng (scalar type):
Ki u <i>chu i: Ki u System.String.</i>
Ki u ngày <i>tháng: Ki u System.DateTime.</i>
Ki u tham chi u n các i t ng persistent: các l p k th a t l p
<i>Persistent hay các giao di n (interface) k th a t giao di n IPersistent.</i>
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
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">ng 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 <i>ng persistent khác.</i>
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 <i>ng persistent.</i>
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 hồn tồn ch u trách nhi m v vi c l u i t ng nào vào c s d li u.
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">n 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 hồn tồ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.
<i>(return) giá tr true. Có ngh a là PERST s load (vào b nh chính) m t cách</i>
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 <i>ng th c recursiveLoading trong m t vài l p b ng cách tr v (return)</i>
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">load m t cách t ng minh b ng ph <i>ng th c Persistent.Load. V y ta th y</i>
load các i t ng t b nh ph vào b nh chính.
<i>thi t, khơng load t t c theo c ch recusiveLoading. Ngoài ra, vi c truy xu t</i>
1.M i l p có kh n ng l u tr <i>c (persistent capable class) </i> 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 … ).
<i>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</i>
nh chính.
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">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á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>i t ki u intsang float hay int sang long,… nh ng ng</i> 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
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">ch 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
<i>giao di n (interface) Link dùng cho các tr</i> 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:
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">Ki 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
<i>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> ing thơng qua khóa. Trong mơi tr <i>ng.NET, l p Hashtable là m t ví d</i>
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 <i>t các giao di n (interface)</i>
tr t <i>ng ng c a khóa ó. Cịn giao di n FieldIndex thì dùng </i> 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>i Index hay Storage.createFieldIndexi v i FieldIndex. Có th có vài</i>
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="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 <i>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.</i>
<i>c.IEnumerator GetEnumerator(): L y ra m t IEnumerator, có th dùng</i>
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.
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27"><i>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 ifrom và till. Ta có th duy t qua IEnumerator này v i chi u khóa t ng hay</i>
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.
Ngồi ra, PERST cịn h tr r t m nh cho d li u “không gian” (spatial
<i>data) b ng cách cung c p c u trúc SpatialIndex h tr vi c thêm, xóa, tìm</i>
u trúc RTree c a Guttman v i thu t tố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
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">p 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
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">Index 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 tồ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 <i>ng minh b ng l nh commit, rollback hay close.</i>
<i>Vi c commit m t giao tác s làm cho các trang (page) b thay </i> i trongquá trình th c hi n giao tác c ghi vào b nh ph <i>ng b (Asynchronous</i>
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
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">i 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
<i>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</i>
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.
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31"><i>.NET framework cung c p gói System.Runtime.Remoting nh m h tr vi c</i>
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
<i>mà còn cho các h th ng d a trên giao th c metaobject (metaobject</i>
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 <i>ng persistent hồn tồn bình</i>
truy xu t nó.
<i>Tuy nhiên có 2 gi i h n khi ta dùng remoting API:</i>
<i>1.Remoting API ch có th áp d ng </i> i v i các thành ph n có t m truyxu t public c a i t ng.
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32"><i>2.Chi phí c a vi c g i hàm thông qua remoting API cao g p kho ng 100</i>
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
<i>dùng các thu c tính o (virtual properties). Không gi ng nh Java, C# cung</i>
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 <i>n gi n: T o ra l p bao b c (wrapper class) s cài </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 <i>n chuy n quá t i hàm recursiveLoading, hay</i>
a riêng nó:
<i>(persistent fields). Thay vì th , ta ph i nh ngh a các thu c tính tr u</i>
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 <i>ng th c IStorage.CreateClass dùng </i> 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 ngồi vi c kh i t o các thành ph n không
load t b nh ph ).
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">3.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.
<i>th i gian th c thi (runtime).</i>
<i>ch s trong m ng các a ch (offset) c a các </i> 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 <i>ng (object handle), gi</i>
a ch trong database c a i t ng. Có 2 b n c a m ng ch m c i t ng
<i>trong PERST, m t là m ng “hi n hành” (current) và m ng còn l i g i là</i>
hai m ng này và có m t bi n ch <i>nh (indicator) âu là m ng “hi n hành”</i>
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">nguyê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.
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">Sau 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 <i>c b , không cho th c hi n n a b ng l nh Storage.rollback</i>
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
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">cù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:
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">cò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).
</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">5.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).
</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">c 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.
</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">Có 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
</div>