You are on page 1of 92

BÀI 2: Tổ chức lưu trữ CSDL

Ts. Nguyễn An Tế
Nguyễn Tiến Dũng
Nguyễn Thúy Ngọc
Nội dung trình bày

1. Tổ chức CSDL
2. Chỉ mục (index)
3. Ràng buộc dữ liệu
4. Tối ưu hóa câu truy vấn
5. Tổ chức CSDL trong SQL Server

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 2


Tổ chức CSDL

1. Mở đầu
2. Tổ chức tập tin mẩu tin (File Record)
3. Các thao tác trên tập tin
4. Tổ chức tập tin không sắp thứ tự (Heap File)
5. Tổ chức tập tin có sắp thứ tự (Sorted File)
6. Kỹ thuật băm (hash)
7. RAID
8. SAN
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 3
Mở đầu

● Tại sao phải tổ chức lưu trữ dữ liệu ?


– Các phần mềm DBMS có thể truy cập, cập nhật và xử lý
các dữ liệu khi cần thiết
– Cần phải tổ chức và lưu trữ các dữ liệu một cách tốt
nhất để đáp ứng được các yêu cầu trên
● Có hai dạng lưu trữ
– Primary storage
– Secondary storage

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 4


Các dạng lưu trữ

● Primary storage
– Là dạng lưu trữ mà CPU (central processing unit) có thể
thao tác trực tiếp được
– Ví dụ như bộ nhớ chính của máy tính (computer main
memory), bộ nhớ được sử dụng cho cache
– Tốc độ truy cập nhanh nhưng có giới hạn về khả năng
lưu trữ, giá thành cao

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 5


Các dạng lưu trữ (tt.)

● Secondary storage
– Là dạng lưu trữ mà CPU không thể thao tác trực tiếp
được (dữ liệu phải được chuyển vào primary storage)
– Ví dụ như các đĩa từ, đĩa quang, băng từ
– Tốc độ truy cập chậm hơn so với primary storage
– Khả năng lưu trữ cao hơn, giá thành thấp hơn

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 6


Tổ chức bộ nhớ

● static RAM (Random Access Memory)


– Bộ nhớ truy cập ngẫu nhiên (thời gian để đọc/ghi các ô
nhớ là như nhau)
– Bộ nhớ cho phép đọc ghi (các dữ liệu bị thay đổi hay
đang sử dụng)
– Dữ liệu trên RAM sẽ bị mất khi mất nguồn điện cung
cấp

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 7


Tổ chức bộ nhớ (tt.)

● Cache memory
– Chính là RAM nhưng lưu dữ liệu của những lần đọc
trước đó
– Khi chương trình cần đọc dữ liệu thì có thể đọc trong
cache trước (không cần thiết phải đọc lại từ secondary
storage). Dẫn đến việc thực thi chương trình sẽ nhanh

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 8


Tổ chức bộ nhớ (tt.)

● DRAM (dynamic RAM)


– Là vùng làm việc chính cho CPU (main memory)
– Lưu trữ các chương trình và dữ liệu
– Tốc độ truy cập chậm hơn so với RAM nhưng giá thành
lại rẻ hơn

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 9


Tổ chức đĩa

● Gồm các loại


– CD-ROM (Compact Disk Read Only)
– Đĩa quang (optical disk)
– Đĩa từ (magnetic disk)
– Băng từ (magnetic tape)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 10


Tổ chức đĩa (tt.)

● Các đặc trưng


– Dùng lưu trữ dữ liệu thường trực
– Khi chương trình cần xử lý dữ liệu, nếu dữ liệu đó chưa
có trên bộ nhớ chính (primary storage) thì sẽ được đọc
vào từ bộ nhớ phụ (secondary storage)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 11


Tổ chức lưu trữ của cơ sở dữ liệu

● Tại sao các cơ sở dữ liệu thường lưu trên các đĩa từ ?


– Kích thước của CSDL thường rất lớn nên không thể đặt
hết trong bộ nhớ chính được
– Dữ liệu phải được lưu thường trực
– Giá thành các đĩa từ thấp hơn so với bộ nhớ chính

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 12


Tổ chức lưu trữ của cơ sở dữ liệu (tt.)

