1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng phần mềm mã nguồn mở hệ quản trị CSDL hướng đối tượng perst xây dựng ứng dụng quản lý hệ

139 42 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 139
Dung lượng 3,73 MB

Nội dung

Chi phí cúa càc h¾ quán tr% co só du li¾u thvong mai neu có dùng.2.Sn khó khan và có khi là “rac roi” trong cách l¾p trình giao tiep vói các co só du li¾u phúc tap có nhieu báng, quan h¾

Trang 1

TRUèNG ÐAI HOC KHOA HOC TU NHIÊN

KHOA CÔNG NGH½ THÔNG TIN B® MÔN CÔNG NGH½ PHAN MEM

THÔNG TIN бA LÝ THÀNH PHO HCM

KHÓA LU¾N CÚ NHÂN TIN HOC

TpHCM, 2005

Trang 2

TRUèNG ÐAI HOC KHOA HOC TU NHIÊN

KHOA CÔNG NGH½ THÔNG TIN B® MÔN CÔNG NGH½ PHAN

THÔNG TIN бA LÝ THÀNH PHO HCM

KHÓA LU¾N CÚ NHÂN TIN HOC GIÁO VIÊN HUéNG DAN Th.s NGUYEN MINH NAM

Trang 3

NIÊN KHOÁ 2001-2005

Trang 4

LèI CÁM ÐN

Chúng em chân thành cám on Khoa Công ngh¾ Thông tin, trvòng Ðaihoc Khoa hoc Tn nhiên tao dieu ki¾n cho chúng em thnc hi¾n de tài lu¾nvan tot nghi¾p này

Chúng em chân thành cám on thay Nguyen Minh Nam dã t¾n tình hvóngdan, chí báo chúng em trong suot thòi gian thnc hi¾n de tài

Chúng em chân thành cám on quý thay cô trong khoa dã t¾n tình giángday, trang b% cho chúng em nhung kien thúc quý báu trong nhung nam hocvùa qua

Chúng con xin nói lên lòng biet on sâu sac doi vói cha me, nhung ngvòi

dã cham sóc, nuôi day chúng con thành ngvòi và luôn d®ng viên tinh thancho chúng con

Và cung chân thành cám on các anh ch% và ban bè dã úng h®, giúp dõ,trao doi kien thúc, kinh nghi¾m và d®ng viên chúng em trong thòi gian hoct¾p và nghiên cúu

M¾c dù chúng em dã co gang hoàn thành lu¾n van trong pham vi và khánang cho phép nhvng chac chan se không tránh khói nhung sai sót Chúng

em kính mong nh¾n dvoc sn cám thông và t¾n tình chí báo cúa quý thay cô

và các ban

Tp.Ho Chí Minh, tháng 7 nam 2005 Nguyen Th% Lý – 0112187 Nguyen Sao Ky - 0112186

Trang 5

TÓM TAT LU¾N VAN

Lu¾n van dvoc to chúc thành các phan chính nhv sau:

Chvong 1: Giói thi¾u tam quan trong, mnc tiêu, pham vi cúa de tài, các co só

lý thuyet và hvóng tiep c¾n

Chvong 2: Cách to chúc co só du li¾u hvóng doi tvong PERST và nhung so sánh vói các cách to chúc co só du li¾u quan h¾ và các h¾ co só du li¾u hvóng doi tvong khác

Chvong 3: Giói thi¾u ve mô hình Topology: nêu lên nhung khái ni¾m co bán, các doi tvong trong Topology và các cap Topology

Chvong 4: Giói thi¾u ve GIS: giói thi¾u tong quan ve GIS, các giái pháp và úng dnng ve GIS và úng dnng GIS trên PocketPC

Chvong 5: Giói thi¾u ve chuan OpenGIS

Chvong 6: Tong quan ve PocketPC: Các van de và giái pháp trên thiet b% Tình trang b® nhó, tao co só du li¾u và úng dnng bán do trên PocketPC

Chvong 7: Úng dnng bán do: mô hình phân tích thiet ke

Chvong 8: Ket lu¾n, dánh giá và hvóng phát trien

Chvong 9: Nhung tài li¾u tham kháo khi thnc hi¾n de

tài

Chvong 10:Nêu nhung thu¾t toán chính trong chvong trình

Trang 6

MUC LUC

LèI CÁM ÐN 3

TÓM TAT LU¾N VAN 4

DANH SÁCH CÁC HÌNH 8

DANH SÁCH CÁC BÁNG 10

M®T SO KHÁI NI½M, THU¾T NGU VÀ TÙ VIET TAT 11

CHUÐNG 1 : Hi¾n trang và yêu cau 15

1.1 Hi¾n trang: 15

1.2 Giái quyet bài toán 16

CHUÐNG 2 : Tong quan ve 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 Co che thnc hi¾n giao tác (Transaction): 33

2.5 Nhung trvòng hop nên dùng PERST: 37

2.6 Các thông so cúa PERST: 38

2.7 So lvoc ve RTree 44

2.7.1 Giói thi¾u: 44

2.7.2 So lvoc ve du 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% co só du li¾u hvóng doi tvong khác: 45

CHUÐNG 3 : Giói thi¾u ve mô hình Topology 50

3.1 Giói thi¾u: 50

3.2 Các khái ni¾m co bán trong Topology 50

3.3 Các loai doi tvong trong Topology 51

3.4 Các cap cúa Topology 53

Trang 7

3.5 MBR – Minimum Bounding Rectangle 59

CHUÐNG 4 : Giói thi¾u ve GIS 60

4.1 Giói thi¾u ve các úng dnng và giái pháp ve GIS: 60

4.2 Mô hình du li¾u cúa thông tin d%a lý 61

4.3 Thu th¾p du li¾u: 64

4.4 Các giái thu¾t nghiên cúu ve GIS: 66

4.5 Các cau trúc du 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 dnng bán do 72

4.6.1 Các kieu bán do 72

4.6.2 Các doi tvong cúa bán do 72

4.7 Úng dnng GIS trên PocketPC: 73

CHUÐNG 5 : Giói thi¾u ve chuan OpenGIS 75

5.1 Các kieu du li¾u hình hoc cúa OpenGIS: 75

5.2 OpenGIS Specification (d¾c tá OpenGIS): 76

5.2.1 Các khái ni¾m 76

5.2.2 Nhung d%ch vn OpenGIS (OpenGIS Services ): 78

5.2.3 M®t mô hình nhung c®ng dong thông tin (Information Communities Model ): 79

5.2.4 оc diem 79

5.2.5 Phân loai 81

5.3 OpenGIS Abstract Specification: 82

5.3.1 Essential Model (mô hình bán chat ): 83

5.3.2 Abstract Model 85

CHUÐNG 6 : Tong quan ve PocketPC 89

6.1 Tong quan ve PocketPC: 89

6.2 Khá nang l¾p trình trên PocketPC 89

6.3 M®t so van de khi l¾p trình úng dnng trên PocketPC: 89

6.3.1 Toc d® và các ho tro khá nang hien th% 89

6.3.2 Khá nang và hình thúc lvu tru 90

6.3.3 Tvong tác giua ngvòi sú dnng và thiet b% 91

6.4 Các giái pháp cho úng dnng bán do trên PocketPC: 92

6.4.1 Yêu cau chung: 92

Trang 8

6.4.2 Van de toi vu toc d® hien th% 93

6.5 To chúc du li¾u bán do trên PocketPC: 93

CHUÐNG 7 : Úng dnng bán do 95

7.1 Phân tích và xác d%nh yêu cau: 95

