1. Trang chủ
  2. » Tất cả

Tiểu luận học phần cơ sở dữ liệu nâng cao đề tài indexing structure

31 6 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Indexing Structure
Tác giả Tạ Linh Đạt
Người hướng dẫn PGS. TS. Nguyễn Tuấn Đăng
Trường học Trường Đại Học Sài Gòn
Chuyên ngành Cơ sở dữ liệu nâng cao
Thể loại Bài tiểu luận học phần
Năm xuất bản 2022 – 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 31
Dung lượng 1,48 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1. Mục tiêu của đề tài tiểu luận (3)
    • 1.1 Trình bày cở sở lý thuyết (3)
      • 1.1.1 Primary Index (3)
      • 1.1.2 Clustering Index (6)
      • 1.1.3 Secondary Index (8)
      • 1.1.4 Lời giải bài toán của các Chỉ mục (10)
        • 1.1.4.1 Primary Index (10)
        • 1.1.4.2 Clustering Index (11)
        • 1.1.4.3 Secondary Index (12)
      • 1.1.5 Phần trình bày các Lưu đồ thuật toán của ba chỉ mục (13)
        • 1.1.5.1 Hình ảnh lưu đồ thuật toán cho Primary Index (14)
        • 1.1.5.2 Hình ảnh lưu đồ thuật toán Clustering Index (15)
        • 1.1.5.3 Hình ảnh lưu đồ thuật toán SecondaryIndex (16)
      • 1.1.6 Phần trình bày kết quả kiểm thử chương trình (17)
        • 1.1.6.1 Primary Index (17)
        • 1.1.6.2 Clustering Index (18)
        • 1.1.6.3 Secondary Index (19)
    • 1.2 Thuật toán cài đặt các công thức cho các chỉ mục (20)

Nội dung

Mục tiêu của đề tài tiểu luận: 1.1 Trình bày cơ lý thuyết về các loại chỉ mục: Primary Index, Clustering Index, - Chỉ mục chính được chỉ định trên trường khóa đặt hàng của một đơn đặt

Trang 1

Khoa: Công Nghệ Thông Tin (CLC)

BÀI TIỂU LUẬN

HỌC PHẦN CƠ SỞ DỮ LIỆU NÂNG CAO

Đề tài: Indexing Structure

Giáo viên hướng dẫn: PGS TS Nguyễn Tuấn Đăng

Sinh viên thực hiện: Tạ Linh Đạt

Lớp: DCT120C1

Thành phố Hồ Chí Minh, ngày 10 tháng 12 năm 2022

Trang 2

Mục lục

Phần mở đầu

2

1 Mục tiêu của đề tài tiểu luận: 2

1.1 Trình bày cở sở lý thuyết

2

1.1.1 Primary Index 2

1.1.2 Clustering Index 5

1.1.3 Secondary Index 7

1.1.4 Lời giải bài toán của các Chỉ mục: 9

1.1.4.1 Primary Index 9

1.1.4.2 Clustering Index 10

1.1.4.3 Secondary Index 11

1.1.5 Phần trình bày các Lưu đồ thuật toán của ba chỉ mục: 12

1.1.5.1 Hình ảnh lưu đồ thuật toán cho Primary Index: 13

1.1.5.2 Hình ảnh lưu đồ thuật toán Clustering Index 14

1.1.5.3 Hình ảnh lưu đồ thuật toán SecondaryIndex 15

1.1.6 Phần trình bày kết quả kiểm thử chương trình: 16

1.1.6.1 Primary Index 16

1.1.6.2 Clustering Index 17

1.1.6.3 Secondary Index 18

Các tài liệu đã tham khảo:

19

1.2 Thuật toán cài đặt các công thức cho các chỉ mục

19

Trang 3

Phần mở đầu

1 Mục tiêu của đề tài tiểu luận:

1.1 Trình bày cơ lý thuyết về các loại chỉ mục: Primary Index, Clustering Index,

- Chỉ mục chính được chỉ định trên trường khóa đặt hàng của một đơn đặt hàng tập tin hồ sơ

- Trường khóa sắp xếp thứ tự được sử dụng để sắp xếp vật lý các bản ghi tệp trên

ổ đĩa và mọi bản ghi đều có một giá trị duy nhất cho trường đó

