Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 4: Lưu trữ dữ liệu vật lý và các phương pháp truy xuất dữ liệu trình bày một số khái niệm về lưu trữ dữ liệu vật lý truy xuất dữ liệu, cách tổ chức file và phương pháp truy xuất, index. Hi vọng đây sẽ là một tài liệu hữu ích dành cho các bạn sinh viên Công nghệ thông tin dùng làm tài liệu tham khảo và học tập.
Chương Lưu trữ liệu vật lý & Các phương pháp truy xuất Nội dung Một số khái niệm Cách tổ chức file phương pháp truy xuất Index Các phương tiện lưu trữ DL CPU sử dụng để thi hành CT nhanh Volatile storage: thông tin nguồn Cache (RAM) Primary storage CPU dùng DRAM để làm nơi load CT CT C + DL, thi hành C ( ) Main memoryy (DRAM) Flash memory (MP3, USB) Secondary storage/ Nonvolatile storage On-line storage Magnetic disk Tertiary storage/ Off-line storage Magnetic tapes Giá thành Tốc độ Optical disk (CD-ROM) Storage Capacity nearline offline tape & tape optical typiccal capacity (bytes)) 1015 magnetic optical 1013 1011 109 disks electronic disks online electronic secondary tape main 107 105 f from G Gray & Reuter R t cache 103 10-9 10-6 10-3 10-0 103 access time (sec) Storage Cost 104 cache from Gray & Reuter electronic dollars/MB 102 100 main electronic secondary online li magnetic optical tape nearline tape & optical disks disks offline 10-2 tape 10-4 10-9 10-6 10-3 10-0 103 access time (sec) Đĩa từ (Magnetic disk) Về cách quản lý đĩa • mặt đĩa chia thành nhiều track, track chia thành nhiều block (page) cluster = n block • Dùng đĩa từ (magnetic disk) để lưu sở liệu vì: – Khối llượng lưu l trữ t ữ lớn lớ (không (khơ thể lưu l nhớ hớ chính) hí h) – Lưu cách bền bỉ, lâu dài, phục vụ cho truy cập xử lý lặp lại (bộ nhớ khơng đáp ứng được) – Chi phí cho việc lưu trữ rẻ • Dữ liệu đĩa phải chép vào nhớ cần xử lý Nếu liệu có thay đổi ghi trở lại vào đĩa • Bộ điều khiển đĩa (disk controller - DC): giao tiếp ổ đĩa máy tính, nhận lệnh I/O, định vị đầu đọc làm cho hành động R/W diễn • Block đơn vị để lưu trữ chuyển liệu Chuyển liệu – Thời gian trung bình để tìm chuyển block = s + rd + btt • Seek time (s): để DS định vị đầu đọc/ ghi track trung bình khỏang track, 7-10 10 msec (destop) (destop), 3-8 msec (server) • Rotational delay/latency (rd): để đầu đọc vị trí block cần đọc, phụ thuộc rpm, trung bình khỏang msec • Block transfer time (btt): để chuyển liệu, phụ th ộ vào thuộc bl block k size, i ttrack k size, i rpm – Khi truy xuất đến block liên tiếp tiết kiệm thời gian – Một số kỹ thuật tìm kiếm khai thác điều Một số nguyên tắc • DBS giảm thiểu số lượng block chuyển đĩa MM (main memory)→ giảm số lần truyy xuất đĩa g – Lưu lại nhiều tốt block liệu MM, tăng hội tìm thấy block cần truy xuất MM • Buffer thành phần MM dùng để chứa (version hơn) block đọc lên/ lưu xuống ố đĩa, Buffer manager quản lý Lưu tập tin đĩa • CSDL tổ chức đĩa thành một/nhiều tập tin, tập tin gồm nhiều mẫu tin, mẫu tin gồm nhiều trường • Mẫu Mẫ tin ti phải hải đ llưu ttrữ ữ ttrên ê đĩ đĩa cho h cần truy cập truy cập cách hiệu – Cách tổ chức file (Primary file organization): cho biết mẫu tin định vị cách vật lý đĩa,, từ biết cách truyy xuất chúng g – Cách tổ chức phụ (secondary organization/ auxiliary access structure): để truy cập mẫu tin file hiệu 10 Mục đích • Kỹ thuật lưu trữ liệu có ích cho người thiết kế CSDL, DBA, người cài đặt HQTCSDL – Người thiết kế CSDL, DBA: biết ưu khuyết điểm kỹ thuật lưu trữ để thiết kế, kế thực thao tác CSDL HQTCSDL cụ thể • Đặc điểm đĩa từ + cách tổ chức file liệu đĩa từ Ỉ Đưa cách thiết kế CSDL để lưu trữ khai thác hiệu • HQTCSDL thường có nhiều chọn lựa để tổ chức DL, việc thiết kế vật lý cần chọn kỹ thuật tổ chức liệu phù hợp cho yêu ê cầu ầ ứ ứng d dụng – Người cài đặt CSDL cần biết kỹ thuật tổ chức DL cài đặt đúng, hiệu để cung cấp cho DBA người dùng đầy đủ chọn lựa 11 Nội dung Một số khái niệm Cách tổ chức file phương pháp truy xuất • • • • • Mẫu ẫ tin, kiểu ể mẫu ẫ tin, tập tin, mẫu ẫ tin có kích thước cố định, mẫu tin có kích thước thay đổi Định vị file block đĩa File header Thao tác file Heap file, Sorted file, Hashing technique Index 12 Mẫu tin (Record) • Data ≡ records ≡ data values/ items ≡ thực thể/mối quan hệ thuộc tính chúng • Kiểu mẫu tin: Record type/ Record format = tập tên thuộc tính kiểu liệu ệ g thuộc ộ tính • VD: struct NHANVIEN {char TENNV[30]; char MANV[9]; int LUONG, char PHONG[20]} • Kiểu liệu (Data type) thuộc tính cho biết giá trị mà fi ld có field ó thể nhận hậ lấy lấ – – – – Số: integer(4 bytes), long integer (8 bytes), floating point (4 bytes) Chuỗi (1 ký tự ≡ byte): chiều dài cố định thay đổi Boolean (1 byte) Date/ time (YYYY-MM-DD: 10 byte) 13 Tập tin • Tổ chức tập tin: – Lưu nhiều mẫu tin, có kiểu khác kiểu mẫu tin – Gồm mẫu tin có chiều dài (byte) Ỉ tập tin có kích ị ((fixed-length g record)) ặ thước mẫu tin cố định – Gồm mẫu tin có chiều dài khác Ỉ tập tin có kích thước mẫu tin thay đổi (variable-length record) • TH1: Cùng kiểu mẫu tin, có field có chiều dài thay đổi VD: field kiểu chuỗi • TH2: Do khác kiểu mẫu tin, trường hợp mẫu tin có liên quan gom nhóm lại (clustered) lưu block để truy xuất nhanh h h • TH3: Cùng kiểu mẫu tin, có thuộc tính có nhiều giá trị khác • TH4: Cùng kiểu mẫu tin, có thuộc tính có/ khơng có giá trị • Ghi chú: TH3 TH4 không xảy lưu trữ liệu CSDL quan hệ 14 Tập tin • Mẫu tin có kích thước cố định: dễ truy xuất MANV TENNV LUONG MAPB • Mẫu tin có kích thước thay đổi – TH1: • Dùng ký tự đặc biệt (khơng lẫn lộn với giá trị thuộc tính) để kết thúc trường có chiều dài thay đổi • Lưu kích thước thật tính byte trước giá trị thuộc tính 001 Nguyen Van A 1000 LAB – TH2: Trước mẫu tin lưu kiểu mẫu tin – TH3: Cần ký tự đặc biệt ngăn cách giá trị lặp lại ký tự kết thúc – TH4: • Nếu số thuộc tính nhiều số lượng thuộc tính thực có giá trị lưu cặp thay lưu field-value • Dùng ký tự đặc biệt để ngăn cách: field-name field-value, field với nhau, kết thúc record Có thể dùng ký tự đặc biệt cho mục đích đầu • Hoặc đánh mã cho kiểu liệu field field-type, số nguyên chẳng hạn, lưu 15 Tập tin • Ta biết: đĩa chia thành block • Thường: Kích í thước block B > kích í thước record R (cố ( ố định, tính byte, B>=R) • block có chứa nhiều mẫu tin, số lượng: bfr= floor(B/R) records/block bfr bfr gọi blocking factor file B - bfr*R số byte không dùng block 16 Lưu mẫu tin vào block • Unspanned block i block i+1 record record record record record record • Spanned block i block i+1 record record (phần lại) record record record record record P P 17 Tổ chức file block đĩa • Liên tục: Các block file định vị liên tiếp block đĩa – Đọc file nhanh dùng double buffering • Trong CPU xử lý block xử lý I/O đọc chuyển block vào buffer khác – Mở rộng file khó khăn • Khơng liên tục: block file chứa trỏ trỏ tới block – Dễ mở rộng file – Đọc file chậm • Kết ế hợp hai cách – Mỗi cluster disk block liên tiếp nhau, cluster liên kết với – Cluster gọi file segment extent 18 File Header • Lưu lại thơng tin cần thiết để truy cập file: – Địa block file file – Mô tả định dạng record • Tập tin gồm mẫu tin có chiều dài cố định: Fieldlength, thứ tự field unspanned record • Tập tin gồm mẫu tin có chiều dài thay đổi: mã kiểu cho field, ký tự ngăn cách, mã kiểu cho mẫu tin – Tìm mẫu tin đĩa: • số block chép vào buffer • CTrình tìm buffer dùng thơng tin file header 19 Thao tác file • Các thao tác tập tin – Tìm kiếm mẫu tin theo điều kiện – Thêm mẫu tin – Xóa mẫu tin – Sửa mẫu tin • Tùy vào cách tổ chức tập tin mà có cách thao tác p phù hợp ợp 20 10 Mẫu tin có chiều dài cố định (tt) • Hủy mẫu tin – Đánh dấu xóa vào bit thơng tin – Đưa mẫu tin bị đánh dấu xóa vào free list FH A-102 Perryridge 400 A-305 Round Hill 350 A-215 Mianus 700 A-101 Downtown 500 A-222 A 222 Redwood 700 A-201 A 201 Perryridge 900 A-217 Brighton 750 A-110 Downtown 600 A-218 Perryridge 700 A-111 Redwood 800 0 23 Mẫu tin có chiều dài cố định (tt) • Thêm mẫu tin – Hoặc thêm vào mẫu tin bị đánh dấu xóa thêm vào cuối tập tin – Cập nhật lại free list FH A-102 Perryridge 400 A-305 Round Hill 350 A-111 Downtown 700 A-101 Downtown 500 A-222 Redwood 700 A-201 Perryridge 900 A-217 Brighton 750 A-110 Downtown 600 A-218 Perryridge y g 700 0 • Tìm kiếm – Quét tập tin 24 12 Mẫu tin có chiều dài động • Trong DBMS, mẫu tin có chiều dài động dùng để – Lưu trữ nhiều loại mẫu tin tập tin – Các loại mẫu tin chứa trường có chiều dài động • Xét tập tin gồm mẫu tin account type account-list = record branch-name: char(22); account-info: array [1 n] of record account-number: char(10); balance: real; end end 25 Mẫu tin có chiều dài động (tt) • Byte-String Representation – Cuối mẫu tin có byte ký tự đặc biệt cho biết kết thúc mẫu tin Perryridge A-102 400 A-201 Round Hill A-305 350 - Downtown A 101 A-101 500 A 110 A-110 Mianus A-215 700 - Redwood A-222 700 - 900 A-218 Brighton 600 A-217 700 750 - - 26 13 Mẫu tin có chiều dài động (tt) • Byte-String Representation – Sử dụng lại không gian trống sau xóa mẫu ẫ ti tin khơng khơ hiệ hiệu ả – Dẫn đến tình trạng phân mảnh Perryridge A-102 400 A-201 Round Hill A-305 350 - Downtown A 101 A-101 500 A 110 A-110 Mianus A-215 700 - Redwood A-222 700 - 900 A-218 Brighton 600 A-217 700 - 750 - - 27 Mẫu tin có chiều dài động (tt) • Byte-String Representation – Tốn nhiều chi phí chiều dài mẫu tin thay đổi Perryridge A-102 400 A-201 Round Hill A-305 350 A-202 Brighton 950 900 Downtown A-101 500 A-110 Mianus A-215 700 - Redwood A-222 700 - 600 A-218 A-217 700 750 - - 28 14 Mẫu tin có chiều dài động (tt) • Fixed-Length Representation – Sử dụng hay nhiều mẫu tin có chiều dài cố định biểu diễn cho g mẫu tin có chiều dài động g – Có kỹ thuật • Reserved space – Sử dùng độ dài lớn mẫu tin cài đặt cho tất mẫu tin lại – Độ dài phải đảm bảo không dài thêm Perryridge A-102 400 Round Hill A-305 350 Mianus A-215 700 Downtown A-101 500 Redwood A-222 700 Brighton A-217 750 A-201 900 A-110 600 A-218 700 29 Mẫu tin có chiều dài động (tt) • Fixed-Length Representation • Pointer – Các mẫu tin có chiều dài động móc xích với thơng qua danh sách mẫu tin có chiều dài cố định – Có loại blocks tập tin » Anchor block – Chứa mẫu tin mảng account-info » Overflow block – Chứa mẫu tin mảng account-info Anchor block Perryridge A-102 400 Round Hill A-305 350 Mianus A-215 700 Downtown A-101 500 Redwood A-222 700 Brighton A-217 750 A-201 900 A-218 700 A-110 600 Overflow block 30 15 Cách tổ chức mẫu tin file • Khơng sắp: mẫu tin chèn vào chỗ trống file • Được Đ sắp: ắ mẫu ẫ tin ti lưu l vào đú vịị trí t í để đảm bảo thứ tự theo trường • Băm (Hashing): định vị mẫu tin thiết bị lưu trữ dùng hàm băm 31 Heap file • Là hình thức lưu trữ liệu record lưu không theo thứ tự logic (mà thứ tự thêm liệu) • Thường liệu quan hệ lưu file – Tìm kiếm: duyệt – Thêm: nhanh • Cách thức lưu trữ thao tác liệu ệ dễ,, thích hợp cho tập tin có kích thước nhỏ, chậm tập tin có kích thước lớn 32 16 Sequential file • Là hình thức lưu trữ liệu mẫu tin lưu trữ theo thứ tự trường search key • Link mẫu tin quan hệ thứ tự pointer • Thích hợp cho ứng dụng đặc trưng làm việc liệu xếp (theo search key) – Tìm kiếm: duyệt tìm • Nên lưu trữ vật lý theo thứ tự search key để giảm thiểu số block cần phải truy cập Nhưng: – Khi liệu lớn, thao tác Insert, Delete phức tạp • Insert: Định vị -> insert vào overflow block (≠ anchor block)-> phá vỡ thứ tự vật lý, phải tổ chức lại Anchor block … … … … … … Overflow block 33 Hashing file • Một hàm băm (hash function) thiết lập thuộc tính search key quan hệ • Ngun lý: “lưu đâu, tìm đó” • Chia tập tin thành lô (bucket) tùy giá trị search key Mỗi lơ có số block, link pointer Dữ liệu block tổ chức heap ợ g lô Giá trịị hàm băm giá g • B số lượng trị tìm kiếm số nguyên ∈ [0,B-1] cho biết lô chứa mẫu tin.Nếu khóa chuỗi ký tự, ta định nguyên tắc chuyển chuỗi ký tự thành số 34 17 Hashing file • Tìm kiếm mẫu tin khóa v – Tính h(v) để biết lơ, thực tìm kiếm lơ • Chèn – Tính h(v) để biết lơ Tìm kiếm khối cuối lơ, cịn chỗ chèn, cịn khơng cấp phát khối khác chèn vào cuối danh sách lơ h(v) • Xóa/ Sửa – Tìm kiếm sửa xóa (đánh dấu) – Sau xóa, phải thực bước hiệu chỉnh (dồn liệu khối) để giảm số lượng khối lô 35 Clustering file 10 20 TENPB ĐĐ KT HCM MANV TENNV … N2 N5 N6 B E G … … … TENPB ĐĐ KT HCM MANV TENNV … N1 N3 N4 A C D … … … Clustered tables MANV TENNV MAPB … N1 N2 N3 N4 N5 N6 A B C D E G 20 10 20 20 10 10 … … … … … … DL liên quan lưu nhau, tiết kiệm không gian MAPB TENPB ĐĐ 10 20 KT KD Unclustered tables HCM HN DL liên quan tách biệt, tốn khơng gian 36 18 Clustering file • cluster hình thành từ việc lưu liệu vài table chung vài block • Cluster key nhiều field chung table tham gia việc gom nhóm nhóm Cluster key định người dùng tạo cluster • Các table thường dùng chung kết (join operator ZY) để phục vụ cho nhu cầu truy xuất liệu • Việc lưu trữ có ích: – Giảm thời gian truy xuất đĩa số block phải đọc giảm – Giá trị field cluster key lưu lần lần, có record table khác tham chiếu đến dịng ⇒ tiết kiệm khơng gian để lưu trữ (và tạo mối quan hệ liệu) • Tổ chức dl theo kiểu cluster khơng ảnh hưởng đến việc tạo index table tham gia tạo cluster 37 Sử dụng cluster file • Chỉ định cluster giai đọan thiết kế vật lý • Chọn table để gom nhóm: – Các table chủ yếu phục vụ cho truy vấn (select), thêm (insert) cập nhật (update) – Chứa liệu truy vấn chung kết với tần suất cao • Chọn field làm cluster key – Cluster key phải có đủ giá trị phân biệt để record liên quan đến giá trị cluster key lấp gần đầy block liệu • Nếu có dịng q làm tốn khơng gian lưu trữ mà hiệu khơng đáng kể • Có thể định SIZE tạo cluster, số byte trung bình ước tính để lưu cluster • Nếu có nhiều dịng q khơng hiệu • Dùng cluster key có q giá trị, vd: PHAI, phản tác dụng 38 19 Index (1) • Dùng mục cho file giống việc dùng liệt kê danh mục (catalog) thư viện – Thông tin catalog xếp ⇒ tìm kiếm nhanh mà khơng phải duyệt tất • Về kỹ thuật thuật, có lọai index bản: – Index thứ tự (ordered indices) dựa giá trị làm index • Dùng PP tìm nhị phân file index • Index file có thứ tự gồm mẫu tin có chiều dài cố định gồm field – Field 1: khóa tìm kiếm – Field 2: trỏ trỏ đến block – Index dùng kỹ thuật băm (hash indices) • Đánh Đá h giá iá kỹ th thuật ật dùng dù iindex d • • • • Lọai truy xuất Thời gian truy xuất (access time) Thời gian Insert / delete Không gian đĩa dùng cho index 39 Index (2) • Dense / Sparse index – Dense index • File liệu có giá trị search key file index có nhiêu record • Mỗi record file index chứa giá trị search key trỏ trỏ đến record file liệu có giá trị trường search key – Sparse index • Các record tập tin index ứng với số giá trị file liệu trường search key (chứ tất giá trị search key dense index) • Để tìm giá trị, ta tìm tập tin index mẫu tin cho giá trị search key lớn =,