7.2 Phân tích - thiet ke 96

7.2.1 So do sú dnng: 96

7.2.2 оc tá Use-Case chính: 97

7.2.2.1 Tìm kiem dvòng di 97

7.2.2.2 Tìm kiem Region 98

7.2.2.3 Tìm dvòng di ngan nhat: 99

7.2.2.4 Tìm chu trình toi vu: 101

7.2.3 So do lóp Class Diagram 102

7.2.3.1 So do tong quát: 102

7.2.3.2 So do lóp du li¾u: 103

7.2.3.3 So do lóp ve 103

7.2.3.4 So do sn ki¾n 104

7.2.4 Mô tá các lóp: 104

7.2.5 Các lvu do hoat d®ng: 111

7.3 Thiet ke 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 d¾t: 131

CHUÐNG 8 : Ket Lu¾n, Ðánh giá và hvóng phát trien 132

8.1 Ket lu¾n, dánh giá: 132

8.2 Hvóng phát trien 132

CHUÐNG 9 : Tài li¾u tham kháo 133

CHUÐNG 10 : Phn lnc 134

10.1 Bài toán tìm dvòng di ngan nhat giua hai diem 134

10.1.1 Phát bieu bài toán 134

10.1.2 Giái quyet bài toán 134

10.2 Bài toán tìm chu trình toi vu 136

10.2.1 Phát bieu bài toán 136

10.2.2 Giái quyet bài toán 137

Trang 9

DANH SÁCH CÁC HÌNH

Hình 3.2-1 Các doi tvong trong mô hình Topology 51

Hình 3.4-1 Quan h¾ Topology cap 0 56

Hình 3.4-2 Quan h¾ Topology cap 1 và 2 57

Hình 3.4-3 Quan h¾ Topology cap 3 58

Hình 4.2-1 Thông tin can lvu tru 61

Hình 4.2-2 So sánh Raster và Vector 64

Hình 4.3-1 Phvong 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 doi tvong chính trong bán do 73

Hình 5.1-1 H¾ phân cap các kieu du li¾u hình hoc cúa OpenGIS 76

Hình 5.3.1-1 Lóp khái ni¾m 85

Hình 7.2.1-1 So do sú dnng tong quát 96

Hình 7.2.2.1-1 Use Case - Tìm kiem Edge 97

Hình 7.2.2.2-1 Use Case: Tìm kiem Region 98

Hình 7.2.2.3-1 Use Case – Tìm dvòng di ngan nhat 99

Hình 7.2.2.4-1 Use-Case - Tim chu trình toi vu 101

Hình 7.2.3.1-1 So do tong quát 102

Hình 7.2.3.2-1 So lóp du li¾u 103

Hình 7.2.3.3-1 So do lóp ve 103

Hình 7.2.3.4-1 So do sn 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: Hien th% bán do 112

Hình 7.2.5-2 Collabration Diagram: Hien th% bán do 113

Hình 7.2.5-3 Sequence Diagram: Tìm dvòng ngan nhat 113

Hình 7.2.5-4 Collabration Diagram: Tìm dvòng ngan nhat 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 toi vu 117

Hình 7.2.5-8 Collabrotion Diagram: Tìm chu trình toi vu 118

Hình 7.2.5-9 Sequence Diagram: D%ch chuyen vùng nhìn 119

Trang 10

Hình 7.2.5-10 Collabrotion Diagram: Di chuyen vùng nhìn 120

Hình 7.2.5-11 Sequence Diagram: Tí l¾ lai bán do 120

Hình 7.2.5-12 Collaboration Diagram: Tí l¾ lai bán do 121

Hình 7.2.5-13 Sequence Diagram: Tìm d%a diem 121

Hình 7.2.5-14 Collaboration Diagram: Tìm d%a diem 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 tong quát ve giao di¾n 124

Hình 7.3.1-2 Toolbar cúa chvong trình 124

Hình 7.3.1-3 Các chúc nang chính trên thanh công cn 127

Hình 7.3.1-4 Thanh thnc don File 128

Hình 7.3.1-5 Thanh thnc don View 128

Hình 7.3.1-6 Khung nhìn bán do thu nhó 130

Hình 7.3.1-7 Khung Layer 130

Hình 7.3.1-8 Khung hien th% thông tin doi tvong 131

Trang 11

DANH SÁCH CÁC BÁNG

Báng 2.2.4-1 Các moi quan h¾ giua 2 lóp A va B 25

Báng 2.2.5-1 Các kieu Index dvoc PERST ho tro 29

Báng 2.6-1 Hang so dvoc d%nh nghia san trong lóp StorageImpl 42

Báng 2.8-1 So sánh các d¾c tính cúa các h¾ quán tr% 47

Báng 2.8-2 Báng so sánh ket quá cúa các h¾ quán tr% co só du li¾u hvóng doi tvong 49

Báng 3.4-1 Các cap Topology trong các lóp VPF 55

Báng 3.4-2 Các c®t dvoc yêu cau de d%nh nghia quan h¾ Topology trong VPF 56

Báng 3.5-1 Ð%nh nghia khung chu nh¾t nhó nhat MBR 59

Báng 4.2-1 Báng so sánh kieu du li¾u Raster va Vector 64

Báng 7.1-1 Các chúc nang chính 96

Báng 7.2.4-1 Lóp CDatabase 105

Báng 7.2.4-2 Lóp CMapView 105

Báng 7.2.4-3 Lóp CMapEvent 106

Báng 7.2.4-4 Thu®c tính lóp CNode 107

Báng 7.2.4-5 Phvong thúc lóp CNode 108

Báng 7.2.4-6 Thu®c tính lóp CEdge 110

Báng 7.2.4-7 Phvong thúc lóp CEdge 111

Báng 7.3.1-1 Các chúc nang chính trên thanh thnc don 129

Trang 12

M®T SO KHÁI NI½M, THU¾T NGU VÀ TÙ VIET TAT

(Object-Oriented Database

Management System)

H¾ quán tr% co só du li¾u

hvóng doi tvong

só du li¾u hvóng doi tvong

Nhúng - -Embedded Có nghia là PERST dvoc

tích hop ch¾t vào chvongtrình, gan nhv khoángcách giua database vàchvong trình rat nhó,PERST trnc tiep lvu duli¾u trong các doi tvongcúa chvong trình vàkhông can có nhung doan

mã làm công vi¾cchuyen du li¾u tù co só

du li¾u thành doi tvong

và ngvoc lai

mang lvói giao thôngGIS ( Geography H¾ thong thông tin d%a

Trang 13

Information System ) lý Là m®t công ngh¾

dna trên máy tính de xâydnng bán do, phân tích

và xú lý các doi tvongton tai và các sn ki¾nxáy ra trên trái dat

Thông tin không gian Thông tin ve nhung d¾c

diem liên quan den hìnhdang, v% trí, quan h¾cúa các doi tvong d%a lý

Bao gom hai dang:

• Dang hình hoc:

mô tá các d¾c diemhình dang, v% trí Ví

dn nhv toa d® cúadiem, dvòng…

• Dang Topology:

mô tá quan h¾ giuacác doi tvong hìnhhoc Ví dn nhvnhung vùng nào kevói m®t vùng xác d

%nh

Thông tin phi không gian

( thông tin thu®c tính )

Thông tin ve nhung d¾cdiem liên quan den thong

kê, thông tin so, thôngtin d¾c trvng gán chomoi thu®c tính cúa doi

Ví dn nhv tên dvòngpho, dân so…

Trang 14