● Người thiết kế, người cài đặt CSDL và người quản trị
– Phải nắm được các kỹ thuật tổ chức lưu trữ
– Biết được ưu và khuyết điểm của các kỹ thuật này
● CSDL được tổ chức vật lý
– Là các tập tin chứa các mẩu tin (files of records)
– Mỗi mẩu tin được xem là một thực thể
– Ví dụ: mỗi mẩu tin là một sinh viên, có các thuộc tính
như mã số, họ tên, địa chỉ, …

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 13


Tổ chức CSDL

1. Mở đầu
2. Tổ chức tập tin mẩu tin (File Record)
3. Các thao tác trên tập tin
4. Tổ chức tập tin không sắp thứ tự (Heap File)
5. Tổ chức tập tin có sắp thứ tự (Sorted File)
6. Kỹ thuật băm (hash)
7. RAID
8. SAN
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 14
Tổ chức tập tin mẩu tin (file of records)

● Nội dung trình bày


– Mẩu tin và kiểu mẩu tin
– Tập tin, mẩu tin có chiều dài cố định và thay đổi
– Lưu trữ các mẩu tin trong các khối
– Cấp phát các khối trên vùng đĩa cho các tập tin
– Thông tin của tập tin (file headers)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 15


Mẩu tin và kiểu mẩu tin

● Mẩu tin
– Mẩu tin là một thực thể và có các trường dữ liệu (field)
– Mỗi trường đều có kiểu dữ liệu
– Các kiểu cơ sở như chuỗi, số, ngày, luận lý
– Các kiểu đặc biệt như hình ảnh, âm thanh, phim, …
● Kiểu mẩu tin
– Tập hợp tất cả các tên trường cùng với kiểu dữ liệu của
nó được gọi là kiểu mẩu tin

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 16


Mẩu tin và kiểu mẩu tin (tt.)

● Ví dụ một mẩu tin


sinh viên Nguyễn Ngọc Tú
Mã số A001
Họ và Tên Nguyễn Ngọc Tú
Ngày sinh 12/10/1990
Giới tính Nam
Địa chỉ 146 Lý Thường Kiệt
Số điện thoại 0903456789
Học bổng 300,000

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 17


Mẩu tin và kiểu mẩu tin (tt.)

● Ví dụ một kiểu mẩu tin


structure SINH_VIEN
{
string ma_so;
string ho_ten;
date ngay_sinh;
boolean gioi_tinh;
string dia_chi;
string dien_thoai;
real hoc_bong;
}

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 18


Mẩu tin có chiều dài cố định và thay đổi

● Tập tin
– Là tập hợp tuần tự các mẩu tin
– Nếu kích thước tất cả mẩu tin đều như nhau thì gọi là
mẩu tin có chiều dài cố định
– Ngược lại thì gọi là mẩu tin có chiều dài thay đổi

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 19


Mẩu tin có chiều dài cố định

● Ví dụ

A001 Nguyễn Ngọc Tú 12/10/1989 1 146 Lý Thường Kiệt

6 bytes 30 bytes 12 bytes 1 bytes 100 bytes

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 20


Mẩu tin có chiều dài thay đổi

● Tại sao các mẩu tin có chiều dài thay đổi


– Trong mẩu tin có chứa những trường mà kích thước có
thể thay đổi. Ví dụ: họ tên, địa chỉ
– Trong mẩu tin có chứa những trường mà giá trị là tùy
chọn (chứa/không chứa giá trị)
– Những mẩu tin có kích thước khác nhau. Ví dụ: sinh
viên và những môn học mà sinh viên đăng ký

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 21


Mẩu tin có chiều dài thay đổi (tt.)

● Ví dụ
Dấu phân cách

A001 Nguyễn Ngọc Tú 12/10/1989 1 146 Lý Thường Kiệt

6 bytes 12 bytes 1 bytes

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 22


Mẩu tin có chiều dài thay đổi (tt.)

● Ví dụ
Phân cách trường

Ho_ten=Nguyễn Ngọc Tú Dia_chi=146 Lý Thường Kiệt

Phân cách mẩu tin

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 23


Lưu trữ các mẩu tin trong các khối

● Khối là gì? (block)


