Tải bản đầy đủ (.pdf) (138 trang)

Quản lý hệ thống thông tin địa lý thành phố Hồ Chí Minh

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">

TRNG 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

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

I 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

</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">

CHNG 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à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">

CHNG 2 :<sup>ng quan v PERST</sup>

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">

2.3Transparent API:

<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>

×