tvongPDA ( Personal Digital

Assistant )

Thiet b% di¾n tú ho tro

cá nhân, giúp ngvòi súdnng lvu tru các thôngtin cá nhân, công vi¾ccan thiet cung nhv cácphan mem toi thieu trênm®t thiet b% nhó gonPocket PC Khái ni¾m này có the

dùng de chí:

+ H¾ dieu hànhnhúng Pocket PC doMicrosoft phát triendna trên nhân cúaH¾ dieu hànhWindows CE

+ Các thiet b%

PDA sú dnng h¾dieu hành Pocket PC

hình Topology

Trong bài, Edge tvong dvong vói dvòng Khi nhac tói Edge, hay dvòng có the hieu nghia nhv nhau.

Trang 15

Region Ðoi tvong vùng ó dây không de c¾p den

qu¾n huy¾n nhvng có the hieu Region là qu¾n huy¾n.

ID Ð%nh danh cúa doi tvong Trong bài không nhac tói

tên dvòng, qu¾n huy¾n

mà chí nhac tói ID vì co

só du li¾u không dú thông tin tên dvòng Và khi nhac tói tên cúa doi tvong bat

ky thì hieu là ID.

Trang 16

CHUÐNG 1 : Hi¾n trang và yêu cau

1.1 Hi¾n trang:

Trên the giói hi¾n nay dã có nhieu phan mem giái quyet các bài toán vebán do giao thông nhv: RouteSmart, BusStops, Arclogistics, Routronic 2000,DynaRoute…é Vi¾t Nam nói riêng cung có m®t so công ty nhv DolSoft,Hài Hoà, … dã có m®t so sán pham ve GIS nhv Street Finder, SmartMap….Các sán pham trên da phan sú dnng co só du li¾u dvoc to chúc trên các h¾quán tr% co só du li¾u quan h¾ ho¾c tn tao Tuy nhiên van có van de dvocd¾t ra:

1 Chi phí cúa càc h¾ quán tr% co só du li¾u thvong mai neu có dùng.2.Sn khó khan và có khi là “rac roi” trong cách l¾p trình giao tiep vói các

co só du li¾u phúc tap có nhieu báng, quan h¾…

Th¾t ra, hai van de trên có the dvoc giái quyet tvong doi tot bang cách súdnng h¾ quán tr% co só du li¾u hvóng doi tvong PERST (mã nguon mó).PERST là m®t h¾ co só du li¾u tvong doi nhó (so vói các h¾ co só duli¾u khác) vói phan lõi chí gom khoáng 5000 dòng mã Yêu cau cauhình cúa PERST tvong doi thap Hon nua, PERST cung không can den “snquán tr%” thvòng thay ó các h¾ co só du li¾u M¾c dù don gián nhv v¾ynhvng PERST van ho tro day dú tính ACID trong vi¾c thnc hi¾n giao tác(transaction) và ho tro vi¾c phnc hoi (recovery) tvong doi nhanh khi h¾thong g¾p sn co

Không chí dùng lai ó dó mà PERST có ho tro cá vi¾c phát trien trên môitrvòng compact.NET framework nên có khá nang phát trien úng dnng trêncác thiet b% di d®ng dùng WinCE hay PocketPC

Trang 17

Vì v¾y, ta có the thay vi¾c dùng PERST de giái quyet bài toán ve quán lýh¾ thong thông tin d%a lý (GIS) là hoàn toàn khá thi.

1.2 Giái quyet bài toán:

M®t trong các yeu to quan trong quyet d%nh sn thành công hay that baicúa m®t h¾ thong thông tin d%a lí là vi¾c lna chon mô hình cau trúc duli¾u thích hop, cho phép lvu tru và khai thác thông tin m®t cách hi¾u quá

Và mô hình Topology the hi¾n tot nhung dòi hói trên (Mô hình này sedvoc de c¾p sau trong lu¾n van) Vì du li¾u Topology trên PERST không

có san nên chúng ta can xây dnng lai du li¾u theo mô hình Topology Duli¾u thô (du li¾u nguon) dvoc dùng trong úng dnng này là các t¾p tin text.Bài toán se dvoc giái quyet chú yeu bang sn phoi hop các kien thúc veGIS,PERST và do hoa

Trang 18

CHUÐNG 2 : Tong quan ve PERST

2.1 Giói thi¾u:

PERST là m®t h¾ co só du li¾u “nhúng” dành cho các úng dnng can tínhnang lvu tru PERST dvoc thiet ke dành riêng cho l¾p trình và không có giaodi¾n do hoa de quán tr% Vi¾c sú dnng PERST khá don gián và dat dvochi¾u nang tvong doi cao оc diem chính de thay nhat cúa PERST là sntích hop ch¾t che cúa PERST vói m®t ngôn ngu l¾p trình xác d%nh Hi¾ntai PERST chí ho tro cho 2 ngôn ngu l¾p trình là Java và C#

Không giong vói các h¾ quán tr% co só du li¾u hvóng doi tvong khác(OODBMSes), PERST không can dùng den các b® biên d%ch hay các b®tien xú lý d¾c bi¾t khác Nhv v¾y, PERST có khá nang cung cap dvoc

“tính trong suot” trong l¾p trình ó múc d® cao Các hàm API cúa PERSTti¾n loi, de sú dnng và có toc d® cao Có the lay ví dn khi so sánh vóiOzone (m®t h¾ co só du li¾u hvóng doi tvong khác viet bang Java) Vóigiói han (benchmark) 007, PERST tao database nhanh gap 100 lan và thnchi¾n phép duy¾t qua các doi tvong trong co só du li¾u nhanh gap 10 lan sovói Ozone Và khi so vói m®t h¾ co só du li¾u hvóng doi tvong thvongmai khác là ObjectStore PSE Pro, PERST nhanh hon gap 4 lan

PERST là m®t h¾ co só du li¾u tvong doi nhó (so vói các h¾ co só duli¾u khác) vói phan lõi chí gom khoáng 5000 dòng mã Yêu cau cauhình cúa PERST tvong doi thap Hon nua, PERST cung không can den “snquán tr%” thvòng thay ó các h¾ co só du li¾u M¾c dù don gián nhv v¾ynhvng PERST van ho tro day dú tính ACID trong vi¾c thnc hi¾n giao tác(transaction) và ho tro vi¾c phnc hoi (recovery) tvong doi nhanh khi h¾

Trang 19

Có hai bán cài d¾t cúa PERST, m®t bang ngôn ngu Java và m®t bangC# Bán cài d¾t trên C# dvoc chuyen tù Java dùng b® chuyen doi Javasang C# (m¾c dù phái có nhieu thay doi can thnc hi¾n mói có dvoc bánhoàn chính) M¾c dù bán cài d¾t dùng C# ho tro nhieu kieu “nguyên thúy”hon (gom có kieu so nguyên không dau và kieu li¾t kê (enum)) nhvngtrong các phvong di¾n khác, các tính nang cúa hai bán là nhv nhau RiêngPERST.NET có ho tro cá vi¾c phát trien trên môi trvòng compact.NETframework nên có khá nang phát trien úng dnng trên các thiet b% did®ng dùng WinCE hay PocketPC.

2.2 оc tính:

Trong phan này chúng ta se di vào các tính chat quan trong nhat cúaPERST Cn the chúng ta se tìm hieu phiên bán cài d¾t trên môi trvòng.NET(goi tat là PERST.NET) é dây các tính chat có tù nguyên goc tieng Anh sedvoc giu nguyên do không có tù tieng Vi¾t thay the ngan gon mà dúngnghia

