Tổ chức dữ liệu thƣờng trú bộ nhớ

Một phần của tài liệu Nghiên cứu cơ sở dữ liệu trong bộ nhớ giải quyết bài toán đa giao dịch (Trang 26 - 50)

Trong phần này giới thiệu cấu trúc của các phân đoạn và các phân vùng, chúng là các đơn vị cơ bản của địa chỉ và phân bổ bộ nhớ dùng để quản lý tất cả các đối tƣợng CSDL; cấu trúc của các quan hệ, các quan hệ tạm, các chỉ mục; các mục CSDL mà mô tả các nội dung của các quan hệ và các chỉ mục.

2.1.3.1. Các phân đoạn và các phân vùng

Khả năng đánh địa chỉ trực tiếp của các thực thể CSDL cho thấy rằng các lân cận vật lý gần của các bản ghi là không quan trọng trong hiệu suất lấy dữ liệu (thực vậy, các bản ghi của một quan hệ có thể đƣợc rải trên khắp bộ nhớ). Tuy nhiên, các thành phần khác của CSDL yêu cầu các bản ghi (và các thành phần chỉ mục) đƣợc tổ chức với thiết kế cụm và mô-đun. Vì lý do quản lý bộ nhớ, các quan hệ và các chỉ mục mỗi cái có một không gian bộ nhớ riêng biệt, cho phép chúng tạo, tổ chức lại hoặc phá hủy mà không ảnh hƣởng tới các quan hệ và các chỉ mục khác. Các hoạt động checkpoint ghi vào các phần đĩa của các quan hệ hoặc các chỉ mục; có các bản ghi dữ liệu sắp xếp trong một tổ chức phi cụm sẽ làm cho thủ tục checkpoint quá phức tạp.

Mọi đối tƣợng CSDL (quan hệ, chỉ mục, hoặc cấu trúc dữ liệu hệ thống) đƣợc lƣu trữ trong phân đoạn logic của chúng. Các phân đoạn bao gồm các phân vùng có kích thƣớc cố định, đó là cấp phát đơn vị bộ nhớ cho bộ nhớ cơ sở ánh xạ phần cứng. Các phân vùng đại diện cho một đơn vị đầy đủ của bộ nhớ; các thực thể CSDL đƣợc lƣu trữ trong các phân vùng và không vƣợt qua ranh giới phân vùng. Các phân vùng cũng đƣợc sử dụng nhƣ đơn vị truyền dữ liệu vào ổ cứng trong các

18

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

hoạt động của checkpoint. Kích thƣớc phân vùng tối ƣu đƣợc xác định bởi nhiều yếu tố: Hiệu suất lƣu trữ, hỗ trợ bảng phân vùng cơ sở và hiệu suất checkpoint. Nhƣ vậy, chọn lựa và kích thƣớc tối ƣu liên quan đến việc xử lý một danh sách cân đối. Một kích thƣớc phân vùng lớn có thể dẫn đến phân mảnh quá nhiều bộ nhớ trong hoặc có thể gây ra quá nhiều dữ liệu sạch phải ghi trong một hoạt động checkpoint. Mặt khác, một kích thƣớc phân vùng nhỏ có thể gây nên một số lƣợng lớn của phân vùng cần cho một đối tƣợng, do đó tạo ra nhiều không gian không cần thiết cho các mục mà giữ thông tin phân vùng và cho bộ nhớ cơ sở ánh xạ phần cứng.

Hình 2.1. Cấu trúc phân đoạn

Các phân vùng đƣợc đánh địa chỉ offset logic từ điểm bắt đầu phân đoạn của chúng (Hình 2.1). Sau khi tạo ra, một phân đoạn sẽ bao gồm một tập các phân vùng tiếp giáp (Hình 2.1a). Khi các thực thể trong phân đoạn bị xóa và có thể tổ chức lại, một vài phân vùng có thể đƣợc loại bỏ, do đó tạo ra “các lỗ hổng” trong phân đoạn. Các phân vùng lân cận logic không làm ảnh hƣởng đến việc phát hiện ra các địa chỉ bộ nhớ không hợp lệ, vì chúng đƣợc giữ bởi phần cứng ánh xạ bộ nhớ cơ sở sử dụng một bảng phân vùng của phân đoạn. Tạo ra một phân vùng mới cho một phân đoạn liên quan tới tạo ra một phần tử mới trong bảng phân vùng của phân đoạn và phân phối bộ nhớ vật lý cho phân vùng mới. Danh mục quan hệ duy trì một phần tử

10 3 2 1 3 6 8

a) Phân đoạn mới đƣợc chèn b) Phân đoạn sau hoạt động cập nhật Các phân

19

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

cho mỗi phân vùng trong một quan hệ, vì vậy các địa chỉ phân vùng hợp lệ mới có thể đƣợc tạo ra sử dụng danh sách này.

