Bản ghi luận lý logical record dùng để nhóm các thuộc tính được xác định bởi cùng 1 khóa chính, thứ tự các thuộc tính không quan trọng Thiết kế bản ghi vật lý liên quan đến việc chọn
Trang 1Chương 12: Thiết kế vật lý database
1
Trang 2Nội dung
Quá trình thiết kế database vật lý
Chọn định dạng lưu trữ cho các thuộc tính
từ mô hinh dữ liệu luận lý
Mô tả ba kiểu tổ chức tập tin
Chỉ mục: mục đích và các loại chỉ mục
Chuyển đổi mô hình dữ liệu quan hệ thành cấu trúc database hiệu quả
Trang 3Thiết kế database
Yêu cầu:
Thận trọng trong thiết kế vì những quyết định
được làm trong giai đoạn này sẽ ảnh hưởng
đến khả năng truy xuất dữ liệu, thời gian đáp
ứng, tính bảo mật, tính thân thiện với người
Trang 4Mục tiêu thiết kế database
Tập trung vào tính hiệu quả xử lý dữ liệu (data processing efficiency)
Chi phí máy tính ngày nay giảm đáng kể, việc thiết kế chỉ cần tập trung vào việc
giảm nhỏ thời gian xử lý làm thế nào
xử lý database và các file vật lý hiệu quả, không quan tâm nhiều đến không gian lưu trữ
Trang 5Chuẩn bị trước khi thiết kế
Cần thu thập thông tin liên quan đến hệ
thống sẽ thiết kế:
lượng khối lượng thông tin
dùng: thêm, truy xuất, xóa, cập nhật
ứng, độ bảo mật dữ liệu, sao lưu phụ hồi dữ
liệu, tính toàn vẹn dữ liệu
DB
5
Trang 6Quá trình thiết kế database
trong mô hình dữ liệu luận lý: kiểu dữ liệu ít tốn bộ nhớ mà vẫn bảo đảm tính toàn vẹn
dữ liệu
lý vào các bản ghi vật lý (physical record)
vào bộ nhớ phụ (đĩa cứng) sao cho việc truy xuất các bản ghi này mau chóng.
• Cần quan tâm đến việc bảo vệ và khôi phục dữ
liệu khi có lỗi
việc truy xuất dữ liệu hiệu quả hơn.
Trang 7Khối lượng dữ liệu & tần suất sử dụng
(Data volume and usage frequency)
Đánh giá khối lượng dữ liệu và tần số sử
dụng dữ liệu là bước cuối của quá trình
thiết kế CSDL luận lý hay là bước đầu tiên của quá trình thiết kế vật lý CSDL
Để thống kê, thêm các ghi chú (natation) vào sơ đồ ERR biểu diễn các quan hệ đã
chuẩn hóa cuối cùng
7
Trang 8PART 1000
SUPPLIER 50
MANUFACTURED
PART
400
PURCHASED PART 700
Trang 9Khối lượng dữ liệu & tần suất sử dụng
(Data volume and usage frequency)
Việc thống kê khối lượng và tần suất được thực hiện trong giai đoạn phân tích hệ
thống bởi phân tích viên hệ thống
( system analyst)
Việc thống kê không đòi hỏi chính xác
tuỵệt đối mà chỉ dùng làm cơ sở cho bước thiết kế tiếp theo
9
Trang 10 Field tương ứng với 1 thuộc tính
(attribute) trong mô hình dữ liệu luận lý
Quyết định cần làm khi thiết kế là phải
chọn kiểu dữ liệu cho field, kiểm soát tính toàn vẹn dữ liệu và DBMS sẽ quản lý các
Trang 11Bốn mục tiêu để chọn kiểu dữ liệu
1. Tối thiểu hoá không gian lưu trữ
2. Diễn tả được tất cả các giá trị có thể có
của dữ liệu
3. Cải thiện được tính toàn vẹn dữ liệu
4. Hỗ trợ được tất cả phép thay đổi dữ liệu
11
Trang 12Kỹ thuật mã hoá và nén dữ
liệu
Một số thuộc tính có tập giá trị thưa hay
có trị quá lớn chiếm nhiều không gian lưu trữ
Một trường có số ít giá trị nên mã hoá để chiếm ít không gian hơn
Trang 13Kỹ thuật mã hoá và nén dữ
liệu
Ví dụ: trường Finish của bảng Product chỉ
có 1 ít giá trị là Birch, Maple và Oak
sao cho mỗi giá trị của trường Finish được thay thế bằng 1 mã
phẩm quá lớn
hình nhận thức, là 1 thiết kế vật lý để cải thiện việc xử lý dữ liệu
13
Trang 14C A C B
ABC
BirchMapleOak
Bảng tra cứu FINISH
Trang 15Kỹ thuật mã hoá và nén dữ
liệu
Kỹ thuật nén tin ( data compression
technique) tìm các mẫu (pattern) và mã
hoá các mẫu xuất hiện thường xuyên với
số bit ít hơn
Kỹ thuật mã hoá ( encryption technique): dùng để chuyển 1 trường sang dạng bảo mật
Kỹ thuật nén tin hay mã hoá được dùng
với 1 số DBMSs Để người dùng đọc được giá trị thực sự của các trường, phần mềm cần phải biết quá trình dịch ngược lại
15
Trang 16Kiểm soát tính toàn vẹn dữ liệu
Việc kiểm tra tính toàn vẹn dữ liệu được
xây dựng thành cấu trúc vật lý của các
trường và được DBMS quản lý tự động
Trang 17Giá trị mặc định
(Default value)
Là giá trị mà 1 trường luôn thừa nhận
ngoại trừ người dùng đưa vào 1 giá trị
tường minh khác để thay thế
17
Trang 18Kiểm soát miền giá trị
(Range control)
Giới hạn 1 tập các giá trị cho phép mà 1
trường có thể nhận được
Miền giá trị có thể là 1 cận dưới và cận
trên dạng số hay là 1 tập các giá trị cụ thể
Nên để DBMS thực hiện việc kiểm soát
miền giá trị thay cho chương trình
Trang 19Kiểm tra giá trị rỗng
(Null value control)
Một khoá chính thường bị cấm không được
có giá trị null
Các trường khác cũng có thể cần kiểm tra giá trị null tuỳ theo yêu cầu của tổ chức
nhận bất kỳ course nào thiếu tiêu đề
19
Trang 20Bảo toàn tham chiếu
(Referential integrity)
Là 1 dạng của kiểm tra miền trong đó giá trị của 1 trường có thể tồn tại như giá trị trường của 1 hàng nào đó trong cùng
bảng hay của 1 bảng khác
Trang 21Xử lý dữ liệu bị thiếu
(missing data)
Dữ liệu bị thiếu khi không có dữ lịêu để
nhập vào 1 trường và trường cho phép có giá trị null
Để tránh giá trị bị thiếu:
báo cáo để buộc người dùng có liên quan đến
phải nhanh chóng giải quyết các giá trị chưa
biết.
có ảnh hưởng đến kết quả tính toán hay không?
21
Trang 22Thiết kế các bản ghi vật lý
Bản ghi vật lý ( physical record): là 1
nhóm các trường được lưu trữ trong những
vị trí bộ nhớ cạnh nhau và được truy xuất như 1 đơn vị
Bản ghi luận lý (logical record) dùng để
nhóm các thuộc tính được xác định bởi
cùng 1 khóa chính, thứ tự các thuộc tính
không quan trọng
Thiết kế bản ghi vật lý liên quan đến việc chọn sắp xếp các trường vào vị trí kề cận
Trang 23Sử dụng hiệu quả bộ nhớ phụ
Hai yếu tố ảnh hưởng:
Hệ điều hành thường đọc/ghi dữ liệu từ
đĩa cứng theo từng page, không theo bản ghi vật lý
Page: là lượng dữ liệu được đọc/ghi vào
bộ nhớ trong 1 thao tác xuất/nhập của bộ nhớ phụ
Kích thước trang do người thiết kế HĐH
quyết định
23
Trang 25Trường có chiều dài cố định
Nếu các trường có chiều dài cố định, các
trường sẽ đặt liền kề nhau, việc quản lý bộ nhớ sẽ dễ dàng hơn
Để tìm vị trí của trường thứ m trong bản
ghi thứ n của tập tin CSDL
Địa chỉ bắt đầu của file+ (n-1) chiều dài bản ghi+ sum(lengthi)
i=1 đến m-1
= Địa chỉ bắt đầu của trường thứ mLengthi : chiều dài của trường thứ i
25
Trang 26Trường có chiều dài thay đổi
Vị trí của 1 trường thuộc 1 bản ghi nào đó thường không theo quy luật
Cách chung để quản lý các trường độ dài thay đổi là chia quan hệ thành 1 bản ghi
vật lý chứa toàn bộ các trường có chiều
dài cố định và 1 hay nhiều bản ghi vật lý chứa các trường có chiều dài thay đổi
Trang 27Chỉ mục - Indixes
Mục đích: cải thiện việc truy tìm dữ liệu
Ý tưởng: tương tự như index của sách
Cho phép tìm nhanh 1 hàng mà không
phải duyệt tuần tự từng hàng của bảng dữ liệu giảm thời gian thực thi truy vấn
27
Trang 28Heap file
Mỗi bản ghi (record) đều có 1 mã nhận
dạng duy nhất (unique identifier), gọi tắt là rid
Tất cả các bản ghi được lưu trữ theo thứ
tự ngẫu nhiên (random order) vào file
File không xếp thứ tự (unordered file)
được gọi là heap file Các bản ghi sẽ đuợc lưu trữ trong các trang (page)
Trang 29 Khác với candidate key, cho phép nhiều
hàng có cùng giá trị search key
29
Trang 30Chỉ mục - Index
Index chứa:
Các cơ chế dò tìm:
ISAM hay B+ tree
Trang 31Chỉ mục - Index
Cơ chế xếp theo search key: có 2 dạng
vào cùng file dữ liệu
31
Trang 33Bất lợi của index
Chiếm không gian đĩa
Nếu index lớn thì các trang index cần được đọc vào bộ nhớ gây ra chi phí cho thao tác vào ra (I/O)
Index cần được bảo trì (maintenance): các chỉ mục phải được sửa đổi cùng với sự
thay đổi của dữ liệu
33
Trang 35Phân loại chỉ mục
Trong chỉ mục clustered, thứ tự vật lý của các index entry tương ứng với thứ tự vật
lý của các bản ghi dữ liệu
Ví dụ: quan hệ PROFESSOR có thể được
xếp thứ tự theo thuộc tính Department
(không phải là khóa chính), khi đó index
trên thuộc tính này sẽ là index clustered
trong khi đó index trên khóa chính ID sẽ
là index unclustered
35
Trang 36Index File
Mechanism for Locating
Index Entries
Index Entries
Trang 37Data File
Index File
Mechanism for Locating
Index Entries
Index Entries
Unclustered index
Trang 38Phân loại chỉ mục
Chỉ mục clustered còn được gọi là chỉ mục
sơ cấp ( primary index) hay main index
Unclustered index thường được gọi là
secondary index
Thường thì với mỗi bảng chỉ có 1 clustered index và có thể có nhiều unclustered
index
Trang 39Chỉ mục thưa và dày
Sparse versus dense index
Chỉ mục dày là chỉ mục mà các entry của
nó tương ứng 1-1 với các bản ghi trong
file dữ liệu
Chỉ mục thưa trên 1 file đã sắp xếp là chỉ mục mà trong đó chỉ có 1 index entry duy nhất cho mỗi trang dữ liệu và ngược lại
39
Trang 40009406321 Jacob Taylor MGT
101202303 John Smyth CS
121232343 David Jones EE
131141151 Anita Cohen CS
234567891 Mary Brown ECO
333444555 Ying Chen CHE
444555666 Sanjay Sen ENG
555666777 Mary Doe CS
666777888 Mary Brown PHY
900012045 Ann White MAT
009406321
234567891
666777888
Mary Brown Mary Brown Ying Chen Anita Cohen Mary Doe David Jones Sanjay Sen John Smyth Jacob Taylor Chỉ mục thưa
Search key:ID
Trang 41Chỉ mục thưa
File dữ liệu được xếp theo cùng khóa với
index, khi đó thứ tự của file dữ liệu cho
phép ta tìm được các bản ghi không có
tham chiếu tương ứng trong chỉ mục
Chỉ mục thưa phải là clustered
Search key nên là candidate key của file
dữ liệu, nếu không thì sẽ có nhiều bản ghi
có cùng search key và nếu các bản ghi
này nằm trên các trang khác nhau, thì các bản ghi trong trang đầu thường bị bỏ sót
41
Trang 42là candidate key
Trang 44Cơ chế dò tìm
(Location mechanism)
Dò tìm nhị phân trên chỉ mục dày
Vì các bản ghi dữ liệu thường lớn hon
index entry nhiều, nên việc tìm kiếm trên file chỉ mục sẽ cải thiện các thao tác I/O
Nếu file dữ liệu lớn thì F >>Q, số thao tác I/O
trên file index bằng cơ chế dò tìm nhị phân sẽ
Trang 45Cơ chế dò tìm
(Location mechanism)
Để giảm chi phí dò tìm index entry trong file index:
cùng search key với file index
này
Các chỉ mục thấp nhất trong file index
được gọi là chỉ mục cấp 1 hay leaf index
Các chỉ mục mức cao hơn (cấp hai) còn
được gọi là separator entry dùng để
hướng việc dò tìm đến entry nào của
index cấp 1
45
Trang 47 Nên dùng chỉ mục nhiều mức (multilevel index)
47
Trang 48 Fan-out: để chỉ số separator trong 1
trang Fan-out xác định được số mức trong
1 cây: nó càng nhỏ thì số mức của cây
Trang 50(Index-sequential access
method)
ISAM index là chỉ mục nhiều mức và là
loại clustered index
Các bản ghi dữ liệu được chứa trong các lá
ISAM là cấu trúc lưu trữ cho file dữ liệu
Trang 52các trang chỉ mục lá trước Sau đó mới
xây dựng các mức separator từ đáy lên
Gốc sẽ nằm ở đỉnh cao nhất
Trang 53Đặc tính của ISAM
Các mức separator thường không thay đổi sau khi chúng đã được tạo
Các trang mức lá có thể thay đổi nhưng
các trang này sẽ không mở rộng thêm hay
bị thu hồi lại, do đó vị trí của các trang lá trong file cũng cố định
Phát sinh nhiều vấn đề khi xóa hay thêm hàng vào bảng
53
Trang 54Một trang ở cấp separator của ISAM
Mỗi cấp separator đều là chỉ mục thưa
dùng để chỉ đến cấp chỉ mục kế tiếp
Mỗi separator entry đều chứa 1 giá trị dò tìm ( search key) ki và con trỏ pi trỏ đến trang kế tiếp trong file chỉ mục Trang kế tiếp này có thể là cấp separator kế tiếp
thấp hơn hay có thể là trang chứa các lá
chỉ mục
Các cấp separator trong cùng 1 trang sẽ
Trang 55Chỉ mục ISAM
Mỗi giá trị search key sẽ chia tập các giá trị search key thành 2 cây con được trỏ
đến bởi 2 con trỏ liền kề pi-1 và pi
Nếu giá trị search key k được tìm thấy
trong cây con được trỏ tới bởi pi-k thì k
<ki; nếu được tìm thấy trong cây con được trỏ tới bởi pi thì k ≥ki
55
Trang 56Đặc tính của ISAM
Nội dung các nút lá có thể thay đổi
Ví dụ: Xét chỉ mục ISAM gồm 2 mức
separator và 1 mức lá Giá trị search key
là tên sinh viên
Trang 57judy jane
al
mike bob
sol phil
karen joe
Trang 58Ví dụ
Khi xóa bản ghi của Jane, thì trong mức
separator chỉ mục Jane trở nên xa lạ
nhưng chỉ mục ISAM vẫn làm việc được
Khi thêm bản ghi mới có tên ivan,trang lá thích hợp bị đầy cần 1 trang overflow,
nó không thể là mức mới mà cũng không thể trang mức lá mới được
Trang 59bob jane
joe abe
Trang 60Đặc tính của ISAM
Nếu bảng mà việc thêm mới thường hay
xảy ra thì chuỗi các trang overflow có thể rất dài và việc dò tìm sẽ kém hiệu quả
Các entry trên chuỗi các trang overflow
không thể xếp thứ tự được và các trang
overflow không thể được xếp gần các
trang khác
Cách khắc phục: chỉ mục có thể được xây dựng lại một cách định kỳ để loại trừ các trang overflow, nhưng chi phí này quá đắt
Trang 61Các loại dò tìm
Dò tìm bằng (equality search): dò tìm
entry chỉ mục có giá trị bằng với giá trị dò tìm
Key search có thể chứa nhiều thuộc tính
granularity) Ví dụ: chỉ mục NAMEDEPT xếp thứ
tự theo Name và DeptId Chỉ mục cho phép
khôi phục nhanh thông tin về người có tên là
Name ( có thể có nhiều người trùng tên) của 1 phòng cụ thể nào đó
61
Trang 62009406321 Jacob Taylor MGT
101202303 John Smyth CS
121232343 David Jones EE
131141151 Anita Cohen CS
234567891 Mary Brown ECO
333444555 Ying Chen CHE
444555666 Sanjay Sen ENG
555666777 Mary Doe CS
666777888 Mary Brown PHY
900012045 Ann White MAT
Mary Brown, ECO
Mary Brown, PHY
Ying Chen, CHE
Trang 63Range search
Ví dụ:
Brown của phòng ECO (bằng cách dò bằng), ta
có thể khôi phục tất cả những ai có tên Mary
Brown trong các phòng khác.
Mary Brown đến David Jones của mọi phòng
ban
63
Trang 64B+ Trees
B+ Trees là cấu trúc index thông dụng
nhất
B+ Trees cũng là chỉ mục nhiều mức và hỗ trợ việc dò tìm khóa các dạng miền,một
phần khóa hay cả khóa
Có 2 dạng B+ Trees:
B+ Trees sẽ hoạt động không chỉ như 1 index
mà còn như 1 cấu trúc lưu trữ của file dữ liệu B+ Trees là chỉ mục chính (main index)
Trang 65Cấu trúc của B+ tree
Trang 66Cấu trúc của B+ tree
Con trỏ liền kề (sibling pointer) liên kết
các trang của mức lá thành một danh sách liên kết chứa các giá trị search key của các bản ghi trong bảng theo thứ tự được sắp
Trái với ISAM, B+ tree tự thay đổi động
Khi các bản ghi được thêm hay xóa, các
trang lá và chỉ mục sẽ sửa đổi, thêm hay xóa và vì vậy các trang lá không tuần tự
trong file
Trang 67Dò tìm miền ( Range search)
Danh sách liên kết cho phép B+ tree dò
tìm theo miền (range search)
đã được định vị bằng cách tìm so sánh bằng
( equality search)
miền có thể được định vị bằng cách duyệt qua danh sách kể từ chỉ mục lá được tìm thấy bởi
so sánh bằng
67
Trang 68So sánh ISAM và B+ tree
Con trỏ sibling không cần thiết trong chỉ
mục ISAM vì các trang lá của chỉ mục
được lưu trữ trong file theo thứ tự được
sắp khi file được tạo, index là tĩnh (static)
và thứ tự được duy trì
Range search được thực hiện bằng cách quét file một cách vật lý
ISAM không hỗ trợ tìm theo miền
Các entry chỉ mục được chèn mới sẽ
không được lưu trữ theo thứ tự đã được
Trang 69So sánh ISAM và B+ tree
việc thêm mới hay xóa các bản ghi, bất kỳ đường dẫn nào từ gốc đến các lá chỉ mục đều có cùng
chiều dài Vì vậy chi phí I/O để khôi phục
(retrieve) một entry mức lá là như nhau cho mọi
lá chỉ mục
entry bảo đảm được là số separator tối thiểu
không xác định được nên chi phí khôi phục lá ở
cuối chain cũng không xác định được
69
Trang 70So sánh ISAM và B+ tree
Ưu điểm của B+ tree là thay vì tạo chuỗi các overflow khi thêm bản ghi mới thì cấu trúc của nó được sửa đổi sao cho cây vẫn cân bằng Các entry có thể được thêm hay xóa khỏi các trang và số separator trong 1 trang luôn nằm trong khoảng từ Φ/2 đến
Φ
Trang 71Chỉ mục hash - Hash index
Hashing là 1 giải thuật dò tìm quan trọng trong nhiều ứng dụng máy tính
Có 2 loại hashing:
thay đổi, thường được dùng cho các quan hệ ít thay đổi
thể mở rộng ra hay thu nhỏ lại, thích hợp cho
các quan hệ thường xuyên phải thêm mới hay xóa bớt bản ghi
71