2.2.1 Persistency by reachability:

Trong úng dnng dùng PERST, moi doi tvong cúa các lóp dvoc dan xuat tù

lóp Persistent deu có khá nang lvu tru (persistent hay còn d%ch là ben

vung) Ke tù bây giò, ta se goi tat các doi tvong này là các doi tvong

persistent Các doi tvong này dvoc tn d®ng lvu vào database khi nó dvoc

tham chieu tù m®t doi tvong persistent khác và phvong thúc store cúa doi

tvong khác dó dvoc goi Có nghia là ta không can phái goi trnc tiep,

tvòng minh phvong thúc store cúa m®t doi tvong khi muon lvu doi tvong

Trang 20

Database có m®t doi tvong d¾c bi¾t goi là root Ðoi tvong root này là doi

tvong duy nhat dvoc truy xuat m®t cách d¾c bi¾t (dùng phvong thúc

Storage.getRoot) Còn các doi tvong persistent khác dvoc truy xuat theo

cách bình thvòng: ho¾c truy xuat bang tham chieu tù các doi tvong

persistent nhv trên ho¾c truy xuat bang cách dùng các doi tvong bao chúa

(container class) nhv Index,Link hay Relation Không giong nhv các h¾ co

só du li¾u hvóng doi tvong khác, chí có the có duy nhat m®t doi tvong root

phan cúa các lóp persistent cung b% giói han trong các kieu sau:

Kieu vô hvóng (scalar type):

Bool, int, short, double, enum …

Kieu chuoi: Kieu System.String.

Kieu ngày tháng: Kieu System.DateTime.

Ki

e u tham chi e u de n các do i t vo ng persistent : các lóp ke thùa tù lóp

Persistent hay các giao di¾n (interface) ke thùa tù giao di¾n IPersistent.

Ki

e u giá tr % (value type): Các kieu giá tr% cúa C# Các giá tr% nàydvoc lvu trnc tiep trong doi tvong chúa chúng

Ki

e u d u li ¾ u nh % phân thô : Các lóp cúa C# ke thùa tù giao di¾n

IPersistent hay tù giao di¾n IValue và dvoc dánh dau là Serializable Co

che Serialization chuan se dvoc dùng de dóng gói du li¾u cúa các doi

Trang 21

tvong thành các máng byte và lvu chúng vào database Các lóp này sedvoc dánh dau là Serializable và không dvoc chúa các tham chieu den các

doi tvong persistent khác.

Ki

e u m á ng : Các máng m®t chieu vói thành phan là các kieu du li¾udvoc nêu trên

Ki

e u Link : dai di¾n cho quan h¾ m®t-nhieu trong mô hình co só

du li¾u Hay nhìn theo góc d® l¾p trình dây chính là kieu máng d®ng

chúa các doi tvong persistent.

Có m®t van de là PERST không tn biet dvoc rang li¾u m®t doi tvong

persistent nào dó dã có thay doi gì chva trong quá trình làm vi¾c Muon biet

dvoc dieu dó chí có cách là ta tn so sánh tùng field cúa trang thái cu và móivói nhau Nhvng nhv v¾y chi phí rat cao Vì the nên trong PERST, l¾p trìnhviên hoàn toàn ch%u trách nhi¾m ve vi¾c lvu doi tvong nào vào co só duli¾u

Có hai cách trong PERST de ta có the lvu m®t doi tvong vào co só duli¾u:

Cách thú nhat là dùng phvong thúc Persistent.Store Phvong thúc này khi

dvoc goi bói doi tvong nào se lvu bán thân doi tvong dó và các doi tvongdvoc tham chieu tù nó m®t cách trnc tiep hay không trnc tiep mà chva dvoclvu Có nghia là neu ta goi phvong thúc Store này doi vói doi tvong goc cúam®t cây thì lan lvot tat cá các doi tvong cúa cây này se dvoc lvu xuong b®nhó phn

Cách th ú hai là dùng ph vo ng th ú c Persistent.Modify : Phvong thúc này chídánh dau các doi tvong rang chúng dã b% thay doi chú không lvu ngay l¾ptúc vào database Cách này d¾c bi¾t huu dnng khi doi tvong dvoc thay doinhieu

Trang 22

lan trong m®t giao tác Lúc dó, thao tác ghi dia chí phái thnc hi¾n m®t lanvào cuoi giao tác, tang hi¾u suat lên dáng ke.

2.2.2 Semi transparent object loading:

Nhv dã de c¾p ó trên, PERST không dùng bat cú b® biên d%ch hay tien

xú lý d¾c bi¾t nào Và vì C# không cung cap thông tin ve các trangthái (behavior) hay sn thay doi trang thái các doi tvong trong thòi gianthnc thi (runtime) nên không the cài d¾t co cau lvu tru cúa PERST hoàntoàn “trong suot” (transparent) dvoc (nghia là không the truy xuat các doitvong dvoc lvu tru và không dvoc lvu tru m®t cách hoàn toàn giong nhau vì

ta không the phân bi¾t dvoc khi nào ta dang truy xuat vào doi tvongdvoc lvu tru hay không dvoc lvu tru) Thay cho sn cài d¾t “trong suot”hoàn toàn, PERST dã co gang cung cap sn “trong suot” trong da phan cáctrvòng hop

Giao di¾n IPersistent cung cap cho chúng ta phvong thúc

recursiveLoading Phvong thúc này m¾c d%nh dvoc cài d¾t bang cách trá

ve (return) giá tr% true Có nghia là PERST se load (vào b® nhó chính) m®t

cách d¾ quy các doi tvong dvoc tham chieu tù m®t doi tvong nguon khi doitvong nguon này dvoc load Có nghia là co che này se gây ra vi¾c loadngam d%nh toàn b® các doi tvong vào b® nhó chính Co che này tvong tncách làm vi¾c cúa co che “chuoi hóa” (serialization)

Ðe tránh van de tràn b® nhó xáy ra khi load doi tvong lên b® nhó chính

(do co che recursiveLoading gây ra), chúng ta phái quá tái (overload) phvong thúc recursiveLoading trong m®t vài lóp bang cách trá ve (return) giá tr% false trong hàm Các doi tvong dvoc tham chieu tù các doi tvong

Trang 23

load m®t cách tvòng minh bang phvong thúc Persistent.Load V¾y ta thay rang phvong thúc recursiveLoading có the dùng de dieu khien cách thúc

load các doi tvong tù b® nhó phn vào b® nhó chính

Lvu ý rang các doi tvong dùng de ”chúa” các doi tvong khác (container

class) nhv Link,Relation,Index… chí load các doi tvong mà nó chúa khi can

thiet, không load tat cá theo co che recusiveLoading Ngoài ra, vi¾c truy xuat các doi tvong thành phan cúa m®t lóp kieu container deu thông

qua các phvong thúc cúa nó

PERST dùng phvong thúc khói tao m¾c d%nh (không có tham so) dekhói tao bvóc ban dau các doi tvong dvoc load tù b® nhó phn Ðieu này cónghia là:

1.Moi lóp có khá nang lvu tru dvoc (persistent capable class) deu nên có

phvong thúc khói tao m¾c d%nh (ho¾c là không có phvong thúc khói taonào, khi dó trình biên d%ch se tn tao ra cho ta) Phvong thúc này có the cómoi tam truy xuat có the dvoc (public, private,protected … )

2.Phvong thúc khói tao chí khói tao nhung thành phan không ben vung,

không can lvu tru (transient) cúa doi tvong.