2.1.3.2. Các quan hệ

Các phân vùng quan hệ là các đơn vị độc lập của bộ nhớ mà chứa các bản ghi của các quan hệ và các bản ghi không vƣợt qua ranh giới phân vùng. Một phân vùng quan hệ chứa thông tin kiểm soát, một danh sách bản ghi mà phát triển từ dƣới lên và String Space Heap đƣợc phát triển từ trên xuống (Hình 2.2). Bộ kiểm soát thông tin mô tả trạng thái của phân vùng, bao gồm tính toán số lƣợng không gian trống của String Space Heap, một con trỏ trỏ vào một danh sách các khe bản ghi tự do, tính toán các khe bản ghi sử dụng, tính toán số byte String Space Heap sử dụng và một chốt kiểm soát khối mà hạn chế truy cập tới phân vùng trong quá trình các hoạt động cập nhật.

Hình 2.2. Cấu trúc phân vùng quan hệ

Vì các địa chỉ bộ nhớ đƣợc sử dụng định danh bản ghi nên các bản ghi thay đổi vị chí càng ít càng tốt. Do đó, các bản ghi đƣợc tạo độ dài cố định vì vậy mà các bản ghi mới đƣợc chèn vào có thể dễ dàng điền đầy các lỗ hổng bị bỏ lại bởi các bản ghi bị xóa trƣớc đó, nhƣ vậy tránh đƣợc sự cần thiết cho việc tổ chức lại danh sách bản ghi để phục hồi các khối bộ nhớ. Các chuỗi có độ dài thay đổi đƣợc lƣu trữ riêng trong String Space Heap và các địa chỉ offset của chuỗi đƣợc lƣu trữ trong các bản ghi có độ dài cố định. Mặc dù tính sẵn sàng tiếp theo của khe bản ghi dữ liệu tự do đƣợc sử dụng để giữ một bản ghi đƣợc chèn mới trong khi đang xử lý bình

Kiểm soát thông tin

String Space Heap

Danh sách bản ghi Không gian trống

20

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

thƣờng, nó có thể là cần thiết để phân bổ một khe cụ thể trong quá trình khôi phục; do đó danh sách các khe bản ghi tự do đƣợc quản lý nhƣ là một danh sách liên kết kép. Các bản ghi chứa thông tin kiểm soát mô tả trạng thái của khe bản ghi (bản ghi hợp lệ hoặc bản ghi bị xóa) và khả năng các giá trị của trƣờng là rỗng. Khi đó phải có chỗ cho một cờ trạng thái và hai con trỏ để duy trì danh sách kép rỗng. Các bản ghi có một yêu cầu kích thƣớc tối thiểu bằng với kích thƣớc của cờ cộng với kích thƣớc của hai danh sách con trỏ. Độ dài của bản ghi và thông tin địa chỉ offset của trƣờng không cần đƣợc lƣu trữ với các bản ghi riêng biệt, vì thông tin này là không đổi đối với một quan hệ. Do đó nó chỉ đƣợc lƣu trữ một lần trong phần tử mục của quan hệ.

Vì rằng các lỗ hổng gây ra bởi việc xóa đƣợc cho phép có trong không gian bản ghi của các phân vùng quan hệ, di chuyển trực tiếp cần yêu cầu cấu trúc bổ sung để liên kết bản ghi hợp lệ trong một chuỗi. Thay vì, di chuyển trực tiếp của một phân vùng quan hệ không đƣợc phép, tất cả các truy cập tới quan hệ đƣợc thực hiện thông qua một chỉ mục và tất cả các quan hệ đƣợc yêu cầu phải có ít nhất một chỉ mục.

2.1.3.3. Các quan hệ tạm

Các quan hệ tạm chứa các kết quả truy vấn trung gian và cuối cùng. Hầu hết các kết quả truy vấn bao gồm thông tin mà thực sự tồn tại trong CSDL, nhƣng một vài truy vấn tính toán các giá trị mới (ví dụ: các truy vấn chứa các phép toán tổng hợp). Khi không có các giá trị tính toán, các quan hệ tạm gồm có một danh sách các con trỏ bản ghi và một bộ mô tả kết quả mà thể hiện tên các trƣờng thuộc quan hệ tạm. (Mỗi bản ghi kết quả có thể chứa vài con trỏ bản ghi, mỗi con trỏ bản ghi tƣơng ứng với một bản ghi riêng biệt với các trƣờng tham gia trong bản ghi kết quả cuối cùng). Bộ mô tả đóng vai trò vị trí của phép chiếu (projection), sự trích trọn trƣờng là không cần thiết.

