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 1TRUè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 2TRUè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 3NIÊN KHOÁ 2001-2005
Trang 4Lè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 5TÓ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 6MUC 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 73.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 86.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 9DANH 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 10Hì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 11DANH 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 12M®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 13Information 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 14tvongPDA ( 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 15Region Ð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 16CHUÐ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 17Vì 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 18CHUÐ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 19Có 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
dó
Trang 20Database 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 21tvong 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 22lan 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 23load 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 24Tó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 25che 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 26Kieu 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 29hop 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 30SpatialInd
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 31doi 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 322.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 332.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 343.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 35nguyê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 36Sau 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 37cù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 38cò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 395.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 40dvoc 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