3 Phvong thúc khói tao m¾c d%nh dùng de tao nhung the hi¾n cúa cácdoi tvong dvoc load tù b® nhó phn V¾y tai thòi diem phvong thúc khói taom¾c d%nh hoat d®ng các thành phan cúa doi tvong chva dvoc gán các giátr% dvoc lvu tru trong b® nhó phn Neu ta muon các thành phan này cung

dvoc khói tao nhv các thành phan transient nói trên, ta can khói tao chúng trong hàm OnLoad, dvoc goi ngay khi các giá tr% trong b® nhó phn dvoc

load lên b® nhó chính

Trang 24

Tóm lai, các co che trên cho chúng ta sn thu¾n ti¾n, de dàng và mem déotrong l¾p trình, vì nó không yêu cau l¾p trình viên phái load tvòng minh cácdoi tvong trong khi van cho phép vi¾c này, nói cách khác là PERST ho trol¾p trình viên trong vi¾c kiem soát vi¾c load các doi tvong Chí có các lóp

“chúa” các doi tvong khác là phái load tvòng minh các doi tvong mà nóchúa (vì các lóp này dã m¾c d%nh dvoc overload phvong thúc

recursiveLoading de có giá tr% trá ve (return) false).

2.2.3 Automatic scheme evaluation

PERST ho tro “lazy automatic scheme evaluation” Khi d%nh nghia cúam®t lóp b% thay doi (thay doi ve so lvong bien thành viên, thay doi ve kieucúa bien thành viên…), PERST se chuyen các doi tvong dã dvoc load sangd%nh dang mói Neu doi tvong dó trong quá trình hoat d®ng có thay doi vàcan phái lvu, nó se dvoc lvu dvói dang mói PERST có khá nang ho tro cáckieu thay doi d%nh dang sau:

1.Các thay doi “tvong thích” lan nhau giua các kieu du li¾u vô

hvóng (thay doi mà không cat bót du li¾u) Ví dn nhv thay doi tù kieu int sang float hay int sang long,… nhvng ngvoc lai thì không dvoc.

2.Thay doi thú tn các thành phan trong lóp hay thêm, bót các thànhphan trong lóp này vào lóp cha hay lóp dan xat cúa nó

3.Thêm vào hay bó lóp khói cây thùa ke cúa lóp

4.Thay doi d%nh dang cúa lóp bang cách thay doi ý nghia cúa cácgiá tr%

Moi thay doi khác trong cau trúc lóp (doi tên cho thành phan, chuyen kieukhông tvong thích doi vói các thành phan…) deu không dvoc quán lý bói co

Trang 25

che thay doi cau trúc du li¾u tn d®ng cúa PERST Trong các trvòng hop này

ta có the dùng co che xuat nh¾p bang XML cúa PERST Co só du li¾u cóthe dvoc xuat ra dang XML bang cách dùng phvong thúc

Storage.exportXML, tao lai co só du li¾u theo d%nh dang mói roi nh¾p du

li¾u vào bang phvong thúc Storage.importXML cúa PERST.

2.2.4 Relation:

Moi quan h¾ m®t-m®t giua các doi tvong trong co só du li¾u dvoc thehi¾n bang tham chieu (references) trong C# Nhvng trong nhieu trvòng hopchúng ta can den quan h¾ m®t-nhieu hay quan h¾ nhieu-nhieu PERST

cung cap giao di¾n (interface) Link dùng cho các trvòng hop này Giao di¾n

này dva ra các phvong thúc thêm, xóa, tìm kiem… các thành phan cúa

m®t “b®” (relation) các doi tvong persistent Các thành phan cúa “b®”

(relation) này có the dvoc truy xuat bang index hay ta có the chuyen

chúng thành m®t máng doi tvong roi mói truy xuat

T¾p hop (relation) có 2 dang:

1 Dang “nhúng” (embedded relation): Các tham chieu den các doi

tvong tù m®t doi tvong dvoc chúa trong chính doi tvong dó

2 Dang d®c l¾p (standalone relation): Khi dó relation là m®t doi

tvong riêng bi¾t, chúa các tham chieu den các doi tvong

Cá hai dang trên deu cài d¾t giao di¾n Link Cn the Embedded

relation dvoc tao bang cách dùng phvong thúc Storage.createLink, còn Standalone relation thì dùng phvong thúc Storage.createRelation.

Báng sau dây minh hoa các moi quan h¾ giua 2 lóp A và B:

Trang 26

Kieu quan h¾ Object A Object B

M®t-nhieu Link bref; A aref;

Nhieu-m®t B bref; Link aref;

Nhieu-nhieu Link bref; Link aref;

Báng 2.2.4-1 Các moi quan h¾ giua 2 lóp A va B2.2.5 Index:

Thông thvòng doi tvong dvoc truy xuat tù m®t doi tvong khác bang tham

chieu hay bang Link nhv trên Tuy nhiên, chúng ta cung can truy xuat các doi tvong thông qua khóa Trong môi trvòng.NET, lóp Hashtable là m®t ví dn

cho vi¾c truy xuat theo khóa này Ðoi vói co só du li¾u, vi¾c truy xuat doitvong theo khóa di nhiên là tvong doi phúc tap Và vi¾c cài d¾t trongPERST han m®t chúc nang d%ch các câu truy van SQL là không khá thi vì

nó se làm cho PERST phình to ra và ch¾m di Tuy nhiên trong phan lóntrvòng hop, các úng dnng chí thnc hi¾n các l¾nh truy van du li¾u tvong doidon gián nhv tìm theo m®t khóa chính xác hay trong m®t khoáng giá tr%nào dó Trong PERST vi¾c này dvoc thnc hi¾n bang cách cài d¾t các giao

di¾n (interface) Index và FieldIndex Giao di¾n Index dùng cho các khóa d®c l¾p và các giá tr% tvong úng cúa khóa dó Còn giao di¾n FieldIndex

thì dùng de l¾p index cho các doi tvong vói khóa chính là m®t thành phancúa doi tvong

Index dvoc tao trong PERST bang phvong thúc Storage.createIndex doi vói Index hay Storage.createFieldIndex doi vói FieldIndex Có the có vài

Trang 27

(B+Tree là cau trúc du li¾u hi¾u quá nhat cho database trên b® nhó phn).

Các phvong thúc cúa giao di¾n Index và FieldIndex cho phép thêm,

xóa, tìm kiem doi tvong theo khóa bang giá tr% chính xác ho¾c trong m®tkhoáng giá tr% nào dó Vì v¾y các trvòng hop tìm kiem sau dây là thnchi¾n dvoc:

1 Khóa bang 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 hon giá tr% MIN_VAL

7 Khóa lón hon hay bang giá tr% MIN_VAL

8 Khóa bé hon giá tr% MAX_VAL

9 Khóa bé hon hay bang giá tr% MAX_VAL

Có m®t so cách chon doi tvong theo khóa khác nhau nhv sau:

a.IPersistent get(Key key): Chon doi tvong bang khóa chính xác vói khóa

này nên là khóa duy nhat cúa doi tvong

b.IPersistent[] get(Key from,Key till): Lay ra m®t máng doi tvong có khóa

nam trong m®t khoáng giá tr% cho trvóc giói han bói giá tr% from và till Trong dó from và till có the mang giá tr% tùy ý ke cá null.

c.IEnumerator GetEnumerator(): Lay ra m®t IEnumerator, có the dùng

câu l¾nh foreach de duy¾t qua toàn b® các doi tvong trong index nàytheo chieu tang cúa khóa

Trang 28

(OID) là khóa.