Khi một quan hệ tạm thực hiện chứa các giá trị tính toán, cấu trúc của nó hầu nhƣ đồng nhất với một quan hệ thông thƣờng trừ trƣờng hợp đối với bộ mô tả bổ sung. Chỉ trong các trƣờng hợp hiếm hoi thì các phân vùng quan hệ tạm sẽ chứa các

21

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

không gian chuỗi, vì là sẽ yêu cầu một truy vấn mà sử dụng một phép tổng hợp để tạo ra các chuỗi có độ dài thay đổi mới. Không nhƣ các quan hệ thông thƣờng, một quan hệ tạm có thể đƣợc viếng thăm trực tiếp bởi vì không có các lỗ hổng trong danh sách bản ghi, tuy nhiên cũng có khả năng có các chỉ mục trong một quan hệ tạm. (adsbygoogle = window.adsbygoogle || []).push({});

Một ví dụ điển hình của quan hệ tạm đó là giả sử có quan hệ Nhan_vien và quan hệ Phong (Hình 2.3) đƣợc liên kết trên các trƣờng Ma_Phong của chúng. Với truy vấn: Lấy tên nhân viên, tuổi nhân viên và tên phòng cho tất cả các nhân viên có tuổi dƣới 65. Mỗi kết bản ghi kết quả trong danh sách tạm sẽ chứa một cặp con trỏ bản ghi, một con trỏ trỏ tới bản ghi Nhan_vien và một con trỏ trỏ tới bản ghi Phong, và bảng mô tả kết quả liệt kê các trƣờng trong mỗi quan hệ xuất hiện trong bảng kết quả.

Hình 2.3. Quan hệ và Thiết kế chỉ mục 2.1.3.4. Các chỉ mục

Không giống nhƣ các phân vùng quan hệ, các phân vùng chỉ mục không có các thực thể CSDL mà đƣợc tham chiếu từ bên ngoài phân đoạn của chúng. Các phân vùng chỉ mục đơn giản là các khối nhớ từ các nút chỉ mục, các bảng chỉ mục và các thành phần chỉ mục hỗn hợp khác đƣợc cấp phát. Do vậy, tổ chức lại một

22

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

phân đoạn chỉ mục chỉ ảnh hƣởng tới chính nó. Điều này đặt ra ràng buộc trên thiết kế cấu trúc chỉ mục vì với mỗi thành phần cấu trúc chỉ mục phải thích hợp trong một phân vùng đơn. May mắn điều này không phải là vấn đề cho bất kỳ các cấu trúc chỉ mục bộ nhớ chính nào.

Nhớ rằng các chỉ mục chỉ chứa các con trỏ bản ghi, vì các con trỏ bản ghi cung cấp truy cập tới các điểm đầu và các trƣờng của của các bản ghi. Hình 2.3 đƣa ra một ví dụ về hai chỉ mục đƣợc dựng lên cho quan hệ Nhan_vien. (Các chỉ mục này đƣợc thể hiện nhƣ các bảng đƣợc sắp xếp cho đơn giản). Nếu các con trỏ bản ghi sử dụng trong các cấu trúc chỉ mục thực sự trỏ tới điểm bắt đầu của các bản ghi, sau đó mỗi phép toán so sánh trong các lộ trình chỉ mục sẽ yêu cầu một tính toán địa chỉ offset để xác định vị trí trƣờng khóa (key field). Thay vì các con trỏ bản ghi sử dụng trong các chỉ mục trỏ trực tiếp tới trƣờng khóa (hoặc tới trƣờng khóa thứ nhất trong trƣờng hợp một chỉ mục đa thuộc tính), do đó loại bỏ phần tính địa chỉ offset này để xác định trƣờng khóa, trong khi cần phải một tính toán địa chỉ offset phủ định để xác định tiêu đề của mỗi bản ghi nhận đƣợc trong quá trình tìm kiếm. Tuy nhiên giả định rằng tính trung bình số bản ghi tham chiếu trong phép tìm kiếm sẽ lớn hơn số các bản ghi nhận đƣợc. Thậm chí trong trƣờng hợp các chỉ mục đa thuộc tính tránh đƣợc chi phí tính toán địa chỉ offset của trƣờng thứ nhất là một tiết kiệm đáng kể, nhƣ hầu hết các so sánh liên quan chỉ trƣờng thứ nhất - các trƣờng khác đƣợc so sánh duy chỉ khi giá trị trƣờng thứ nhất bằng với giá trị tìm kiếm.