– Là một đơn vị dữ liệu trong việc chuyển đổi dữ liệu giữa
đĩa và bộ nhớ. Ví dụ: khối có kích thước 8 Kbyte
– Các mẩu tin trong tập tin sẽ được lưu trữ trong các khối
của đĩa (disk block)
– Một khối có thể lưu trữ được nhiều mẩu tin (khi kích
thước của khối lớn hơn kích thước của mẩu tin)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 24


Lưu trữ các mẩu tin trong các khối (tt.)

● Lưu trữ có phân chia


– Các mẩu tin có thể được lưu trên nhiều khối
– Nếu B là kích thước khối (theo byte) và R là kích thước
mẩu tin (chiều dài mẩu tin cố định). Và B≥R thì
– Block cho phép chứa đến B/R mẩu tin. Nếu B/R có phần
dư khác 0 thì phải cấp thêm không gian sử dụng cho
phần dư này
– Nếu chiều dài mẩu tin thay đổi thì có thể lưu trữ phân
chia hoặc không phân chia
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 25
Lưu trữ các mẩu tin trong các khối (tt.)

● Lưu trữ có phân chia


– Mẩu tin sẽ lưu trên một khối và phần còn lại được lưu
trên một khối khác
– Cuối khối thứ nhất sẽ có một con trỏ (pointer) trỏ đến
địa chỉ của khối tiếp theo
– Nếu kích thước của các mẩu tin lớn thì việc lưu trữ có
phân chia sẽ tiết kiệm được các không gian sử dụng của
khối

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 26


Lưu trữ các mẩu tin trong các khối (tt.)

● Lưu trữ không phân chia


– Khi các mẩu tin không cho phép phân chia trên các khối
– Nếu chiều dài mẩu tin cố định và B˃R thì các mẩu tin
sẽ được lưu trong một khối và có một địa chỉ bắt đầu
– Địa chỉ bắt đầu này được tính như sau
Gọi B là kích thước của khối
Gọi R là kích thước của mẩu tin
Vậy N = B/R là số mẩu tin chứa trong khối
Nếu F là tổng số mẩu tin thì số khối cần M = F/N
Các khối đánh số thứ tự từ 0 đến M-1
Mẩu tin thứ I sẽ có địa chỉ: I div N + I mod N

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 27


Lưu trữ các mẩu tin trong các khối (tt.)

● Ví dụ lưu trữ không phân chia


record 1 record 2 record 3

Khối thứ i

record 4 record 5 record 6

Khối thứ i + 1

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 28


Lưu trữ các mẩu tin trong các khối (tt.)

● Ví dụ lưu trữ có phân chia


record 1 record 2 record 3 record 4 P

Khối thứ i

rec 4 record 5 record 6 record 7 P

Khối thứ i + 1

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 29


Cấp phát các khối

● Cấp phát liên tục


– Các khối trên đĩa sẽ được cấp phát liền kề nhau
– Ưu điểm: khi đọc toàn bộ tập tin sẽ đọc rất nhanh (sử
dụng cơ chế hai bộ đệm trong khi đọc)
– Khuyết điểm: khó khăn trong việc tăng trưởng kích
thước tập tin (do đĩa bị phân mảnh)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 30


Cấp phát các khối (tt.)

● Cấp phát liên kết


– Mỗi khối sẽ có một con trỏ trỏ đến khối tiếp theo
– Ưu điểm: dễ dàng trong việc tăng trưởng kích thước tập
tin
– Khuyết điểm: khi đọc toàn bộ tập tin sẽ có thể đọc
chậm

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 31


Cấp phát các khối (tt.)

● Cấp phát xâu (cluster)


– Là một xâu các khối, còn được gọi là file segment hoặc
file extend
– Các khối cấp phát có thể liền kề nhau hoặc liên kết
nhau

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 32


Thông tin của tập tin

● File header là gì ?
– Là thông tin mô tả cho tập tin. Bao gồm
– Địa chỉ của các khối lưu trữ trên đĩa
– Mô tả định dạng của bản ghi như kích thước các trường,
thứ tự các trường

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 33


Thông tin của tập tin (tt.)

● Sử dụng File header


