Kĩ thuật lưu trữ theo cột

Một phần của tài liệu Nghiên cứu phương pháp xây dựng Storage Engine cho hệ quản trị cơ sở dữ liệu MySQL (Trang 44)

L ỜI CAM ĐOAN

2.3.2.1.Kĩ thuật lưu trữ theo cột

Khối lượng dữ liệu cần được xử lí, đặc biệt trong các ứng dụng CSDL chuyên sâu

như kho dữ liệu, Business Intelligence (BI, tạm dịch là kinh doanh thông minh), …

tăng vô cùng nhanh chóng trong những năm gần đây. Theo [10], số liệu từ

Wintercorp’s 2005 TopTen Program Summary, trong vòng 5 năm, từ 1998 đến 2003, kích thước lớn nhất của kho dữ liệu phát triển theo cấp số nhân từ 5 TB đến 30 TB, lượng tải công việc trung bình là 2.000.000 câu lệnh SQL/h. Nhưng chỉ trong vòng 4

năm, 2001 – 2005, kích thước này tăng từ 10 TB tới 100 TB, và lượng tải trung bình có thể đạt tới 30.000.000 câu lệnh SQL/h. Hơn nữa, các nhà khoa học cũng chỉ ra rằng, kích thước kho dữ liệu tăng gấp đôi theo chu kì 3 năm. Sự phát triển nhanh chóng,

không ngừng của kích thước dữ liệu trong kho dữ liệu và nhu cầu về hiệu suất, hiệu

quả của các ứng dụng báo cáo, phân tích, xử lí sự kiện, khai phá dữ liệu chuyên sâu cùng với sự phổ biến của BI (Business Intelligence) đã đặt các hệ CSDL lưu trữ theo

hiện như là một giải pháp cho những yêu cầu về chi phí và hiệu suất trên các hệ thống

này.

Trong các hệ CSDL truyền thống, các giá trị được tập hợp và quản lí như các dòng

độc lập. Nhưng trong các ứng dụng phân tích và BI, các báo cáo, các câu truy vấn đặc

biệt thường chỉ quan tâm tới một hoặc một tập thuộc tính (cột) nhất định mà không phải toàn bộ dòng. Do đó việc đọc toàn bộ dòng trong khi chỉ quan tâm tới một số

thuộc tính nhất định là không cần thiết và làm giảm hiệu suất của hệ thống.

Lưu trữ dữ liệu theo cột là tổ chức và lưu trữ dữ liệu theo các cột (thuộc tính) độc

lập. Khi truy vấn, hệ CSDL lưu trữ theo cột có thể đánh giá những cột sẽ được truy cập

và chỉ tìm kiếm giá trị yêu cầu trên các cột được chỉ định. Một cách tự nhiên, các giá trị dữ liệu trong mỗi cột là chỉ mục cho chính nó nên không cần hỗ trợ chỉ mục như trong CSDL lưu trữ theo dòng khác. Như vậy, hệ CSDL có thể chỉ tập trung vào các thuộc tính có ích mà bỏ qua một lượng lớn các thuộc tính không cần thiết nên giảm chi

phí vào/ra, cho phép truy cập nhanh tới dữ liệu mà không cần mở rộng không gian lưu

trữ (footprint) của CSDL và hệ quả cuối cùng là cải thiện hiệu suất truy vấn.

Những lợi ích của lưu trữ dữ liệu hướng cột:

- Là kiến trúc cho hiệu suất phân tích: không cần sử dụng chỉ mục, đây là kiến trúc để lưu trữ dữ liệu hơn là cơ chế tham chiếu tới các vùng lưu trữ khác. CSDL lưu

trữ theo cột chỉ truy cập vào các cột dữ liệu thỏa mãn truy vấn. Các thao tác vào/ra

được thực thi song song. Khi tìm kiếm, các cột được duy trì trong bộ đệm sử dụng các

thuật toán lưu đệm hướng tới việc tối ưu truy cập bộ nhớ trong và hệ quả là giảm lưu lượng vào/ra trên đĩa.

- Kết hợp và gộp nhóm nhanh: dòng truy cập dữ liệu trong dữ liệu lưu trữ cột cho phép tăng tính toán kết quả cho các hàm gộp nhóm, điều này có ý nghĩa quan

trọng trong các ứng dụng kinh doanh thông minh BI. Hơn nữa, do không yêu cầu các

cột dữ liệu lưu trữ gần nhau nên có thể lưu trữ dữ liệu trên nhiều đơn vị xử lí, sau đó

xử lí song song đa luồng. Kết quả là làm tăng hiệu suất truy vấn.

- Thích hợp cho nén: Nén dữ liệu theo cột cho kết quả tốt hơn.

- Tối ưu truy vấn một cách hiệu quả: cấu trúc dữ liệu dựa trên bitmap sử dụng

trong một vài lưu trữ phân tích theo cột cung cấp hiệu suất truy vấn cao thông qua các phép toán bitmap và tập hợp tinh vi bên trong và trên các cột. Nếu sử dụng một bitmap để mô tả dữ liệu, có thể đếm các biến cố duy nhất tại thời điểm tải, do đó có thể cung

cấp giá trị đếm trước khi gộp nhóm thay vì phân tích dữ liệu thực tế trên các cột. (adsbygoogle = window.adsbygoogle || []).push({});

- Tải dữ liệu nhanh: Mỗi cột được lưu trữ độc lập, cho phép hệ CSDL tải các cột

song song sử dụng đa luồng. Hơn nữa, xử lí phép hợp trên một cột nhanh hơn thời gian

tải trên toàn bảng, giảm độ trễ khi nhận dữ liệu mới cho các xử lí truy vấn. Cuối cùng, vì các cột được lưu trữ độc lập nên toàn bộ các cột trong bảng có thể được bổ sung hay

hủy bỏ mà không ảnh hưởng nhiều tới hệ thống và quan trọng là không cần điều chỉnh

lại hệ thống sau những thay đổi đó.

Một phần của tài liệu Nghiên cứu phương pháp xây dựng Storage Engine cho hệ quản trị cơ sở dữ liệu MySQL (Trang 44)