Các chỉ mục có thể đƣợc khóa trên nhiều kiểu và định dạng khác nhau của dữ liệu. Ví dụ các con trỏ bản ghi của một chỉ mục có thể tham chiếu trực tiếp các số nguyên, số thực, bit có đọ dài cố định hoặc chuỗi ký tự hoặc các giá trị do ngƣời dùng định nghĩa có độ dài cố định. Chúng có thể tham chiếu các trƣờng bản ghi mà chứa các địa chỉ offset với chuỗi bit có độ dài thay đổi, chuỗi ký tự có độ dài thay đổi hoặc các giá trị do ngƣời dùng định nghĩa có độ dài thay đổi. Chúng có thể tham chiếu các trƣờng chứa các con trỏ bản ghi mà trong một lần tham chiếu của các kiểu dữ liệu đã đề cập trên đây hoặc ngay cả các con trỏ bản ghi dữ liệu khác. Nếu một lộ trình so sánh phải đƣợc xác định phƣơng pháp so sánh để sử dụng cho mỗi so

23

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

sánh thì nó có thể dễ dàng dành nhiều thời gian quyết định cho phƣơng pháp so sánh riêng hơn là thực hiện so sánh. Thay vì sử dụng một lộ trình so sánh mục đính chung, mỗi chỉ mục có lộ trình so sánh liên quan tới nó mà đƣợc liên kết động với code chỉ mục chung khi chỉ mục đƣợc sử dụng. Lộ trình so sánh cho một chỉ mục đƣợc biên dịch và đƣợc lƣu trữ trong phần tử mục của chỉ mục khi chỉ mục đƣợc tạo và code chỉ mục chung chứa một bƣớc nhảy tới một lộ trình so sánh chỉ mục cụ thể thay vì lộ trình so sánh chung. Lộ trình so sánh biên dịch này cũng cho phép ngƣời dùng cung cấp các kiểu riêng của chúng và các lộ trình so sánh, nhờ đó tạo kiểu cấu trúc của CSDL có khả năng mở rộng, lộ trình so sánh tƣơng tự có thể đƣợc sinh ra cho các phép toán join và project.

2.1.3.5. Các liên kết

Một liên kết là một con trỏ bản ghi mà đƣợc lƣu trữ nhƣ một giá trị trƣờng trong một bản ghi. Bản chất là liên kết một cặp bản ghi - bản ghi mà chứa con trỏ bản ghi và bản ghi đƣợc trỏ tới. Các liên kết cung cấp một phƣơng thức cho tiền tính toán các phép toán join và lƣu trữ các kết quả trong các quan hệ ban đầu. Ví dụ, trong Hình 2.4 cho ta thấy làm thế nào các quan hệ Hình 2.3 sẽ đƣợc kết nối với một liên kết trực tiếp duy nhất từ quan hệ Nhan_vien tới quan hệ Phong.

Hình 2.4. Ví dụ liên kết

Chỉ các con trỏ bản ghi đơn đƣợc lƣu trữ trong các trƣờng, do đó chỉ các mối quan hệ một-một và nhiều-một đƣợc hỗ trợ. (Hình 2.4 cho thấy một mối quan hệ nhiều một giữa quan hệ Nhan_vien và quan hệ Phong). Các mối quan hệ nhiều- nhiều là có thể nhƣng chúng lƣu trữ các con trỏ nhiều bản ghi trong một bản ghi (tức là một chuỗi các con trỏ bản ghi) sẽ là khó, các tình huống phức tạp sẽ phát sinh nếu chuỗi này của các con trỏ bản ghi phát triển và lớn hơn so với một phân vùng đơn.

24

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Các liên kết đƣợc duy trì bởi hệ thống CSDL và chúng sẽ luôn bao gồm các địa chỉ bản ghi hợp lệ hoặc các giá trị rỗng. Khi một bản ghi mà đƣợc tham chiếu bởi một liên kết đƣợc xác định lại vị trí, liên kết đó sẽ đƣợc tìm thấy và đƣợc cập nhật để trỏ tới vị trí mới của bản ghi. Nếu các bản ghi bị xóa, các liên kết trả lại một giá trị rỗng. Có một mối quan hệ giữa các liên kết và các khóa ngoại. Các khóa ngoại đƣợc định nghĩa bởi Date [8] là các thuộc tính chúng xác định duy nhất các bản ghi của các quan hệ khác. Tính toàn vẹn tham chiếu quan hệ chỉ ra rằng khóa ngoại phải trỏ tới một bản ghi hợp lệ hoặc nó phải rỗng. Do đó các liên kết dƣờng nhƣ là một cơ chế tuyệt vời cho việc duy trì toàn vẹn tham chiếu.

Do các liên kết là trực tiếp một chiều bởi vì giới hạn mối liên hệ một- một/nhiều-một, nó có thể khó để xác định vị trí tất cả các nơi giữ các liên kết cho một bản ghi khi bản ghi di chuyển. Có một giải pháp cho vấn đề tồn tại này. Đó là

Một phần của tài liệu Nghiên cứu cơ sở dữ liệu trong bộ nhớ giải quyết bài toán đa giao dịch (Trang 26 - 50)