– Các chương trình sử dụng file header khi truy cập đến
tập tin các mẩu tin. Ví dụ khi tìm kiếm mẩu tin thì
– Một hoặc nhiều khối được đọc vào bộ đệm của bộ nhớ
chính
– Chương trình thực hiện việc tìm kiếm trên bộ nhớ chính
dựa trên thông tin của file header

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 34


Thông tin của tập tin (tt.)

● Sử dụng File header


– Nếu mẩu tin vẫn chưa tìm thấy thì các khối lại tiếp tục
được đọc vào bộ nhớ chính
– Việc tìm kiếm sẽ chấm dứt khi đã tìm thấy mẩu tin hoặc
tìm không thấy mẩu tin nào trong tất cả các khối
– Tập tin càng lớn thì thời gian tìm kiếm sẽ càng lâu
– Tổ chức lưu trữ tập tin như thế nào để việc tìm kiếm chỉ
với ít nhất các lần đọc khối từ đĩa vào bộ nhớ chính

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 35


Tổ chức CSDL

1. Mở đầu
2. Tổ chức tập tin mẩu tin (File Record)
3. Các thao tác trên tập tin
4. Tổ chức tập tin không sắp thứ tự (Heap File)
5. Tổ chức tập tin có sắp thứ tự (Sorted File)
6. Kỹ thuật băm (hash)
7. RAID
8. SAN
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 36
Các thao tác trên tập tin

● Các thao tác truy cập dữ liệu


– Tìm ra các mẩu tin thỏa mãn các yêu cầu nào đó
– Ví dụ tìm các sinh viên có tên là ’Thanh’
● Các thao tác cập nhật dữ liệu
– Thêm mới, Sửa và Xoá
– Ví dụ tăng học bổng 5% các sinh viên có tên là ’Thanh’

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 37


Các thao tác thực hiện ở mức thấp

● Mở tập tin (open)


– Chuẩn bị tập tin để đọc/ghi
– Cấp phát các bộ đệm thích hợp (thường là hai) để lưu
trữ dữ liệu đọc từ các khối trên đĩa
– Truy cập file header
– Đưa con trỏ mẩu tin về đầu tập tin

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 38


Các thao tác thực hiện ở mức thấp (tt.)

● Khởi tạo lại (reset)


– Đưa con trỏ mẩu tin trở về đầu tập tin
● Tìm kiếm (find)
– Tìm mẩu tin đầu tiên thỏa mãn điều kiện tìm
– Khối chứa mẩu tin tìm được đã đọc vào bộ nhớ chính
– Con trỏ mẩu tin trỏ tới mẩu tin được tìm thấy (mẩu tin
hiện hành)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 39


Các thao tác thực hiện ở mức thấp (tt.)

● Đọc (get)
– Sao chép nội dung của mẩu tin hiện hành vào biến
chương trình
– Di chuyển mẩu tin hiện hành sang mẩu tin tiếp theo
(khối tiếp theo)
● Tìm tiếp (find next)
– Tìm mẩu tin kế tiếp thỏa mãn điều kiện tìm
– Khối chứa mẩu tin này sẽ được đọc vào bộ nhớ chính
– Mẩu tin tìm thấy trở thành mẩu tin hiện hành
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 40
Các thao tác thực hiện ở mức thấp (tt.)

● Thêm mới mẩu tin (insert)


● Xoá mẩu tin (delete)
● Sửa mẩu tin (modify)
● Đóng tập tin (close)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 41


Tổ chức CSDL

1. Mở đầu
2. Tổ chức tập tin mẩu tin (File Record)
3. Các thao tác trên tập tin
4. Tổ chức tập tin không sắp thứ tự (Heap File)
5. Tổ chức tập tin có sắp thứ tự (Sorted File)
6. Kỹ thuật băm (hash)
7. RAID
8. SAN
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 42
Tổ chức tập tin không sắp thứ tự

● Đặc điểm
– Cách tổ chức đơn giản và cơ bản nhất
– Các mẩu tin lưu trữ theo thứ tự được thêm vào tập tin
– Tổ chức tập tin không sắp thứ tự còn được gọi là heap
file hay pile file

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 43


Tổ chức tập tin không sắp thứ tự (tt.)