- Chỉ mục chính là một tệp được sắp xếp có thứ tự có bản ghi có độ dài cố định

với hai lĩnh vực:

+ Trường đầu tiên có cùng kiểu dữ liệu với trường khóa sắp xếp thứ tự—được gọi là Khóa chính—của tệp dữ liệu

+ Trường thứ hai là một con trỏ đến một khối đĩa (một địa chỉ khối) Có

một mục nhập chỉ mục (hoặc bản ghi chỉ mục) trong tệp chỉ mục cho mỗi khối trong tệp dữ liệu

- Mỗi mục nhập chỉ mục có giá trị của trường khóa chính cho mục nhập đầu tiên

Ghi trong một khối và một con trỏ đến khối đó làm hai trường của nó

Trang 4

giá trị Chúng ta sẽ tham khảo hai giá trị trường của mục nhập chỉ mục i là <K(i), P(i)>

- Tổng số mục nhập trong chỉ mục giống như số lượng khối đĩa trong tệp dữ liệu được sắp xếp

- Bản ghi đầu tiên trong mỗi khối của tệp dữ liệu được gọi là bản ghi neo của khối, hoặc đơn giản là khối neo

Chỉ mục chính trên trường khóa thứ tự

Biểu đồ Primary Index (Copyright © 2007 Ramez Elmasri and Shamkant B Navathe)

Trang 5

*Phần đọc thêm về chỉ mục:

Các loại chỉ mục cấp đơn:

- Chỉ số chính

- Được xác định trên tệp dữ liệu được sắp xếp theo thứ tự

- Tệp dữ liệu được sắp xếp theo thứ tự trên một trường khóa

- Bao gồm một mục nhập chỉ mục cho mỗi khối trong dữ liệu tệp; mục nhập chỉ mục có giá trị trường chính cho bản ghi đầu tiên trong khối, được gọi là khối neo

- Một sơ đồ tương tự có thể sử dụng bản ghi cuối cùng trong một khối Các chỉ mục cũng có thể

được đặc trưng là dày đặc hoặc thưa thớt

- Các chỉ số cũng có thể được đặc trưng là dày đặc hoặc thưa thớt

+ Chỉ mục dày đặc có mục nhập chỉ mục cho mọi khóa tìm kiếm giá trị (và do đó là mọi bản ghi) trong tệp dữ liệu

+ Mặt khác, một chỉ số thưa thớt (hoặc không dày đặc) có mục nhập chỉ mục cho một số giá trị tìm kiếm

Vậy chỉ mục chính là dày đặc hoặc thưa thớt?

- Chỉ mục thưa thớt có ít mục nhập hơn số lượng

bản ghi trong tệp

- Do đó, một chỉ số chính là một chỉ số nondense (thưa thớt), vì nó bao gồm một mục nhập cho mỗi khối đĩa của tệp dữ liệu và các khóa của bản ghi neo của nó thay vì cho mọi giá trị tìm kiếm (hoặc mọi bản ghi)

Trang 6

1.1.2 Clustering Index

- Nếu các bản ghi trong tệp được đặt ở hàng vật lý trên thuộc tính không phải là khóa (trường đặt

hoặc là thuộc tính không là trường chính hay không là khóa chính)

- Có thể sử dụng 1 loại chỉ mục khác, được biết là chỉ mục phân cụm (Clustering Index), dùng

để tối ưu và tìm tất cả các bản ghi có cùng giá trị của trường phân cụm

- Chỉ mục phân cụm là 1 tệp được đặt theo thứ tự, và có 2 trường sau:

+ Trường đầu tiên thì sẽ cùng loại với trường phân cụm của tệp dữ liệu

+ Trường thứ hai là 1 con trỏ khối đĩa

- Có 1 truy nhập trong chỉ mục phân cụm (Clustering Index) cho mỗi giá trị có phân biệt của trường phân cụm

- Và nó có chứa 1 giá trị và con trỏ hướng đến khối đầu tiên ở tệp dữ liệu, với 1 bản ghi cí giá trị cho phân cụm của chính nó

Chỉ mục phân cụm trên trường khóa thứ tự

Biểu đồ Clustering Index (Copyright © 2007 Ramez Elmasri and Shamkant B Navathe)

Trang 7

