Tiểu luận học phần: Cơ sở dữ liệu nâng cao. Đề tài: CẤU TRÚC CHỈ MỤC FILE. Tiểu luận học phần: Cơ sở dữ liệu nâng cao. Đề tài: CẤU TRÚC CHỈ MỤC FILE Tiểu luận học phần: Cơ sở dữ liệu nâng cao. Đề tài: CẤU TRÚC CHỈ MỤC FILE
MỤC LỤC LỜI NÓI ĐẦU 1 CÁC LOẠI CHỈ MỤC ĐƯỢC SẮP XẾP ĐƠN MỨC 1.1 Chỉ mục sơ cấp 1.2 Chỉ mục cụm 1.3 Chỉ mục thứ cấp .10 1.4 Tóm tắt 13 CHỈ MỤC ĐA MỨC 14 CÁC CHỈ MỤC ĐA MỨC ĐỘNG SỬ DỤNG B-TREES VÀ B +-TREES 18 3.1 Cây tìm kiếm B-tree 19 3.2 Cây B+-Tree 24 CÁC CHỈ MỤC TRÊN NHIỀU KHÓA .33 4.1 Chỉ mục có thứ tự nhiều thuộc tính 34 4.2 Phương pháp băm phân hoạch (partitioned hashing) .34 4.3 Các file lưới (grid) 35 CÁC LOẠI CHỈ MỤC KHÁC 36 5.1 Sử dụng phương pháp băm cấu trúc liệu khác làm mục 36 5.2 Chỉ mục logic mục vật lý .36 5.3 Thảo luận .36 TÓM TẮT 37 Tiểu luận môn CSDL nâng cao: “Cấu trúc mục cho file” LỜI NĨI ĐẦU Trong tiểu luận này, chúng tơi mô tả số cấu trúc truy xuất bổ sung gọi mục (indexes), chúng sử dụng để tăng tốc độ tìm kiếm ghi nhằm đáp ứng cho điều kiện tìm kiếm Các cấu trúc mục thường cung cấp đường dẫn truy xuất thứ cấp (secondary access paths), cách khác để truy xuất vào ghi mà không ảnh hưởng đến vị trí vật lý ghi đĩa Chúng cho phép truy xuất cách hiệu vào ghi dựa trường mục (indexing field) sử dụng để xây dựng mục Về bản, trường file sử dụng để tạo mục nhiều mục trường khác xây dựng file Có nhiều loại mục khác nhau, loại sử dụng cấu trúc liệu (CTDL) cụ thể để tăng tốc độ tìm kiếm Để tìm ghi nhiều ghi file dựa điều kiện chọn lọc trường mục, cần phải truy xuất vào mục, mục trỏ đến nhiều khối file mà có chứa ghi mong muốn Loại mục phổ biến dựa file xếp (các mục đơn mức) CTDL (các mục đa mức, B +-tree) Các mục xây dựng dựa kỹ thuật băm (hashing) CTDL tìm kiếm khác Chúng mô tả loại mục xếp đơn mức khác - mục sơ cấp (primary index), mục thứ cấp (secondary index) mục phân cụm (clustering) – phần Bằng cách xem mục đơn mức file xếp, phát triển tiếp mục bổ sung cho nó, đưa khái niệm mục đa mức Một kiểu mục thông dụng gọi ISAM (phương pháp truy xuất theo mục - Indexed Sequential Access Method) dựa ý tưởng Chúng ta thảo luận mục đa mức phần Trong phần tập trung mô tả B-trees B +-trees CTDL thường sử dụng hệ quản trị sở liệu (HQTCSDL) để thực việc thay đổi mục đa mức B +-trees trở Tiểu luận môn CSDL nâng cao: “Cấu trúc mục cho file” thành cấu trúc mặc định chấp nhận phổ biến cho việc tạo mục hầu hết HQTCSDL quan hệ Phần tập trung vào số cách khác để truy xuất liệu dựa kết hợp nhiều khóa Trong phần 5, thảo luận làm cách để CTDL khác, chẳng hạn cấu trúc băm, sử dụng để xây dựng mục Chúng giới thiệu tóm tắt khái niệm mục logic, mục đưa mức bổ sung gián tiếp từ mục vật lý, làm cho mục vật lý trở nên mềm dẻo có khả mở rộng tổ chức Phần phần tóm tắt tiểu luận Chúng tơi xin chân thành cảm ơn TS Hồng Quang tận tình giảng dạy bảo cho chúng tơi nhiều điều bổ ích Do khả có hạn hẳn tiểu luận khơng tránh khỏi thiếu sót hạn chế Chúng mong tiếp tục nhận bảo Thầy giáo TS Hoàng Quang để hồn chỉnh hiểu biết Tiểu luận mơn CSDL nâng cao: “Cấu trúc mục cho file” CÁC LOẠI CHỈ MỤC ĐƯỢC SẮP XẾP ĐƠN MỨC Ý tưởng đằng sau cấu trúc truy xuất mục xếp tương tự với mục sử dụng sách, liệt kê mục quan trọng phần cuối sách theo thứ tự alphabet với danh sách số trang mà mục xuất sách Chúng ta tìm kiếm mục để tìm danh sách địa - trường hợp số trang – sử dụng địa để định vị mục sách cách tìm kiếm trang xác định Có thể hình dung khơng có dẫn khác phải duyệt chậm từ tồn sách để tìm mục mà quan tâm; điều tương ứng với việc thực phép tìm kiếm tuyến tính file Tất nhiên, hầu hết sách có thơng tin bổ sung, chẳng hạn tiêu đề chương phần mục, giúp tìm mục mà khơng phải tìm toàn sách Tuy nhiên, mục định xác nơi mà mục xuất sách Đối với file có cấu trúc ghi chứa số trường (hoặc thuộc tính), cấu trúc truy xuất mục thường định nghĩa trường đơn lẻ file, gọi trường mục (hoặc thuộc tính mục) Chỉ mục thường lưu trữ giá trị trường mục với danh sách trỏ trỏ đến tất khối đĩa chứa ghi lưu trữ giá trị trường Các giá trị mục thứ tự, thực phép tìm kiếm nhị phân mục File mục nhỏ nhiều so với file liệu, trình tìm kiếm mục sử dụng phép tìm kiếm nhị phân hiệu Đối với mục đa mức (xem phần 2) lại khơng cần thiết phải tìm kiếm nhị phân tạo mục cho mục Có số loại mục xếp Một mục sơ cấp xác định trường khóa có thứ tự (ordering key field) file xếp ghi Chúng ta biết trường khóa có thứ tự sử dụng để xếp theo thứ tự vật lý ghi file đĩa, ghi có giá trị cho trường Nếu trường có thứ tự khơng phải trường khóa - nghĩa vơ số ghi file có giá trị trường - loại mục khác, gọi mục cụm sử dụng Chú ý file có nhiều trường xếp theo thứ tự vật lý, có nhiều mục sơ cấp mục cụm, không đồng thời hai Một loại mục thứ ba, gọi mục thứ cấp, xác định trường khơng có thứ tự file Một file có nhiều mục thứ cấp bổ sung cho phương pháp truy xuất sơ cấp Chúng ta thảo luận loại mục đơn mức phần nhỏ sau Trong tiểu luận này, thuật ngữ trường thuộc tính tương đương Tiểu luận môn CSDL nâng cao: “Cấu trúc mục cho file” 1.1 Chỉ mục sơ cấp Một mục sơ cấp file xếp mà ghi có độ dài cố định gồm hai trường Trường thứ có kiểu liệu với trường khóa có thứ tự - gọi khóa (primary key) - file liệu, trường thứ hai trỏ trỏ đến khối đĩa (một địa khối) Có đầu vào mục – index entry (hoặc ghi mục – index record) file mục khối file liệu Mỗi đầu vào mục có giá trị trường khóa (primary key field) cho ghi khối trỏ trỏ đến khối giá trị hai trường Chúng ta gọi hai giá trị trường đầu vào mục i Để tạo mục sơ cấp file xếp, sử dụng trường Name làm khóa chính, trường khóa có thứ tự file (giả sử giá trị Name nhất) Mỗi đầu vào mục có giá trị Name trỏ Ba đầu vào mục sau: Hình minh họa cho mục sơ cấp Tổng số đầu vào mục giống với số khối đĩa file liệu xếp Bản ghi khối file liệu gọi ghi gốc (anchor record) khối, hay đơn giản gọi block anchor2 Chúng ta sử dụng kịch tương tự này, ghi cuối khối (thay ghi đầu tiên) block anchor Điều cải thiện không đáng kể hiệu thuật tốn tìm kiếm Tiểu luận mơn CSDL nâng cao: “Cấu trúc mục cho file” Hình Chỉ mục sơ cấp trường khóa có thứ tự file ghi EMPLOYEE với Name trường khóa có thứ tự Các mục mơ tả trù mật thưa thớt Một mục trù mật có đầu vào mục cho giá trị khóa tìm kiếm (và cho ghi) file liệu Trong đó, mục thưa (hoặc khơng trù mật), có đầu vào mục cho số giá trị tìm kiếm Vì vậy, mục sơ cấp mục không trù mật (thưa), bao gồm đầu vào cho khối đĩa file liệu khóa ghi gốc, thay đầu vào cho giá trị tìm kiếm (hoặc ghi) Tiểu luận môn CSDL nâng cao: “Cấu trúc mục cho file” Về thực chất, file mục cho mục sơ cấp cần khối so với file liệu lý sau Thứ nhất, số đầu vào mục so với số ghi file liệu Thứ hai, đầu vào mục thường có kích thước nhỏ so với ghi liệu có trường; đó, khối đặt số đầu vào mục nhiều so với số ghi liệu Vì vậy, phép tìm kiếm nhị phân file mục địi hỏi truy xuất khối so với phép tìm kiếm nhị phân file liệu Chú ý phép tìm kiếm nhị phân cho file liệu xếp yêu cầu log2b lần truy xuất khối Nhưng file mục sơ cấp chứa bi khối, để định vị ghi với giá trị tìm kiếm phải yêu cầu phép tìm kiếm nhị phân mục truy xuất đến khối có chứa ghi đó: tổng cộng có log2bi + lần truy xuất Một ghi mà giá trị khóa K nằm khối có địa P(i), K(i) ≤ K < K(i+1) Khối thứ i file liệu chứa tất ghi thứ tự vật lý ghi file trường khóa Để thu ghi, với giá trị K trường khóa biết, thực phép tìm kiếm nhị phân file mục để tìm đầu vào mục thích hợp i, sau thu khối file liệu mà có địa P(i)3 Ví dụ minh họa việc tiết kiệm số lần truy xuất khối thu sử dụng mục sơ cấp để tìm kiếm ghi Ví dụ Giả sử có file xếp với r = 30,000 ghi lưu trữ đĩa với kích thước khối B = 1024 bytes Các ghi file có kích thước cố định khơng thay đổi, với độ dài ghi R = 100 bytes Hệ số tạo khối (blocking factor) cho file bfr = (B/R) = (1024/100) = 10 ghi cho khối Số lượng khối cần cho file b = (r/bfr) = (30,000/10) = 3000 khối Một phép tìm kiếm nhị phân file liệu cần khoảng log2b = log23000 = 12 lần truy xuất khối Bây giả sử trường khóa có thứ tự file V có chiều dài bytes, trỏ khối P có chiều dài bytes, xây dựng mục sơ cấp cho file Kích thước đầu vào mục Ri = (9 + 6) = 15 bytes, hệ số tạo khối cho mục bfri = (B/Ri) = (1024/15) = 68 đầu vào cho khối Tổng số đầu vào mục ri số khối file liệu, tức 3000 khối Vì vậy, số lượng khối mục bi = (ri/bfri) = (3000/68) = 45 khối Để thực phép tìm kiếm nhị phân file mục, cần (log2bi) = log245 = lần truy xuất khối Để tìm kiếm ghi cách sử dụng mục, cần thêm lần truy xuất khối đến file liệu, tổng số +1 = lần truy xuất khối – cải tiến so với phép tìm kiếm nhị phân file liệu (yêu cầu 12 lần truy xuất khối) Lưu ý cơng thức không file liệu xếp theo trường khơng phải khóa; trường hợp này, giá trị mục block anchor bị lặp lại ghi cuối block kề trước Tiểu luận môn CSDL nâng cao: “Cấu trúc mục cho file” Một vấn đề với mục sơ cấp - chẳng hạn với file xếp – thao tác chèn xóa ghi Với mục sơ cấp, vấn đề phức tạp thực việc chèn ghi vào vị trí file liệu, khơng phải di chuyển ghi nơi khác để dành không gian trống cho ghi mà phải thay đổi số đầu vào mục, việc di chuyển ghi làm thay đổi ghi gốc số khối Việc sử dụng file overflow chưa xếp làm giảm bớt vấn đề Một cách khác sử dụng danh sách liên kết ghi overflow cho khối file liệu Điều tương tự phương pháp giải ghi overflow mô tả với kỹ thuật băm Các ghi bên khối danh sách liên kết overflow xếp để cải thiện thời gian truy xuất Việc xóa ghi xử lý cách sử dụng dấu hiệu xóa (marker) 1.2 Chỉ mục cụm Nếu ghi file xếp theo thứ tự vật lý trường khơng khóa – chúng khơng có giá trị phân biệt cho ghi – trường gọi trường phân cụm (clustering field) Chúng ta tạo loại mục khác, gọi mục cụm, để tăng tốc độ truy xuất ghi có giá trị trường phân cụm Loại mục khác với mục sơ cấp (chỉ mục sơ cấp yêu cầu trường có thứ tự file liệu phải có giá trị phân biệt cho ghi) Một mục cụm file xếp thứ tự, gồm có hai trường Trường thứ có kiểu với trường phân cụm file liệu, trường thứ hai trỏ khối Có đầu vào mục cụm giá trị phân biệt trường phân cụm, chứa giá trị trỏ trỏ đến khối file liệu mà có chứa ghi với giá trị giá trị trường phân cụm Hình minh họa ví dụ Chú ý việc chèn xóa ghi làm nảy sinh vấn đề ghi liệu xếp theo thứ tự vật lý Để làm giảm bớt vấn đề việc chèn ghi, thông thường dự trữ trước khối (hoặc nhóm khối liền nhau) cho giá trị trường phân cụm; tất ghi với giá trị đặt vào khối (hoặc nhóm khối) Điều làm cho việc chèn xóa ghi dễ dàng thực Hình điều Tiểu luận môn CSDL nâng cao: “Cấu trúc mục cho file” Hình Một mục cụm trường khơng khóa có thứ tự Dept_number file EMPLOYEE Tiểu luận môn CSDL nâng cao: “Cấu trúc mục cho file” Hình Chỉ mục cụm với cụm khối riêng biệt cho nhóm ghi chia sẻ giá trị cho trường phân cụm Một mục cụm ví dụ khác mục khơng trù mật có đầu vào cho giá trị riêng biệt trường mục, mà theo định nghĩa trường khơng khóa, có giá trị trùng thay giá trị phân biệt cho ghi file Ta thấy có số điểm tương đồng Hình Hình Một mục tương tự cấu trúc thư mục sử dụng cho kỹ thuật băm mở rộng Cả hai thực tìm kiếm để tìm trỏ trỏ đến khối liệu chứa ghi mong