Ngoài ra, PERST còn ho tro rat manh cho du li¾u “không gian” (spatial data) bang cách cung cap cau trúc SpatialIndex ho tro vi¾c thêm, xóa, tìm kiem các doi tvong “không gian” de dàng SpatialIndex dvoc cài d¾t bang cau trúc RTree cúa Guttman vói thu¾t toán “quadratic split” khá hi¾u quá trong vi¾c tìm kiem các doi tvong R2 (tìm kiem các doi tvong không gian vói khóa tìm kiem là các giá tr% liên quan den toa d®).Báng dvói dây tóm tat các kieu Index dvoc PERST ho tro:

d.IEnumerator GetEnumerator(Key from, Key till, IterationOrder order):

Lay ra m®t IEnumerator vói khóa nam trong khoáng giá tr% xác d%nh

bói from và till Ta có the duy¾t qua IEnumerator này vói chieu khóa tang

hay giám deu dvoc

Neu can m®t t¾p hop các doi tvong, chúng ta có the sú dnng phvong thúc

Storage.createSet T¾p hop (set) dvoc cài d¾t bang B+Tree vói object ID

khóa

Cài d¾t Phvong thúc tao

Index Index dùng tìm kiem

du li¾u bang khóachính xác ho¾c namtrong m®t khoángxác d%nh

Kieu vôhvóng, chuoi haykieu thamchieu

B+Tree Storage.CreateIndex

Index Nhv trên nhvng áp

dnng cho trvòng

Kieu vôhvóng,

B+Tree Storage.CreateThinkI

ndex

Trang 29

hop có khóa trùng chuoi hay

kieu thamhieu

FieldIndex Index vói khóa là

m®t trong cáctrvòng cúa lóp dvocl¾p Index

Kieu vôhvóng, chuoi haykieu thamchieu

B+Tree Storage.CreaateBitInd

ex

ISet T¾p hop các doi

tvong có khá nanglvu tru

Trang 30

SpatialInd

ex

Index dành cho duli¾u không gian

Rectangle R-Tree Storage.CreateSpatialI

ndexSpatialInd

exR2

Index dành cho duli¾u không giannhvng có toa d®

thnc

Rectangle R2

Moi kieu T-Tree Storage.CreateStorage

nào dvoc thnc hi¾n và cham dút tvòng minh bang l¾nh commit, rollback hay close.

Vi¾c commit m®t giao tác se làm cho các trang (page) b% thay doi trong

quá trình thnc hi¾n giao tác dvoc ghi vào b® nhó phn dong b®

(Asynchronous write: chvong trình se chò cho vi¾c ghi vào dia xong

mói làm tiep vi¾c khác) Công vi¾c này là công vi¾c có chi phí rat cao

Trang 31

doi vói các o dia hi¾n dai là khoáng 10ms, nghia là chí khoáng 100 thao tácd%nh v% trong 1 giây Thêm vào dó các giao tác thvòng chúa các thao tácupdate khoáng vài trang co só du li¾u nên trung bình chí còn khoáng 10 giaotác moi giây.

M¾c dù v¾y, hi¾u suat thnc thi se dvoc nâng cao dáng ke khi ta han che

so lan thnc hi¾n l¾nh commit, có nghia là m®t giao tác se lón hon, thnc hi¾n nhieu l¾nh hon PERST dùng co che tao bóng (shadow mechanism)

trong vi¾c thnc hi¾n giao tác Khi m®t doi tvong dvoc thay doi lan dau

tiên trong m®t giao tác, m®t bán copy (shadow) cúa doi tvong dó dvoc

tao ra và doi tvong goc không thay doi Cho dù doi tvong có dvoc thaydoi nhieu lan trong giao tác dó thì cung chí có m®t bán copy cúa doitvong dvoc tao ra Nhv v¾y co che này giúp PERST hoàn toàn không canden các t¾p tin log trong co só du li¾u thông thvòng và các giao tác dàikhông the gây ra vi¾c tràn log giao tác nhv các h¾ co só du li¾u khác Lvu

ý rang neu ta không goi l¾nh commit m®t cách tvòng minh thì PERST se

chí hoat d®ng m®t cách thông thvòng theo co che không ho tro giao tác.Khuyet diem duy nhat cúa vi¾c giao tác dài hon bình thvòng là khá nangmat di nhieu sn thay doi dã thnc hi¾n dvoc trong giao tác neu giao tác hónghay h¾ thong g¾p sn co Trong các trvòng hop nhv v¾y, du li¾u van dámbáo tính nhat quán (consistency) nhvng các thao tác thay doi co so du li¾utrong giao tác dó deu mat

Trang 32

2.3 Transparent API:

2.3.1 Dùng.NET Remoting API:

.NET framework cung cap gói System.Runtime.Remoting nham ho tro

vi¾c cài d¾t các úng dnng phân tán Ngvòi l¾p trình chí can dan xuat các

lóp cúa ho tù lóp ContextBoundObject và dùng ContextAttribute de tao

message sink: co che dùng de dieu khien vi¾c goi hàm và truy xuat các

thành phan cúa doi tvong Dùng API này không nhung áp dnng cho các h¾

thong phân tán mà còn cho các h¾ thong dna trên giao thúc metaobject (metaobject protocol): giao thúc dieu khien doi tvong Ví dn ta có the úng

dnng chúng de cài d¾t giao di¾n “trong suot” (transparent) cho co só duli¾u hvóng doi tvong này, nghia là vi¾c thao tác trên các doi tvong

persistent hoàn toàn bình thvòng nhv các doi tvong khác.

TransparentPersistentAttribute dùng tao tính “ben vung” m®t cách “trong

suot” cho các doi tvong bang cách dùng.NET Remoting API Neu các lóp cúa úng dnng chúng ta dvoc dan xuat tù lóp PersistentContext và dvoc dánh dau bang tính chat (attribute) TransparentPersistentAttribute, các thành phan cúa

nó se dvoc load tn d®ng hay lvu tn d®ng khi can thiet (trvóc dây ta deu phái

tn làm các thao tác này) Vì hàm recursiveLoading trong lóp

PersistentContext trá ve false nên các doi tvong se dvoc load chí khi nào ta

truy xuat nó

Tuy

nhiên có 2 giói han khi ta dùng remoting API :

1.Remoting API chí có the áp dnng doi vói các thành phan có tam truy

xuat public cúa doi tvong

Trang 33

2.Chi phí cúa vi¾c goi hàm thông qua remoting API cao gap khoáng 100

lan so vói goi hàm thông thvòng

2.3.2 Dùng các thu®c tính áo (virtual properties):

Có m®t ý tvóng khác tao nên sn “trong suot” cho PERST dna trên vi¾c

dùng các thu®c tính áo (virtual properties) Không giong nhv Java, C# cung

cap co che cho phép dóng gói các thu®c tính, thành phan cúa m®t lóp Ý

tvóng ban dau rat don gián: Tao ra lóp bao boc (wrapper class) se cài d¾t

các thu®c tính này Nhv v¾y l¾p trình viên se dvoc giái phóng khói nhieuvi¾c nhó nh¾t nhv không phái lo den chuy¾n quá tái hàm

recursiveLoading, hay goi tvòng minh hàm Load de load doi tvong cung nhv

dánh dau doi tvong b% thay doi bói hàm Modify nua… Tuy nhiên cách này

van có nhung han che cúa riêng nó:

1.Ðoi tvong cúa chúng ta không dvoc có các trvòng lvu tru dvoc

(persistent fields) Thay vì the, ta phái d%nh nghia các thu®c tính trùu

