2.1.Sơđồthiếtkếdữliệu
MetaTable Table Header Block 8K K 8K K 8K K …….. Index Zone 8K K 8K K Block Block Block Bitmap Zone Data Zone …….. Record ….. Table Record
Hình Phụ lục 3: Địnhdạngtập tin của GEOBASE
GEOBASE quản lý dữ liệu thông qua các khối dữ liệu với kích thước cố định. Các khối thường hay sử dụng nhất được nạp thường trực vào bộ nhớ. Ở phiên bản hiện hành, các khối dữ liệu có kích thước 8K. Tất cảc các loại dữ liệu đều được truy
cập thông qua các khối dữ liệu đó thông qua bộ đệm được nạp lên bộ nhớ (xem Hình Phụ lục 7).
Vùng Index Zone chứa mảng địa chỉ tham chiếu tới các bản ghi trong toàn bộ tập tin. Bitmap Zone là bảng ánh xạ bit đến mỗi phân đoạn tập tin. Các mô tả chi tiết giải thích ở mục 2.2. Phần Meta Table chứa danh sách mô tả cấu trúc của các bảng được lưu trong tập tin. Các bản ghi được ép chứa gọn vào các khối để có thể truy cập nhanh khi cần thiết.
4 Btree Type Size Offset Table Name Name 4 4 4
Hình Phụlục 4: Cấu trúc mô tảtrườngdữliệu trong GEOBASE
Prev Size Record Data Next Header 12 4 4 4 Dynamic
Hình Phụlục 5: Cấu trúc mô tảbản ghi trong GEOBASE
Mô tả cấu trúc bản ghi tương tự mô hình danh sách liên kết kép nên cho phép duyệt tuần tự theo cả hai chiều. Về nguyên tắc thì số lượng bản ghi của mỗi bảng là không giới hạn. Cấu trúc mô tả bảng là sự mở rộng của cấu trúc bản ghi và số lượng
chứa trong phần Meta Data và sẽ được nạp một phần hay toàn bộ lên bộ nhớ khi mở tập tin tùy thuộc theo kích thước định nghĩa trước của vùng bộ nhớ làm việc.
Table Detail Info FixedSize Columns Count 4 4 4 Rows LastRow FirstRow 12 4 4 4 12
Hình Phụlục 6: Cấu trúc mô tảbảng trong GEOBASE
Các khối dữ liệu hay sử dụng nhất sẽ được lưu thường trực trên vùng bộ nhớ làm việc để tăng hiệu suất truy cập dữ liệu. Vùng bộ nhớ làm việc thường trực là các khối có kích thước cố định tương ứng các khối dữ liệu trong tập tin được móc nối với nhau theo danh sách liên kết kép và có thể xác định khối dữ liệu cần thiết thông qua một bảng băm. Cơ cấu hoạt động có thể xem trong Hình Phụ lục 7.
bl1 bl2 bl3 blk-2 blk-1 blk
id id id id id id
bl1 bl2 … … … … … … bln-1 bln
Hash table
Hình Phụlục 7: Truy cập các khốidữliệu thông qua bộđệm
B-Tree là cấu trúc chỉ mục cho các đối tượng dữ liệu thuộc tính và R-Tree là cấu trúc chỉ mục cho các đối tượng không gian. Các cấu trúc chỉ mục này giảm thiểu số lượng truy cập đĩa cần thiết để xác định vị trí dữ liệu theo khóa. Theo như truy cập ổ đĩa là những hoạt động tốn kém nhất, giảm thiểu của đĩa đọc sẽ làm giảm thời
gian thực hiện truy vấn. Các nút của các cấu trúc chỉ mục này (B-Tree và R-Tree) được khớp vào các khối dữ liệu trong tập tin để có thể tận dụng luôn cơ chế làm việc của vùng bộ nhớ thường trực.
2.2.Quản lý bộnhớ
Việc cấp phát bộ nhớ được thực hiện bằng bitmap trong GEOBASE. Bộ nhớ được cấp phát thành từng khúc gọi là phân đoạn cấp phát. Trong phiên bản hiện tại của GEOBASE kích thước phân đoạn cấp phát là 32 byte. Điều này có nghĩa là kích thước của tất cả đối tượng cấp phát đều được canh theo giới hạn 32 byte. Mỗi 32 byte bộ nhớ cơ sở dữ liệu được đại diện bởi một bit trong bitmap. Để xác định ô trống có kích thước cần thiết trong bitmap, GEOBASE tìm số bit trống liên tục tương ứng trong từng khối bitmap.
GEOBASE thực hiện quét định kỳ các khối bitmap. Nó giữ định danh của khối bitmap hiện tại và vị trí hiện tại trong khối đó. Mỗi khi có yêu cầu cấp phát, việc quét bitmap bắt đầu từ vị trí hiện tại. Khi quét khối bitmap cấp phát cuối, nó sẽ quét tiếp từ đầu (từ khối bitmap đầu tiên) cho đến vị trí hiện tại. Khi không còn chỗ trống nào được tìm thấy sau một vòng quét qua tất cả các khối bitmap, khối bộ nhớ mới sẽ được cấp phát. Kích thước mở rộng là giá trị tối đa của kích thước bản ghi cấp phát và phân đoạn mở rộng. Phân đoạn mở rộng là tham số của cơ sở dữ liệu, xác định trong phần khởi tạo. Bitmap được mở rộng để có thể ánh xạ thêm không gian.
Bộ nhớ cấp phát sử dụng bitmap tạo nên tính cục bộ cao cho các tham chiếu (đối tượng chủ yếu được cấp phát tuần tự) và cũng giảm thiểu số lượng các khối sửa đổi. Một khi bitmap được mở rộng, các bản ghi sẽ được cấp phát tuần tự đến khi phân đoạn mở rộng được dùng hết. Chỉ sau khi chạm đến cuối bitmap, thao tác quét mới bắt đầu lại từ đầu để tìm ô trống trong bộ nhớ cấp phát trước đó.
Để giảm số lần quét các khối bitmap, GEOBASE gắn bộ mô tả cho mỗi khối, dùng để ghi nhớ kích thước tối đa của ô trống trên khối. Việc tính toán kích thước ô trống tối đa được thực hiện như sau: nếu bản ghi có kích thước M không thể được cấp phát từ khối bitmap này, thì kích thước ô trống tối đa sẽ bé hơn M, và M được
tiếp cho đối tượng có kích thước lớn hơn hoặc bằng M, ta sẽ bỏ qua khối bitmap này. Mô tả của khối sẽ được Reset khi một bản ghi nào đó được giải phóng trong khối bitmap này.
Một số bản ghi cơ sở dữ liệu (như các khối bảng băm) nên được canh sát biên của khối để truy xuất hiệu quả hơn. Trình cấp phát bộ nhớ GEOBASE kiểm tra kích thước cần thiết và nếu nó canh theo biên của khối, thì địa chỉ của đoạn bộ nhớ được cấp phát cũng sẽ được canh theo biên của khối. Việc tìm kiếm ô trống sẽ nhanh hơn trong trường hợp này, vì GEOBASE dịch chuyển vị trí hiện tại lên theo giá trị canh chỉnh này. Để có thể giải phóng bộ nhớ bản ghi dùng, GEOBASE cần giữ thông tin về kích thước bản ghi ở đâu đó. Trình cấp phát bộ nhớ GEOBASE xử lý hai loại đối tượng - các bản ghi bảng thông thường và các bản ghi khối. Tất cả bản ghi đều có Header ở đầu, trong đó chứa kích thước bản ghi và con trỏ của danh sách liên kết kép tất cả bản ghi trong bảng. Cho nên kích thước của bản ghi có thể được rút ra từ Header. Các bản ghi khối luôn chiếm toàn bộ khối cơ sở dữ liệu được cấp phát tại những vị trí canh theo biên của khối. Bản ghi khối không có phần Header. GEOBASE phân biệt bản ghi khối với bản ghi bình thường bằng cách sử dụng nhãn đặc biệt trong chỉ mục của bản ghi.
Hình Phụ lục 8: Các lớphỗtrợ thao tác dữliệu trong GEOBASE