● Thao tác thêm mới mẩu tin


– Khối cuối cùng của tập tin được chép vào bộ đệm
– Mẩu tin mới được thêm vào khối
– Khối được ghi trở lại đĩa
– Có thuận lợi là việc thêm mới sẽ nhanh

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 44


Tổ chức tập tin không sắp thứ tự (tt.)

● Thao tác xoá mẩu tin


– Tìm mẩu tin muốn xoá và chép khối vào bộ đệm
– Xoá mẩu tin này trong khối
– Khối được ghi trở lại đĩa
– Nếu xóa nhiều mẩu tin thì có thể bị phân mảnh. Do đó
● Có thể thực hiện việc đánh dấu xoá mẩu tin
● Thao tác sửa mẩu tin
– Xoá mẩu tin cũ và thêm mẩu tin mới

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 45


Tổ chức CSDL

1. Mở đầu
2. Tổ chức tập tin mẩu tin (File Record)
3. Các thao tác trên tập tin
4. Tổ chức tập tin không sắp thứ tự (Heap File)
5. Tổ chức tập tin có sắp thứ tự (Sorted File)
6. Kỹ thuật băm (hash)
7. RAID
8. SAN
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 46
Tổ chức tập tin có sắp thứ tự

● Đặc điểm
– Các mẩu tin được sắp thứ tự vật lý theo các giá trị của
một hoặc nhiều trường (trường sắp thứ tự)
– Nếu trường sắp thứ tự cũng là trường khóa thì được gọi
là khóa sắp thứ tự (giá trị phải là duy nhất)
– Tổ chức tập tin có sắp thứ tự còn được gọi là tập tin
sắp thứ tự hay tập tin tuần tự

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 47


Tổ chức tập tin có sắp thứ tự (tt.)

● Ví dụ
Tên Ngày sinh Học bổng
Khối 1 Anh 10/09/1990 100,000
Bảo 20/01/1991 200,000
Bình 15/07/1990 100,000

Khối 2 Chi
Chung
Dũng

Khối …

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 48


Tổ chức tập tin có sắp thứ tự (tt.)

● Có các thuận lợi về tìm kiếm


– Liệt kê các mẩu tin theo đúng thứ tự đã được sắp (do
không cần phải xử lý để sắp thứ tự)
– Tìm kiếm các mẩu tin kế tiếp (do có sẵn thứ tự liên tục)
– Tìm kiếm mẩu tin (do tìm nhị phân trên khối nhanh hơn
trên các mẩu tin)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 49


Tổ chức tập tin có sắp thứ tự (tt.)

● Có các khó khăn khi thêm mới mẩu tin


– Phải xác định vị trí thích hợp cho mẩu tin mới (đúng thứ
tự vật lý)
– Giải quyết 1: khai báo dư vùng không gian trống
– Giải quyết 2: thêm mẩu tin mới vào tập tin phụ
(overflow file)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 50


Tổ chức tập tin có sắp thứ tự (tt.)

● Có các khó khăn khi sửa mẩu tin


– Nếu sửa các giá trị của trường khóa thì gồm hai thao
tác: xóa mẩu tin cũ và thêm mẩu tin mới
– Giải quyết: hạn chế việc sửa các giá trị của trường khóa
● Có các khó khăn khi xóa mẩu tin
– Nếu xóa nhiều mẩu tin thì có thể bị phân mảnh
– Giải quyết: chỉ thực hiện việc đánh dấu xóa

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 51


Tổ chức CSDL

1. Mở đầu
2. Tổ chức tập tin mẩu tin (File Record)
3. Các thao tác trên tập tin
4. Tổ chức tập tin không sắp thứ tự (Heap File)
5. Tổ chức tập tin có sắp thứ tự (Sorted File)
6. Kỹ thuật băm (hash)
7. RAID
8. SAN
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 52
Kỹ thuật băm

● Băm là gì ?
– Kỹ thuật cho phép tìm kiếm nhanh theo một điều kiện
– Điều kiện là so sánh bằng trên một trường
– Dựa trên một hàm băm nhận vào một giá trị khoá và
trả về địa chỉ của khối đĩa (chứa mẩu tin có giá trị khoá)
– Khối đĩa được đọc vào bộ nhớ chính
– Việc tìm kiếm thực hiện trên bộ nhớ chính này

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 53