1 Ví dụ khác về chỉ mục phân cụm:

Chỉ mục phân cụm trên trường khóa thứ tự

Biểu đồ Clustering Index (Copyright © 2007 Ramez Elmasri and Shamkant B Navathe)

*Phần đọc thêm về Clustering Index:

- Định nghĩa trên các tệp dữ liệu đã được sắp xếp

- Các tệp này được sắp xếp theo 1 trường không khóa không giống như chỉ mục chính, là cái

mặc định những cái trường được sắp xếp của tệp dữ liệu và có các giá trị riêng biệt cho mỗi bản ghi

- Bao gồm 1 chỉ mục truy nhập cho mỗi giá trị của trường; các chỉ mục truy nhập được hướng

tới khối dữ liệu đầu tiên mà nó chứa các bản ghi với các trường giá trị

Dày đặt hay thưa thớt?

- Ở ví dụ thứ 2 là của không dày đặt (thưa thớt) chỉ mục

Trang 8

- Chỉ mục là một tệp được sắp xếp có hai trường:

+ Trường đầu tiên có cùng kiểu dữ liệu với một số thứ tựtrường của tệp dữ liệu là trường lập chỉ mục

+ Trường thứ hai là con trỏ khối hoặc con trỏ bản ghi

+ Có thể có nhiều chỉ mục phụ (và do đó, việc lập chỉ mục trường) cho cùng một tệp

Dày đặc hay thưa thớt?

Bao gồm một mục cho mỗi bản ghi trong tệp dữ liệu; do đó, nó là một chỉ số dày đsố

*Có bao nhiêu chỉ mục?

- Lưu ý rằng một tệp có thể có nhiều nhất một vật lý trường đặt hàng, vì vậy nó có thể có

nhiều nhất một trường chính chỉ mục hoặc một chỉ mục phân cụm, nhưng không phải cả

hai

- Chỉ mục phụ có thể được chỉ định trên bất kỳ trường không theo thứ tự nào của tệp Một

tệp dữ liệu có thể có nhiều chỉ mục phụ ngoài quyền truy cập chính của nó phương pháp

- Chỉ mục phụ có thể được tạo trên một trường là một khóa ứng viên và có một giá trị duy

nhất trong mỗi bản ghi, hoặc trên trường không khóa có giá trị trùng lặp

Trang 9

*Cấu trúc truy cập chỉ mục phụ bật một trường khóa (duy nhất)

- Trong trường hợp này, có một mục nhập chỉ mục cho mỗi bản ghi trong tệp dữ liệu, chứa giá trị của trường cho bản ghi và một con trỏ tới khối mà bản ghi được lưu trữ hoặc để bản ghi chính nó

- Do đó, một chỉ số như vậy là dày đặc

- Các mục được sắp xếp theo thứ tự để chúng tôi có thể thực hiện Tìm kiếm nhị phân

Ví dụ Dense SecondarSecondary:

Chỉ mục phụ trên trường khóa thứ tự

Biểu đồ Secondary Index (nguồn Copyright © 2007 Ramez Elmasri and Shamkant B Navathe)

Trang 10

*Phần đọc thêm về Secondary Index:

- Chỉ mục phụ (Secondary Index) thường xuyên sẽ cần nhiều không gian lưu trữ và thời gian để tìm hơn là chỉ mục chính (Primary Index), vì nó sẽ có nhiều số lượng mục nhập hơn

- Tuy nhiên, sự cải thiện trong thười gian tìm kiếm cho 1 bản ghi tùy ý sẽ lớn hơn đối với chỉ mục phụ rất nhiều đối với một chỉ mục chính, nên vì thế chúng ta sẽ phải thực hiện tìm kiếm tuyết tính trên tệp dữ liệu, nếu chỉ mục phụ không có tồn tại Đối với 1 chỉ mục chính, chúng ta vẫn có thể

sử dụng tìm kiếm nhị phân trên cái tệp dữ liệu chính, thậm chí nếu chỉ mục đó không có tồn tại 1.1.4 Lời giải bài toán của các Chỉ mục:

1.1.4.1 Primary Index

Các dữ liệu đầu vào của đề:

Record: r = 600000 records

Block size: B = 4096 bytes

Record length: R = 40 bytes

Field size: V = 9 bytes