tvong C# cung cap co che cho phép ta de dàng làm vi¾c vói các thu®ctính, nên vi¾c l¾p trình se dõ n¾ng ne hon

2 Ta cung không the tao ra các doi tvong này bang toán tú

new nhv bình thvòng Ta phái dùng phvong thúc IStorage.CreateClass

dùng de tao lóp bao boc và tao ra doi tvong cúa lóp này Lóp này cungkhông có hàm khói tao nào khác ngoài hàm khói tao m¾c d%nh, và hàmkhói tao m¾c d%nh này cung không làm gì khác ngoài vi¾c khói taocác thành phan không dvoc lvu tru (vì hàm khói tao này se dvoc goimoi khi doi tvong dvoc load tù b® nhó phn)

Trang 34

3.Ta cung không the có thành phan cúa doi tvong là máng các tham

chieu den các doi tvong khác Ta phái dùng PERST.PArray de thay the.

4.Sn phát sinh lóp bao boc nhv v¾y có chi phí cao, làm giám hi¾u suatchvong trình neu có nhieu lóp

5.Cuoi cùng, co che này không dvoc ho tro trong môi trvòng NET

Compact framework do môi trvòng này không ho tro vi¾c tao mã trong

thòi gian thnc thi (runtime).

2.4 Co che thnc hi¾n giao tác (Transaction):

Moi record hay doi tvong trong PERST có duy nhat m®t so d%nh danh

goi là OID OID dvoc dùng de tham chieu giua các doi tvong vói nhau Ðe d

%nh v% chính xác m®t doi tvong bang tham chieu, OID cúa chúng dvoc dùng nhv chí so trong máng các d%a chí (offset) cúa các doi tvong trong database Máng này dvoc goi là máng chí mnc doi tvong (object index) và moi thành phan cúa máng này dvoc goi là m®t mnc quán doi tvong (object

handle), giu d%a chí trong database cúa doi tvong Có 2 bán cúa máng chí

mnc doi tvong trong PERST, m®t là máng “hi¾n hành” (current) và máng còn lai goi là máng “bóng” (shadow) cúa máng này Header cúa

database giu con tró den cá hai máng này và có m®t bien chí d%nh

(indicator) dâu là máng “hi¾n hành” vào thòi diem hi¾n tai.

Khi m®t doi tvong b% thay doi lan dau tiên, doi tvong dó se dvoc copy ram®t bán khác và mnc quán cúa doi tvong trong máng chí mnc doi tvong

“hi¾n hành” se chuyen sang tró vào bán copy cúa doi tvong này còn mncquán doi tvong trong máng chí mnc doi tvong “bóng” van tró vào doi tvonggoc Tat cá các thay doi deu dvoc làm trên bán copy và bán goc dvoc giu

Trang 35

nguyên trang PERST se dánh dau trong trang Bitmap cúa máng chí mnc doitvong chúa con tró den doi tvong b% thay doi.

Lúc giao tác (transaction) dvoc hoàn tat và l¾nh commit dvoc thnc hi¾n,dau tiên PERST se kiem tra xem kích thvóc cúa máng chí mnc doi tvong cótang hay không Neu có, PERST cung se tang kích thvóc cho máng chí mncdoi tvong “bóng” Ke den PERST se giái phóng các vùng nhó dvoc dùng bóicác doi tvong goc, chính là các doi tvong goc mà trvóc dây dã dùng chúng

de tao ra các bán copy Các vùng nhó này không the dvoc giái phóng trvóckhi giao tác commit vì nhv v¾y có the PERST se cap phát cho các doi tvongmói dúng các vùng nhó dó, trong khi chúng ta muon các doi tvong goc chúatrong vùng nhó này không doi Ðieu này ánh hvóng den tính nhat quán cúa

co só du li¾u Vì vi¾c giái phóng vùng nhó trong PERST cung dvoc thnchi¾n thông qua Bitmap nên khi giái phóng can phái làm trong m®t so bittrong trang Bitmap tvong úng vói các vùng nhó can xóa Mà các trangBitmap này cung dvoc copy trvóc khi sn thay doi xáy ra Vi¾c copy cáctrang Bitmap này cung dòi hói vùng nhó, và ta có the cung dùng các vùngnhó cúa các doi tvong b% giái phóng nhv trên Rõ ràng dieu này lai vi phamtính nhat quán cúa co só du li¾u theo nhv lý do vùa nêu Tat cá nhung dieutrên chính là lý do tai sao vi¾c giái phóng vùng nhó trong PERST dvoc chiathành hai bvóc Ðau tiên, khi doi tvong dvoc copy, tat cá các trang Bitmaptvong úng vói vùng nhó cúa doi tvong cung dvoc copy theo (neu trvóc dóchva dvoc copy) Khi giao tác commit, PERST chí vi¾c làm trong các bittrong các trang Bitmap tvong úng và tai thòi diem này, không có m®t yêucau ve cap phát b® nhó nào dvoc phép phát sinh

Trang 36

Sau khi giái phóng các vùng nhó thu®c ve các doi tvong goc, PERST sedong loat ghi các trang b% thay doi lên dia de dong b® thông tin trên b® nhóchính và trên dia Sau dó PERST se chuyen doi giá tr% bien chí d%nh(indicator) chí ra máng chí mnc doi tvong hi¾n tai trong database thành giátr% chí den máng “bóng” de chuyen doi vai trò giua hai máng Bây giò mángchí mnc doi tvong hi¾n tai chuyen thành “bóng” và máng chí mnc doi tvong

“bóng” se tró thành máng hi¾n tai Tiep theo m®t lan nua PERST se ghitrang chúa header b% thay doi cúa database lên dia, chuyen database sangtrang thái nhat quán mói Cuoi cùng PERST se copy tat cá các mnc quán doitvong b% thay doi tù máng chí mnc doi tvong “bóng” (trvóc dây là hi¾n tai)sang máng chí mnc doi tvong hi¾n tai (trvóc kia là máng “bóng”) Vàothòi diem này, n®i dung cúa cá hai máng chí mnc doi tvong dã dong nhat

và PERST có the bat dau m®t giao tác mói

Bitmap cúa các doi tvong b% thay doi có tác dnng giám thòi gian commitgiao tác Không phái tat cá máng chí mnc dvoc copy mà chí có các trang b%thay doi mói dvoc copy, Sau khi giao tác commit, Bitmap dvoc làm trongnhv dã nói ó trên

Khi giao tác dvoc bó, không cho thnc hi¾n nua bang l¾nh

Storage.rollback m®t cách tvòng minh, máng chí mnc doi tvong “bóng” se

dvoc copy ngvoc lai vào máng chí mnc doi tvong hi¾n tai, có nghia làcác thay doi neu có trvóc dó deu không có hi¾u lnc Sau khi copy, haimáng chí mnc lai dong nhat và co só du li¾u lai tró ve trang thái nhat quántrvóc khi thnc hi¾n giao tác

Sn cap phát vùng nhó cho các mnc quán doi tvong dvoc thnc hi¾n bangfreehandle list Header cúa list cung dvoc copy và cá hai bán cúa header này

Trang 37

cùng dvoc lvu trên header cúa database Sn chuyen qua lai giua hai bán nàydvoc thnc hi¾n tvong tn nhv vi¾c chuyen qua lai giua hai máng chí mnc doitvong Khi không còn cho trong trong máng chí mnc doi tvong, máng sedvoc cap phát thêm Máng chí mnc doi tvong là thú duy nhat trong co só duli¾u không dvoc copy trong quá trình thay doi Thay vì the, PERST luônluôn sú dnng hai bán cúa máng này (m®t bán hi¾n tai và m®t bán “bóng”).