Kỹ thuật băm (tt.)

● Tổ chức băm bên trong (internal hashing)


– Tập tin được tổ chức như bảng băm (hash table)
– Là mảng chứa các mẩu tin có các chỉ mục từ 0 đến N-1
(N là số mẩu tin)
– Hàm băm F(K) = số thứ tự của mẩu tin
– Ví dụ: F(K) = K mod N

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 54


Kỹ thuật băm (tt.)

● Tổ chức băm bên trong (internal hashing)

Mã số Tên Ngày sinh Học bổng


0 100 Anh 10/09/1990 100,000
F(102)=2 1 101 Bảo 20/01/1991 200,000
2 102 Bình 15/07/1990 100,000

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 55


Kỹ thuật băm (tt.)

● Tổ chức băm bên ngoài (external hashing)


– Tổ chức băm cho các tập tin
– Gồm nhiều bucket, mỗi bucket chứa nhiều mẩu tin
– Bucket là một khối hoặc một xâu (cluster)
– Hàm băm F(K) = số thứ tự của bucket
– Trong header file sẽ chứa một bảng dùng để chuyển số
thứ tự của bucket thành địa chỉ của khối

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 56


Ví dụ: tổ chức băm bên ngoài

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 57


Tổ chức CSDL

1. Mở đầu
2. Tổ chức tập tin mẩu tin (File Record)
3. Các thao tác trên tập tin
4. Tổ chức tập tin không sắp thứ tự (Heap File)
5. Tổ chức tập tin có sắp thứ tự (Sorted File)
6. Kỹ thuật băm (hash)
7. RAID
8. SAN
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 58
Kỹ thuật RAID

● RAID là gì ?
– Từ viết tắt của Redundant Arrays of Independent Disks
– Là một hệ thống các đĩa cứng được ghép lại nhằm:
– Tăng cường tốc độ đọc/ghi dữ liệu
– Tăng cường khả năng chịu lỗi khi bị mất dữ liệu
– Hoặc kết hợp cả hai khả năng này

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 59


Kỹ thuật RAID (tt.)

● RAID 0
– Cần ít nhất là hai ổ đĩa cứng (nên cùng loại)
– Dữ liệu được ghi thành nhiều phần trên nhiều ổ đĩa
(striping)
– Ưu điểm: tăng tốc độ đọc/ghi đĩa
– Khuyết điểm: tính an toàn thấp, nếu có một đĩa bị hư
thì xem như không phục hồi lại được dữ liệu

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 60


Kỹ thuật RAID (tt.)

● RAID 1
– Cần ít nhất là hai ổ đĩa cứng
– Dữ liệu được ghi giống như nhau trên cả hai đĩa
(mirroring)
– Ưu điểm: tính an toàn cao, nếu có một đĩa bị hư thì vẫn
sử dụng được đĩa còn lại

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 61


Kỹ thuật RAID (tt.)

● RAID 5
– Cải tiến của RAID 0 để tăng khả năng chịu lỗi
– Cần ít nhất là ba ổ đĩa cứng
– Dữ liệu được ghi theo ”striping with parity”. Nghĩa là:
– Dữ liệu được ghi thành hai phần trên hai ổ đĩa (striping)
– Ổ đĩa thứ ba sẽ ghi các parity

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 62


Kỹ thuật RAID (tt.)

● Ví dụ: RAID 0
Số thập phân Số nhị phân
21 20
0 0 0
0 0
1 0 1
0 1
2 1 0
3 1 1 1 0

1 1

Đĩa cứng 1 Đĩa cứng 2

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 63


Kỹ thuật RAID (tt.)

● Ví dụ: RAID 5

0 0 1
0 1 0

1 0 0

1 1 1

Đĩa cứng 1 Đĩa cứng 2 Đĩa cứng 3

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 64


Tổ chức CSDL

1. Mở đầu
2. Tổ chức tập tin mẩu tin (File Record)
3. Các thao tác trên tập tin
4. Tổ chức tập tin không sắp thứ tự (Heap File)
5. Tổ chức tập tin có sắp thứ tự (Sorted File)
6. Kỹ thuật băm (hash)
7. RAID
8. SAN
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 65
SAN