Block pointer: P = 6 bytes

Lời giải bài toán Primary Index:

1 What is the blocking factor value of the data file?

Blocking factor value of the data file is: bfr = ⌊B / R⌋ = ⌊4096 / 40⌋ = 102 records/block

2 How many data blocks are there for the data file?

Number of blocks need for the data file is: b = ⌈r / bfr⌉ = ⌈600000 / 102⌉ = 5883 blocks

3 How many block accesses for a linear search on the data file?

Block accesses for a linear search on the data file is: b / 2 = 5883 / 2 = 2942 block accesses

4 How many block accesses for a binary search on the data file?

Block accesses for a binary search on the data file is: ⌈log 2 b⌉ = ⌈log 2 5883⌉ = 13 block accesses

5 How many block accesses for a binary search on the index file?

Block accesses for a binary search on the index file is: : ⌈log 2 bi⌉ = ⌈log 2 22⌉ = 5 block accesses

Trang 11

6 How many block accesses for a binary search with the support of primary index?

Block accesses for a binary search with the support of primary index: ⌈log 2 bi⌉ + 1 = 6 block accesses Assume that the file has the ordering key field SSN and we want to construct a primary index for the file Assume the field size VSSN = 9 bytes and the record / block pointer size PR = 6 bytes

index entry size: Ri = (V + P) = 15 bytes

Index blocking factor: bfri = ⌊B / Ri⌋ = ⌊4096 / 15⌋ = 273 entries/block

number of index entries: ri = number of data file blocks = b = 5883

number of index blocks: bi = ⌈ri / bfri⌉ = ⌈5883 / 273⌉ = 22 blocks

1.1.4.2 Clustering Index

Các dữ liệu đầu vào của đề:

Record: r = 600000 records

Block size: B = 4096 bytes

Record length: R = 40 bytes

Field size: V = 5 bytes

Block pointer: P = 6 bytes

Zip code: 500 zip

Lời giải bài toán Clustering Index

1 What is the blocking factor value?

Blocking factor value of the data file is: bfr = ⌊B / R⌋ = ⌊4096 / 40⌋ = 102 records/block

2 How many data blocks are there?

Number of blocks need for the data file is: b = ⌈r / bfr⌉ = ⌈600000 / 102⌉ 5883 blocks

3 How many block accesses for linear search on the data file?

Block accesses for a linear search on the data file is: b / 2 = 5883 / 2 = 2942 block accesses

4 How many block accesses for a binary search on the data file?

Block accesses for a binary search on the data file is: ⌈log 2 b⌉ = ⌈log 2 5883⌉ = 13 block accesses

5 How many block accesses for a binary search on the index file?

Trang 12

Block accesses for a binary search on the index file is: ⌈log 2 bi⌉ : 1 block accesses

6 How many block accesses for a binary search with the support of Clustering Index?

Block accesses for a binary search with the support of clustering index: >= ⌈log 2 bi⌉ + 1 : 2 block accesses

Assume that the file has the ordering key field SSN and we want to construct a primary for the file Assume the field size VSSN = 5 bytes and the record/block pointer size PR = 6 bytes

index entry size: Ri = (V + P) : 11 bytes

Index blocking factor: bfri = ⌊B / Ri⌋ = ⌊4096 / 11⌋ = 372 entries/block

number of index entries: ri = number of data file blocks = b = 5883

number of index blocks: bi = ⌈Zip / bfri⌉ = ⌈500 / 372⌉ = 2 blocks

1.1.4.3 Secondary Index

Các dữ liệu đầu vào của đề:

Record: r = 600000 records

Block size: B = 4096 bytes

Record length: R = 40 bytes

Field size: V = 9 bytes

Block pointer: P = 6 bytes

Lời giải bài toán Secondary Index

1 What is the blocking factor value?

Blocking factor value of the data file is: bfr = ⌊B / R⌋ = ⌊4096 / 40⌋ = 102 records/block

2 How many data blocks are there?

Number of blocks need for the data file is: b = ⌈r / bfr⌉ = ⌈600000 / 102⌉ = 5883 blocks

Trang 13

3 How many block accesses for a linear search on the data file?

Block accesses for a linear search on the data file is: b / 2 = 5883 / 2 = 2942 block accesses

4 How many block accesses for a binary on the data file?