Có m®t vài giá tr% OID dvoc dành riêng cho các doi tvong d¾c bi¾ttrong PERST Giá tr% OID 0 dùng cho các doi tvong không hop l¾ ví dnnhv các doi tvong dã b% xóa Các giá tr% OID bat dau tù 1 dvoc dùng chocác trang Bitmap So trang Bitmap lai tùy thu®c vào lvong b® nhó áo toi dacúa co só du li¾u Ví dn vói 1tetrabyte b® nhó áo thì kích thvóc trang 8Kb,kích thvóc don v% vùng nhó cap phát (allocation quantum) 64 byte và 32Ktrang Bitmap là các so li¾u tvong úng Có nghia là 32K mnc quán doitvong dvoc dành riêng cho các trang Bitmap trong máng chí mnc doi tvong.Các trang Bitmap dvoc cap phát khi can thiet khi mà kích thvóc databasetang lên Theo các so li¾u trên thì rõ ràng doi tvong cúa ngvòi dùng dau tiên

se mang giá tr% OID bang 0x8002 (túc là 32K + 2)

Quá trình phnc hoi co só du li¾u trong PERST cung don gián Khi ta mó

co só du li¾u, PERST se kiem tra xem co só du li¾u trvóc dó có dvoc dóngdúng cách không Neu không (cò dirty dvoc b¾t lên trong header cúadatabase), PERST se thnc hi¾n vi¾c phnc hoi (tvong tn nhv co che rollbachk

dã de c¾p phía trên) PERST se làm nhv sau:

Bien chí d%nh chí ra máng chí mnc doi tvong hi¾n tai se dvoc PERSTdùng de quyet d%nh xem máng nào là máng tvong úng vói trang thái nhatquán Khi dó, PERST se copy các mnc quán doi tvong trong máng này sangmáng

Trang 38

còn lai, các thay doi thnc hi¾n trvóc dó neu có deu không cón hi¾u lnc, PERST lai tró ve vó trang thái nhat quán.

Th¾t sn quá trình recovery chí làm chuy¾n copy trên (chí nhung mncquán có giá tr% khác nhau trên hai máng chí mnc doi tvong mói dvoc copy

de giám so trang can ghi lên dia) và kích thvóc cúa máng chí mnc doi tvongcung nhó nên vi¾c phnc hoi dien ra rat nhanh Ðieu này giúp giám thòigian “out-of- service” cúa úng dnng

2.5 Nhung trvòng hop nên dùng PERST:

PERST là co só du li¾u dành cho l¾p trình tvong doi don gián và nhanh.Neu úng dnng cúa chúng ta can có co só du li¾u don, không thnc hi¾nnhung thao tác truy xuat du li¾u quá “lat léo” và cái chúng ta can là khánang lvu tru, truy xuat, d%nh v% các doi tvong trong co só du li¾u thôngqua tham chieu hay qua khóa thì PERST rat thích hop Trong các trvònghop này PERST se có hi¾u nang làm vi¾c tot hon so vói các co só du li¾uquan h¾ hay các co só du li¾u hvóng doi tvong phúc tap hon khác

Ta se diem qua lai các tính nang noi b¾t cúa PERST:

1.Ket hop ch¾t che, tn nhiên vói m®t so ngôn ngu l¾p trình thông dnngnhat d%nh (Hi¾n tai chí mói ho tro Java và C#)

2.Mô hình du li¾u trong úng dnng và database gan nhv tvong tn

nhau 3.De dàng sú dnng

4.Yêu cau không cao (PERST package chí có dung lvong 51Kb và PERST

có the dvoc cau hình lai sao cho có the dùng ít b® nhó chính và phn khilàm vi¾c)

Trang 39

5.Hi¾u nang cao (không có các chi phí cho vi¾c truyen thông, khóa, phântích cú pháp các câu SQL và thnc hi¾n các câu truy van).

6.Khá nang ch%u loi tot (co che thnc hi¾n giao

tác) 7.Khá nang phnc hoi nhanh chóng khi g¾p

sn co

8.Không can phái quán lý database nhieu vì database chí bao gom m®tfile duy nhat, vi¾c các file log cúa database quá lón se không còn nua,hi¾u nang làm vi¾c se tang cao

Di nhiên, PERST cung có các khuyet diem tvong úng:

1 Không ho tro ngôn ngu truy van

2 Không thích hop cho vi¾c ho tro da ngvòi dùng truy c¾p database(Neu muon chúng ta phái tn thiet ke m®t server riêng, server này senh¾n các yêu cau tù client roi tuan tn truy xuat database roi mói gúi ketquá ve cho client)

3 Không ho tro vi¾c phân tán du li¾u

4 Không tuân theo m®t chuan nào cá (Ví dn không tuân theo chuanODMG)

2.6 Các thông so cúa PERST:

Phan này chúng ta se xem xét sâu hon ve các thông so cúa database và cáccách sú dnng chúng de tang hi¾u nang

Toc d® truy xuat dia là rat ch¾m so vói toc d® truy xuat b® nhó chính

Vì v¾y lvu giu các du li¾u dvoc truy xuat thvòng xuyên (data caching) làchìa khóa chính de tang hi¾u nang làm vi¾c cúa co só du li¾u PERSTdùng “ pool of pages” de toi vu hóa vi¾c truy c¾p dia Kích thvóc cúapage pool có the

Trang 40

dvoc xác d%nh trong phvong thúc Storage.Open khi mó database (giá tr%m¾c d%nh cúa thông so này là 4Mb) Thông thvòng tang kích thvóc pagepool se tang hi¾u nang làm vi¾c cúa chvong trình Nhvng chúng ta phái lvu

ý nhung diem sau trvóc khi quyet d%nh có tang kích thvóc page pool haykhông

1 Có the úng dnng chí dvoc cap m®t lvong nhat d%nh memory nào dókhi làm vi¾c thôi

2 Neu chúng ta tao ra page pool có kích thvóc quá lón, không de lai dúcho cho h¾ dieu hành và các úng dnng khác làm vi¾c thì toàn b® h¾thong se b% ánh hvóng chung, se giám hi¾u nang do h¾ thong phái swapb® nhó liên tnc

3 Bán thân h¾ dieu hành cung có co che cache du li¾u cúa riêng mìnhbang file buffer V¾y du li¾u th¾t sn dvoc cache hai lan Tuy nhiên vi¾ctruy xuat du li¾u tù page pool se nhanh hon do không phái có các l¾nhgoi hàm h¾ thong cung nhv chuyen ngu cánh (switch context) khi goihàm

4 Vi¾c tao page pool có kích thvóc quá nhó ho¾c th¾m chí bang 0 (giaovi¾c cache data toàn b® cho h¾ dieu hành) cung không the vì se gây raloi Khi du li¾u dvoc truy c¾p tù b® nhó phn, nó se dvoc dva lên chúatrong page pool Có nghia là page pool phái dvoc thiet l¾p cho dú lón de

có the chúa dvoc các trang này Vì v¾y, không nên tao page pool cókích thvóc bé hon 64kb

Neu chúng ta nghi rang moi du li¾u nên de het trong b® nhó chính, chúng

ta có the dùng hang so Storage.INFINITE_PAGE_POOL trong phvong thúcStorage.Open cúa database Trong trvòng hop này, page pool se tn d®ng

Ngày đăng: 23/03/2021, 10:26

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w