● SAN là gì ?
– Từ viết tắt của Storage Area Network
– Là một hệ thống trong đó các thiết bị lưu trữ được tổ
chức thành một mạng riêng
– Là mạng có tốc độ cao dành riêng cho việc lưu trữ và
quản trị dữ liệu
– Cung cấp các kết nối giữa các server và các thiết bị lưu
trữ

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 66


SAN

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 67


Nội dung trình bày

1. Tổ chức CSDL
2. Chỉ mục (index)
3. Ràng buộc dữ liệu
4. Tối ưu hóa câu truy vấn
5. Tổ chức CSDL trong SQL Server

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 68


Chỉ mục

● Chỉ mục (index) là gì ?


– Ngoài các tổ chức dữ liệu chính như tập tin không sắp
thứ tự, tập tin có sắp thứ tự, bảng băm
– Thì chỉ mục là cách tổ chức để tăng tốc độ tìm kiếm
– Tìm kiếm theo chỉ mục không làm ảnh hưởng đến thứ
tự vật lý của dữ liệu
– Chỉ mục được xây dựng dựa trên các trường dữ liệu
(còn gọi là index key)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 69


Chỉ mục (tt.)

● Chỉ mục (index) là gì ?


– Tổ chức các cặp, gồm khóa và địa chỉ của dữ liệu
– Địa chỉ trỏ tới một khối đĩa hoặc một mẩu tin
● Phân loại chỉ mục
– Chỉ mục một cấp (single level index) là chỉ mục của tập
tin có sắp thứ tự
– Chỉ mục nhiều cấp (multi level index) là chỉ mục của dữ
liệu có cấu trúc cây

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 70


Chỉ mục một cấp

● Chỉ mục chính (primary index)


– Khóa của chỉ mục chính là khóa của tập tin có sắp thứ
tự, các giá trị khóa phải là duy nhất
– Trong một cặp (index entry) thì phần tử thứ nhất là
khóa, phần tử thứ hai là địa chỉ của khối đĩa
– Mỗi index entry tương ứng với mẩu tin đầu tiên của khối
– Số index entry ít hơn số mẩu tin trong tập tin
– Kích thước của một entry nhỏ hơn kích thước mẩu tin

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 71


Ví dụ: chỉ mục chính

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 72


Chỉ mục một cấp (tt.)

● Chỉ mục xâu (clustering index)


– Khóa của chỉ mục không là khóa của tập tin có sắp thứ
tự, các giá trị khóa có thể lặp lại
– Trong một cặp (index entry) thì phần tử thứ nhất là
khóa (chỉ lấy giá trị đại diện), phần tử thứ hai là địa chỉ
của khối đĩa
– Mỗi index entry tương ứng với mẩu tin đầu tiên của khối

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 73


Ví dụ: chỉ mục xâu

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 74


Ví dụ: chỉ mục xâu

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 75


Chỉ mục một cấp (tt.)

● Chỉ mục thứ cấp (secondary index)


– Khóa của chỉ mục không là khóa của tập tin
– Trong một cặp (index entry) thì phần tử thứ nhất là
khóa, phần tử thứ hai là địa chỉ của khối đĩa hoặc địa
chỉ của mẩu tin
– Một tập tin có thể có nhiều chỉ mục thứ cấp

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 76


Chỉ mục một cấp (tt.)

● Chỉ mục thứ cấp (secondary index)


– Trường hợp 1: các giá trị khóa của index không bị trùng
– Mỗi index entry tương ứng với mỗi mẩu tin
– Địa chỉ trỏ đến địa chỉ của khối đĩa hoặc mẩu tin

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 77


Ví dụ: chỉ mục thứ cấp, không trùng khóa

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 78


Chỉ mục một cấp (tt.)

● Chỉ mục thứ cấp (secondary index)


– Trường hợp 2: các giá trị khóa của index bị trùng. Có
các lựa chọn sau

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 79


Chỉ mục một cấp (tt.)