Block accesses for a binary search on the data file is: ⌈log 2 b⌉ = ⌈log 2 5883⌉ = 13 block accesses

5 How many block accesses for a binary search on the index file?

Block accesses for a binary search with the support of secondary index: ⌈log 2 bi⌉ = ⌈log 2 2198⌉ = 12 block accesses

6 How many block accesses for a binary search with the support of a Secondary Index?

Total Block accesses for a binary search with the support of secondary index: ⌈log 2 bi⌉ +1 =13 block accesses

Assume that the file has the ordering key field SSN and we want to construct a primary index for the file Assume the field size VSSN = 9 bytes and the record/block pointer size PR = 6 bytes

index entry size: Ri = (V + P) = 9 + 6 = 15 bytes

Index blocking factor: bfri = ⌊B / Ri⌊ = ⌊4096 / 15⌊ = 273 entries / block

number of index blocks: bi = ⌈ri / bfri⌉ = ⌈600000 / 273⌉ = 2198 blocks

1.1.5 Phần trình bày các Lưu đồ thuật toán của ba chỉ mục:

+ Primary Index

+ Clustering Index

+ Secondary Index

Trang 14

1.1.5.1 Hình ảnh lưu đồ thuật toán cho Primary Index:

Trang 15

1.1.5.2 Hình ảnh lưu đồ thuật toán Clustering Index

Trang 16

1.1.5.3 Hình ảnh lưu đồ thuật toán SecondaryIndex

Trang 17

1.1.6 Phần trình bày kết quả kiểm thử chương trình:

1.1.6.1 Primary Index

Màn hình nhập từ console:

Xuất thông tin và kết quả chương trình về FILE output.txt::

Trang 18

1.1.6.2 Clustering Index

Màn hình nhập từ console:

Xuất thông tin và kết quả chương trình về FILE output.txt:

Trang 19

1.1.6.3 Secondary Index

Màn hình nhập từ console:

Xuất thông tin và kết quả chương trình về FILE output.txt:

Trang 20

Các tài liệu đã tham khảo:

Tài liệu thứ 1: Chapter 14 (fcis2023.me) (Copyright © 2007 Ramez Elmasri and Shamkant B Navathe) Tài liệu thứ 2: https://scanftree.com/dbms/classification-of-indexing (Scanfree)

Tài liệu thứ 3: Indexing-Structures-for-File.pdf (11For more details on insertion and deletion algorithms for B+ trees, consult Ramakrishnan and Gehrke [2003])

Phụ lục Toàn bộ source code chi tiết của chương trình: 19

1.2 Thuật toán cài đặt các công thức cho các chỉ mục

Toàn bộ source code chi tiết của chương trình:

Trang 21

Console.WriteLine("1 Primary Index ");

Console.WriteLine("2 Clustering index ");

Console.WriteLine("3 Secondary index ");

sw.WriteLine("Block size: B = " + B + " bytes ");

sw.WriteLine("Record length: R = " + R + " bytes ");

sw.WriteLine("Field size: V = " + fS + " bytes ");

sw.WriteLine("Block pointer: P = " + bP + " bytes ");

sw.WriteLine("********************************************");

Trang 23

sw.WriteLine("Assume that the file has the ordering key field SSN and we want to construct a primary index for the file Assume the field size VSSN = " + fS + " bytes and the record/block pointer size PR = " + bP + " bytes ");

sw.WriteLine("index entry size: Ri = (V + P) : " + a1 + " bytes ");

sw.WriteLine("Index blocking factor: bfri =(B / Ri) : " + a2 + " entries/block ");

sw.WriteLine("number of index entries: ri = number of data file blocks = b = " + v2); sw.WriteLine("number of index blocks: bi = (ri / bfri) : " + a3 + "blocks ");

Trang 24

sw.WriteLine("Cac du lieu dau vao gom co: ");

sw.WriteLine("********************************************");

sw.WriteLine("Record: r = " + r + " records");

sw.WriteLine("Block size: B = " + B + " bytes");

sw.WriteLine("Record length: R = " + R + " bytes");

sw.WriteLine("Field size: V = " + fS + " bytes");

sw.WriteLine("Block pointer: P = " + bP + " bytes");

Ngày đăng: 14/03/2023, 10:22

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w