Cách đây hai tuần, tôi đã đọc một bài viết của Claire Carroll có tựa đề “Khối lập phương OLAP là gì” và đã cảm thấy khá bối rối. Ý chính của bài viết là các bảng được tổng hợp trước được gọi là khối OLAP và thực tế, các khối OLAP chỉ là một loại bảng trong cơ sở dữ liệu, chứ không phải là một cơ chế lưu trữ khác. Claire Carroll cho rằng việc sử dụng thuật ngữ phức tạp như “khối lập phương OLAP” chỉ làm cho người mới bắt đầu rối loạn và không hiểu rõ vấn đề. Việc này là không tốt và cần được giải quyết để giúp mọi người dễ dàng hiểu hơn.
Khối lập phương OLAP là gì?
Tôi nghĩ rằng chúng ta có thể tìm ra nhiều cách sử dụng thuật ngữ khác nhau và hiểu rõ hơn bằng cách xem xét các quan điểm khác nhau. Thuật ngữ có thể có nhiều ý nghĩa khác nhau đối với những người khác nhau, phụ thuộc vào lịch sử và cách các sự kiện diễn ra.
Một ví dụ về điều này là môn Judo. Judo là một môn thể thao chiến đấu của Olympic, trong đó các võ sĩ ném nhau và đôi khi vật lộn trên mặt đất. Tuy nhiên, nguồn gốc của Judo là Jujitsu, một môn võ thuật được phát triển để cận chiến ở Nhật Bản thời phong kiến.
Ngày nay, Jujitsu còn được gọi là ‘Brazil Jujitsu’, một môn thể thao hiện đại chủ yếu chứng kiến những người chơi chiến đấu trên mặt đất. Sự nhầm lẫn xảy ra khi một số võ sinh Judo đầu tiên đến Brazil, gọi nghệ thuật của họ là ‘Kano’s Jujitsu’ thay vì ‘Judo’, và sau đó người dân địa phương nói: “À, nhu thuật! Được rồi, chúng tôi sẽ học hỏi từ bạn và gọi nó như vậy!” và nó trở thành ‘Brazil Jujitsu’.
Lâu sau, khi UFC trở nên cực kỳ phổ biến ở Mỹ, BJJ cũng trở nên nổi tiếng cùng với nó, và mọi người bắt đầu nói ‘Jujitsu’ thay vì ‘Brazil Jujitsu’. Điều này đã dẫn đến sự khó hiểu và nhầm lẫn khi một từ có thể có nhiều ý nghĩa khác nhau và khi Judo và Jujitsu không còn được đồng nghĩa với nhau.
Trong suốt hơn 30 năm qua, khối OLAP đã có nghĩa đôi khi gây nhầm lẫn. Nó có thể được mô tả như một loại giao diện người dùng để duyệt dữ liệu hoặc một cấu trúc dữ liệu có thể được gọi là ‘bảng tổng hợp’, nhưng nó cũng đóng vai trò quan trọng trong tối ưu hóa dữ liệu.
Tuy nhiên, nếu bạn chỉ nhìn vào định nghĩa này, bạn sẽ bị bối rối khi tiếp cận với các nhà cung cấp khối OLAP khác nhau hoặc khi bạn nghe về các trải nghiệm của người dùng với các khối OLAP khác nhau. Do đó, định nghĩa khối OLAP phụ thuộc vào cách sử dụng và định nghĩa của người dùng. Ví dụ, MDX của Microsoft được thiết kế để truy vấn các khối OLAP, trong khi Kyligence cung cấp hỗ trợ cho sản phẩm khối OLAP mã nguồn mở Kylin.
Dòng thời gian của khối lập phương OLAP
Khi đọc các bài báo học thuật, điều quan trọng nhất là bạn cần nhận thức rằng mỗi bài báo đóng vai trò quan trọng trong việc xây dựng và phát triển các ý tưởng. Chẳng hạn, vào năm 1993, Tiến sĩ EF Codd và các cộng sự đã xuất bản sách trắng cho Phần mềm Arbor (nay là Giải pháp Hyperion), trong đó giới thiệu thuật ngữ ‘OLAP’ và một tập hợp các quy tắc trừu tượng giống như các quy tắc của anh ta cho RDBMS.
Từ đó, chúng ta biết rằng thuật ngữ ‘khối OLAP’ không tồn tại trước năm 1993. Tuy nhiên, việc xác định nguồn gốc của thuật ngữ ‘khối dữ liệu’ và ‘siêu khối’ lại không dễ dàng, bởi vì chúng được sử dụng không thường xuyên từ cuối những năm 80 và chủ yếu trong ngữ cảnh lập trình máy tính. Năm 1995, các tác giả Grey, Bosworth, Lyaman và Pirahesh đã xuất bản bài báo Data Cube, một toán tử tổng hợp quan hệ tổng quát hóa Group-BY, CROSS-TAB và SUB-TOTALS.
Chỉ hai năm sau đó, vào năm 1996, Harinarayan, Rajaraman và Ullman đã xuất bản bài báo Triển khai các khối dữ liệu một cách hiệu quả, một trong những bài báo về khối OLAP được trích dẫn nhiều nhất trong lĩnh vực này. Bài báo này vẫn được xem là một trong top 500 bài báo khoa học máy tính được trích dẫn nhiều nhất trong 25 năm qua, vì vậy nó đã đóng góp rất lớn cho sự phát triển của lĩnh vực khối OLAP ngày nay.
Bài báo này đề cập đến khối dữ liệu đa chiều và cách sử dụng nó trong môi trường đồ họa để khám phá thông tin. Để minh họa, bài báo cung cấp ví dụ về điểm chuẩn TPC-D, một mô hình nhà kho kinh doanh. Bài báo tập trung vào ba khía cạnh chính: bộ phận, nhà cung cấp và khách hàng và sử dụng tổng doanh số làm thước đo sự quan tâm của mình. Mỗi ô trong khối dữ liệu 3 chiều đại diện cho bộ phận được mua từ nhà cung cấp và bán cho khách hàng, và chứa tổng doanh số của bộ phận đó. Thuật ngữ “thứ nguyên” và “thuộc tính” được sử dụng thay thế cho nhau trong phần này.
Bài viết đề cập đến việc người dùng quan tâm đến tổng doanh số bán hàng của một bộ phận p cho một khách hàng c cụ thể. Để giải quyết vấn đề này, Grey, Bosworth, Layman và Pirahesh (1995) đã đề xuất thêm giá trị “TẤT CẢ” vào miền của mỗi chiều trong khối dữ liệu để có thể truy vấn tổng doanh số của một bộ phận p đối với tất cả các nhà cung cấp cho một khách hàng c nhất định. Khi đó, truy vấn có thể được thực hiện bằng cách tra cứu giá trị trong ô (p, ALL, c).
Trong bối cảnh này, khối dữ liệu đề cập đến một bảng đa chiều với dữ liệu tổng hợp, trong đó chúng ta quan tâm đến tổng doanh thu và doanh thu hợp nhất trong ví dụ điểm chuẩn TPC-D. Bài viết của Carroll trên OLAP Cubes rất rõ ràng khi mô tả mẫu truy cập dữ liệu này, nó tương tự như một bảng tổng hợp từ Excel, nhưng với nhiều hơn hai chiều.
Khi các vấn đề trở nên phức tạp hơn vào khoảng năm 1995, OLAP Cube cũng đề cập đến cách sử dụng giao diện người dùng. Điều này liên quan đến cách OLAP được định nghĩa ban đầu trong bài báo năm 1993 của Codd. Chuyên gia cơ sở dữ liệu Joe Celko đã giải thích rằng định nghĩa ban đầu của Codd gồm một số tính năng, được ký hiệu bằng ‘F’, và điều này cũng được đề cập trong bài viết của Celko về Phân tích và OLAP trong SQL.
OLAP (On-Line Analytical Processing) là một hệ thống phân tích dữ liệu đa chiều được định nghĩa ban đầu giống như một ứng dụng bảng tính với khả năng phân tích dữ liệu trên nhiều chiều. OLAP cho phép người dùng truy cập vào dữ liệu trong kho lưu trữ hỗ trợ đóng vai trò là máy chủ và thực hiện phân tích dữ liệu trên nhiều chiều, vượt xa những gì một chương trình bảng tính có thể làm được. Trong thời đại của Windows 95 và Excel 5, nếu bạn làm công việc phân tích dữ liệu, thì phần mềm kinh doanh thông minh của bạn có thể trông giống như một hệ thống bảng tính đa chiều, với khả năng phân tích dữ liệu trên nhiều chiều.
Do đó, điều quan trọng cần nhớ là các nhà phân tích dữ liệu vào thời điểm đó đã sử dụng OLAP Cube làm cách viết tắt cho cả giao diện người dùng lẫn khái niệm ‘bảng đa chiều được tổng hợp trước’ làm nền tảng cho nó.
Sau đó, mọi thứ trở nên phức tạp hơn khi các bài báo của Gray, Bosworth, Lyaman và Pirahesh vào khoảng năm 1995 cho biết toán tử CUBE đang được thêm vào tiêu chuẩn SQL. Điều này có nghĩa là các cơ sở dữ liệu đang tuân theo các tiêu chuẩn SQL khác nhau vào thời điểm đó đã được khuyến khích thêm toán tử tập hợp ‘CUBE’ mới để kích hoạt công việc OLAP cho cơ sở dữ liệu của họ.
Trong khoảng thời gian đó, Ralph Kimball đã xuất bản Bộ công cụ kho dữ liệu, đưa ra lập luận rằng kho dữ liệu nên được tổ chức theo cái gọi là lược đồ bông tuyết. Nếu bạn muốn thực hiện phân tích trực tiếp trên kho dữ liệu của mình, thì phương pháp mô hình hóa của Kimball sẽ giúp đơn giản hóa công việc. Một lợi ích quan trọng của mô hình này là nó cũng giúp việc ‘hiện thực hóa’ các khối OLAP của bạn trở nên dễ dàng hơn.
Quá trình tổ chức kho dữ liệu này được gọi là ‘mô hình hóa dữ liệu chiều’, một mô hình vẫn được sử dụng cho đến ngày nay. Nó phù hợp với mô hình hệ thống OLAP, bởi vì nhớ rằng các hệ thống OLAP, theo định nghĩa của Codd, được cho là có một cơ sở dữ liệu theo giai đoạn mà từ đó khối OLAP sẽ được cụ thể hóa. Mỗi khi dữ liệu cơ bản thay đổi, bạn phải ‘tái cấu trúc’ khối – nghĩa là cập nhật các tập hợp.
Ý nghĩa của khối lập phương OLAP
Trong ba thập kỷ qua, thuật ngữ ‘khối OLAP’ đã được định nghĩa theo nhiều ý nghĩa khác nhau:
- Là một giao diện người dùng để duyệt dữ liệu.
- Là một cấu trúc dữ liệu được gọi là ‘bảng tổng hợp’ (có thể được cụ thể hóa trong hệ thống cơ sở dữ liệu quan hệ).
- Là một công cụ dữ liệu tối ưu hóa cao được sử dụng như là một sản phẩm thay thế cho cơ sở dữ liệu và kho dữ liệu.
- Là cách duy nhất để triển khai mẫu OLAP của Codd hoặc OLAP = OLAP cube.
Mặc dù hầu hết những người sử dụng dữ liệu coi khối OLAP như là giao diện người dùng để khám phá dữ liệu, tuy nhiên, một số người vẫn coi khối OLAP là ‘bảng tổng hợp đa chiều’ trong cơ sở dữ liệu, như Carroll đã lập luận. Vẫn còn một số người khác nghĩ rằng các khối OLAP là cách duy nhất để thực hiện khớp nối OLAP ban đầu của Codd.
Tổng kết
Trong đoạn văn trên đã đề cập đến nhiều ý nghĩa khác nhau của thuật ngữ “khối OLAP” trong ba thập kỷ qua. Nó có thể được hiểu là một loại giao diện người dùng để duyệt dữ liệu, một cấu trúc dữ liệu được gọi là “bảng tổng hợp” hoặc một công cụ dữ liệu tối ưu hóa cao để thay thế cho cơ sở dữ liệu và kho dữ liệu. Khối OLAP cũng được xem là cách duy nhất để triển khai mẫu OLAP của Codd hoặc OLAP = OLAP cube.