● Lựa chọn 1
– Mỗi index entry tương ứng với mỗi mẩu tin
– Địa chỉ trỏ đến địa chỉ của khối đĩa hoặc mẩu tin
● Lựa chọn 2
– Một index entry tương ứng với một khóa (chỉ lấy đại
diện)
– Danh sách địa chỉ trỏ đến các địa chỉ của các mẩu tin có
cùng giá trị khóa

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 80


Chỉ mục một cấp (tt.)

● Lựa chọn 3
– Một index entry tương ứng với một khóa (chỉ lấy đại
diện)
– Địa chỉ trỏ đến địa chỉ của khối các địa chỉ các mẩu tin

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 81


Ví dụ: lựa chọn 3

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 82


Chỉ mục nhiều cấp

● Chỉ mục nhiều cấp là gì ?


– Tổ chức nhiều cấp nhằm cải thiện thêm tốc độ tìm kiếm
– Chỉ mục cấp một (cơ sở) là các index entry có các giá trị
khóa duy nhất. Chỉ mục này xem như tập tin chỉ mục
– Trên tập tin chỉ mục này tạo chỉ mục chính (primary
index): chỉ mục cấp hai
– Chỉ mục cấp hai có các index entry là mẩu tin đầu tiên
của khối đĩa

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 83


Ví dụ: chỉ mục nhiều cấp

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 84


Nội dung trình bày

1. Tổ chức CSDL
2. Chỉ mục (index)
3. Ràng buộc dữ liệu
4. Tối ưu hóa câu truy vấn
5. Tổ chức CSDL trong SQL Server

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 85


Ràng buộc toàn vẹn (RBTV)

● Ràng buộc toàn vẹn (Integrity Constraint) là gì ?


– Là các qui tắc kiểm tra tính đúng đắn của dữ liệu
– Cơ sở dữ liệu phải cho phép định nghĩa được các RBTV
và các RBTV này phải được áp dụng để đảm bảo tính
đúng đắn của dữ liệu
– Ví dụ: các sinh viên phải có mã là duy nhất và khác
rỗng, điểm phải từ 0 đến 10

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 86


Ràng buộc toàn vẹn (tt.)

● Phân loại RBTV


– Các RBTV dựa trên mô hình dữ liệu (inherent model –
based constraint)
– Các RBTV được định nghĩa trong các schema (schema –
based constraint)
– Các RBTV được định nghĩa trong các chương trình ứng
dụng (application – based constraint)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 87


Ràng buộc toàn vẹn (tt.)

● Ràng buộc miền dữ liệu (domain constraint)


– Qui định bởi kiểu dữ liệu của thuộc tính
– Ví dụ: họ tên phải là kiểu chuỗi, lương phải là kiểu số
● Ràng buộc khóa và ràng buộc khác rỗng
– Ràng buộc khóa chính: các thuộc tính phải khác rỗng và
duy nhất
– Ràng buộc khóa: các thuộc tính phải là duy nhất
– Ràng buộc khác rỗng: các thuộc tính phải khác rỗng

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 88


Ràng buộc toàn vẹn (tt.)

● Ràng buộc loại thực thể (entity integrity constraint)


– Để phân biệt các thực thể. Ví dụ: khóa chính không
được rỗng
– Để so sánh các thuộc tính của cùng thực thể. Ví dụ:
ngày giao hàng dự kiến phải sau ngày đặt hàng

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 89


Ràng buộc toàn vẹn (tt.)

● Ràng buộc khóa ngoại (foreign key constraint)


– Dữ liệu của bảng bên N phải tham chiếu hợp lệ đến dữ
liệu của bảng bên 1
– Cột làm khóa chính của bảng bên N
– Cột làm khóa ngoại của bảng bên 1
– Ví dụ: bảng PHONG_BAN là bên 1, NHAN_VIEN là bên N
– Nhân viên thuộc về những phòng có trong PHONG_BAN

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 90


Ràng buộc toàn vẹn (tt.)

● Các loại RBTV khác và Trigger


– Những RBTV có qui tắc kiểm tra phức tạp (không cho
phép định nghĩa)
– Ví dụ: ngày nhập hàng phải sau ngày đặt hàng
– Sử dụng Trigger cho phép lập trình để kiểm tra dữ liệu

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 91


Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 20/09/2010 92

You might also like