CHƯƠNG 4 : THIẾT KẾ VẬT LÝ DATAWAREHOUSE
4.3. Cấu trúc vật lý
Khi hệ thống xử lý một truy vấn, đầu tiên nó sẽ kiểm tra cú pháp của câu truy vấn và quyền truy cập đối với từ điển dữ liệu. Sau đó, DBMS dịch câu truy vấn để xác định xem yêu cầu dữ liệu. Từ các yêu cầu về bảng, dòng và các cột, DBMS sẽ ánh xạ các yêu cầu đó tới cấu trúc vật lý để hệ thống truy cập dữ liệu. Để hiểu tốt hơn, chúng ta sẽ rà soát xem các kiểu cấu trúc dữ liệu trong data warehouse.
4.3.1. Cấu trúc dữ liệu lưu trữ
Trong bức tranh toàn cảnh về hệ thống data warehouse, dữ liệu xuất hiện đầu tiên từ pha thu thập dữ liệu. Tuy nhiên, dữ liệu này không ảnh hưởng nhiều lắm đến hiệu năng của hệ thống data warehouse từ khung nhìn của người dùng mà chính là dữ liệu bảng và dữ liệu chỉ mục. Hệ thống cần phải sắp xếp, lưu trữ dữ liệu này một cách khoa học và hiệu quả nhằm đạt được hiệu năng cao của hệ thống. Ngồi những dữ liệu kể trên cịn có dữ liệu đa chiều trong hệ thống OLAP. Trong hầu hết các trường hợp thì các phần mềm đều hỗ trợ tối ưu cho việc lưu trữ và lấy dữ liệu trong hệ thống OLAP.
Hình 31: Mơ hình lưu trữ dữ liệu
Hình vẽ trên chỉ ra cấu trúc dữ liệu mức vật lý trong môi trường data warehouse. Cẩu trúc này chỉ ra cho dữ liệu chi tiết và dữ liệu tổng hợp. Nếu nhìn chi tiết hơn về cấu trúc dữ liệu khi triển khai chính là các file, blocks, và records.
4.3.2. Tối ưu lữu trữ
Như ta đã biết, cấu trúc dữ liệu ở dạng vật lý được lưu dưới dạng file. Hãy xét vấn đề khi ta có 2 bảng chiều là bảng khách hàng và bảng nhân viên bán hàng và chúng ta
cần cân nhắc 2 lựa chọn là lưu các bản ghi của một bảng ra một file vật lý hoặc nếu các bản ghi từ 2 bảng này thường được lấy ra tại hầu hết các thời điểm cùng nhau thì sẽ lưu cả 2 bảng này trong cùng một file vật lý. Trong trường hợp thứ nhât thì một tập các bản ghi trong một file sẽ được lưu trong một block còn trường hợp thứ 2, một file sẽ chứa đựng nhiều block và mỗi block sẽ chứa nhiều bản ghi.
Đặt kích thước block phù hợp: Như đã biết, block dữ liệu trong một file là đơn vị cơ
bản để truyền dữ liệu vào ra từ database tới bộ nhớ và ngược lại. Mỗi block đều có phần tiêu đề chứa những thông tin điều khiển, và như vậy, nhiều tiêu đề của block sẽ lãng phí nhiều khơng gian dữ liệu. Giả xử kích thước của block cho chiều customer là 2K và chứa trung bình được khoảng 10 bản ghi cho chiều customer. Giả xử nếu truy vấn yêu cầu một số bản ghi dữ liệu mà nằm trong block số 10 thì khi đó hệ điều hành sẽ đọc toàn bộ block vào trong bộ nhớ để lấy ra những bản ghi cần thiết. Như vậy, khi kích thước block càng lớn thì block đó sẽ lưu được nhiều bản ghi hơn. Lý do thường là nhiều bản ghi được lấy ra trong một lần đọc dữ liệu cho nên block có kích thước lớn hơn sẽ giảm được số lần đọc và một ưu điểm khác là tiết kiệm được không gian sử dụng cho phần tiêu đề. Tuy nhiên nhược điểm của block kích thước lớn là khi truy vấn yêu cầu một lượng nhỏ bản ghi dữ liệu thì một lượng thơng tin rất lớn lại được đọc vào bộ nhớ và làm ảnh hưởng tới việc quản lý bộ nhớ.
Tuy nhiên các yêu cầu dữ liệu trong môi trường data warehouse là một lượng lớn các dòng dữ liệu, các bảng do thường là phi chuẩn nên có kích thước rất lớn. Đơi khi có những bản ghi có kích thước đến nỗi mà khơng lưu vừa được trong một block và khi đó sẽ gây ảnh hưởng lớn đến hiệu năng của hệ thống.
Đặt tham số sử dụng block phù hợp: Hầu hết các DBMS đều cho phép đặt tham số
sử dụng block nhằm mục đích cải thiện hiệu năng tốt hơn. Thơng thường có 2 tham số liên quan đến việc sử dụng block. Ví dụ kích thước cho 2 tham số:
Tiêu chí đưa block vào danh sách chưa sử dung: Block Percent Free 20. Tiêu chí đưa block vào danh sách đã sử dung: Block Percent Used 40.
Quản lý dữ liệu di trú (migration): Khi một bản ghi trong block được cập nhật tới một kích thước dữ liệu lớn hơn ban đầu thì có thể dẫn đến khả năng không đủ không gian trong block đó để lưu thêm phần dữ liệu mở rộng. Khi đó, các hệ quản trị thường lưu thêm phần được cập nhật sang một block mới và tạo ra một con trỏ tới bản ghi bị di trú này. Sự di trú này có ảnh hưởng lớn đến hiệu năng và cần được xử lý bằng cách đặt lại tham số quy định phần khơng gian cịn lại cho mục đích cập nhật trong block. Tuy nhiên, việc xảy ra di trú dữ liệu trong môi trường data warehouse là hiếm bởi vì các thao tác cập nhật dữ liệu xảy ra là không đáng kể.
Quản lý việc sử dụng block: Khi mà block quá quá nhiều khơng gian trống mà hệ thống có hiện tượng qt tồn bộ bảng (full table scan) thì lúc đó hệ thống phải đọc rất nhiều block và hiệu năng của hệ thống bị giảm xuống. Quản lý việc sử dụng block bằng cách đặt lại tham số
Tự động cấp phát lưu trữ: Khi các không gian lưu trữ hiện hành của file đã đầy dữ
liệu. Việc cấp phát động này có thể gây treo hệ thống. Vì vậy nên giảm khả năng cấp phát động này bằng cách định vị những extent ban đầu có kích thước lớn.
Triển khai kỹ thuật chia tách (stripping) file: Hệ thống nên thực hiện stripping file
bằng cách tách dữ liệu ra thành nhiều mảnh khác nhau và lưu trữ từng mảnh đó trên những thiết bị vật lý riêng biệt. Kỹ thuật này làm tăng hiệu năng khi hệ thống vào ra dữ liệu và làm tăng đáng kể hiệu năng khi truy cập file hệ thống.
4.3.3. Sử dụng công nghệ RAID
Kỹ thuật RAID (Redundant Array of Inexpensive Disks) đã trở nên phổ biến tới tất cả các hệ thống data warehouse ngày này. Kỹ thuật này tách dữ liệu thành các phần dữ liệu khác nhau và lưu trên nhiều đĩa theo mơ hình stripping. Kỹ thuật này có thể khơi phục dữ liệu khi có một đĩa cứng bất kỳ nào bị lỗi. RAID có đầy đủ kỹ thuật khôi phục theo ngưỡng lỗi theo các tuỳ chọn sau:
Disk mirroring: Là các hệ thống ghi cùng một dữ liệu vào 2 đĩa cứng riêng biệt
thơng qua cùng một trình điều khiển đĩa.
Disk duplexing: Là cách lưu trữ giống hệt như phương pháp disk mirroring
nhưng chỉ khác là mỗi đĩa cứng có một trình điều khiển đĩa riêng biệt.
Perity striping: Là cách thức đảm bảo tính đúng đắn của việc truyền dẫn dữ liệu
bằng cách thêm một bit chẵn lẻ vào dữ liệu trước khi lưu.
Disk striping: Là cách thức mà dữ liệu dàn trải trên nhiều đĩa thông qua các
bytes hay sector.
Kỹ thuật RAID được thi hành với 6 mức độ khác nhau từ RAID 0 tới RAID 5.
4.3.4. Dự đốn kích thước lưu trữ
Trước khi triển khai hệ thống cần xem xét về việc cấp phát dữ liệu ban đầu và hướng mở rộng khi dữ liệu lớn lên. Để tối ưu kích thước lưu trữ cần xem xét một số khuyến cáo sau:
Với mỗi bảng trong cơ sở dữ liệu cần xem xét: Dự đoán ban đầu về số bản ghi dữ liệu Chiều dài trung bình của mỗi bản ghi
Dự đốn khả năng tăng trưởng dữ liệu theo tháng Kích thước bảng ban đầu được tạo ra
Tính tốn kích thước bảng sau 6 tháng hoặc 12 tháng. Với tất cả các bảng, xem xét:
Tổng số chi mục
Không gian khởi động ban đầu cho chỉ mục, và không gian sau 6 tháng hoặc 12 tháng
Cần rà soát, tối ưu một số vấn đề sau:
Không gian tạm cho việc sắp xếp, hoà trộn dữ liệu Các file tạm trong vùng thu thập dữ liệu
Các file dữ liệu lưu trữ trong vùng thu thập dữ liệu