Database design : OLTP và OLAP

Database design : OLTP và OLAP

Chúng ta nên tạo và quản lý một database như thế nào ?

  • Schemas : Tổ chức dữ liệu sao cho hợp lý ?
  • Normalization : Giảm bớt sự dư thừa dữ liệu ?
  • Views : Câu lệnh Joins nào thường được dùng trong đa số trường hợp ?
  • Access Control : Tất cả người dùng trong hệ thống nên có cùng một level access ?
  • BDMS : Chọn SQL hay NoSQL ?

Tất cả phụ thuộc mục đích và nhu cầu sử dụng dữ liệu.

Approaches to processing data

  • Hai phương pháp chính để xử liệu là OLTP( Online Transaction Processing ) và OLAP( Online Analytical Processing ), chúng giúp xác định cách dữ liệu sẽ lưu chuyển, được cấu trúc và lưu trữ. Nếu bạn dùng phương pháp thích hợp với mô hình của dự án, việc thiết kế database sẽ dễ dàng hơn bao giờ hết. Và trong bài viết này sẽ phân tích cùng lúc hai phương pháp.
    Như tên gọi thì OLTP định hướng xử lý xung quanh những giao dịch trong khi phía kia là theo hướng phân tích. Và trước khi bước vào định nghĩa hãy xem qua 1 vài trường hợp chúng được sử dụng.
  • Giả sử như bạn đang phụ trách dữ liệu tại một hiệu sách, bạn sẽ sử dụng OLTP để theo dõi giá của từng cuốn trong khi để phân tích tính lợi nhuận trên những cuốn sách thì sử dụng OLAP lại phù hợp hơn. Và để theo dõi thông tin giao dịch của tất cả khách hàng, bạn sẽ sử dụng phương thức OLTP để thêm doanh số mua hàng khi khách hàng thanh toán xong. Tuy nhiên, nếu bạn muốn phân tích hành vi bán hàng, xem ai là khách hàng trung thành chẳng hạn - bạn sẽ sử dụng OLAP .
    OLTP database sẽ được sử dụng để theo dõi nhân viên ( giờ làm , lương,...), trong khi để phân tích xem ai là nhân viên của tháng, bạn sẽ cần chuyển sang OLAP database .
    Vậy là điểm khác nhau đã rõ.

image.png


OLTP focus vào các hoạt động hằng ngày, trong khi OLAP tasks lại ít rõ ràng hơn và focus vào việc ra quyết định kinh doanh.

image.png

-Hệ thống OLAP và OLTP hoạt động cùng nhau, trên thực tế thì chúng cần lẫn nhau.

OLTP ( Online Transaction Processing )

-Các hệ thống OLTP là các hệ thống “cổ điển” xử lý các giao dịch dữ liệu, đảm bảo cho việc tổ chức và lưu trữ một cách ổn định, độc lập, nhất quán. Chẳng hạn, nếu vợ chồng mỗi người rút tiền từ tài khoản ngân hàng chung, các giao dịch phải đảm bảo rằng họ không rút tiền nhiều hơn tài khoản của mình. Rõ ràng, việc xử lý giao dịch luôn tồn tại và hoạt động xung quanh chúng ta, nên việc có 1 hệ thống OLTP là rất cần thiết. Thật khó để các ứng dụng kinh doanh hoạt động mà không sử dụng hệ thống OLTP.

OLAP ( Online Analytical Processing )

-Không giống như OLTP, hệ thống OLAP làm việc với một lượng dữ liệu rất lớn và hoạt động chủ yếu là truy vấn dữ liệu cần nhiều thời gian thực hiện. Trong khi, hệ thống OLTP sử dụng các lệnh phổ biến như INSERTDELETE , và chúng không quá lâu. Vậy nên kích thước của hệ thống OLAP phải đủ lớn và đủ mạnh để lưu trữ tất cả các dữ liệu kinh doanh.

Ví dụ và câu truy vấn cụ thể

OLTP

Ta có các bảng dữ liệu như sau :

image.png

Giả sử khi ta cần thêm một giao dịch cho 1 khách hàng có ID là 22. Với một hệ thống OLTP được thế kế đúng cách, sẽ không có xung đột nào xảy ra và mọi thứ được tiến hành 1 cách có tuần tự.
Và nếu khách hàng đó muốn xem 5 giao dịch cuối cùng của họ :

image.png

Hoặc khách hàng đó muốn xem tình trạng đơn hàng của mình :

image.png

Điều quan trọng chúng ta nhận thấy ở đây là các truy vấn nhỏ, nhanh .

OLAP

Tiếp tục ví dụ trên ở 1 view khác, ở đây có 1 bảng đơn giản ( chưa phải mô hình) để hổ trợ cho báo cáo, phân tích:

image.png

Chúng ta hãy tạo một truy vấn đơn giản để đưa dữ liệu vào các bảng của mô hình OLAP. Chẳng hạn ở đây là bảng sum_customer

image.png

Như các bạn thấy, chúng ta đang sử dụng nhiều bảng để đưa dữ liệu vào một bảng. Các truy vấn phức tạp thường xuyên xảy ra đối với các hệ thống OLAP.
Các truy vấn OLAP thường ở dạng tổng hợp thông tin của tất cả dữ liệu của một tập hợp con cụ thể. Chẳng hạn, chúng ta đang tìm kiếm các xu hướng, giá trị trung bình, tổng hợp … Các truy vấn này có thể mất rất nhiều thời gian, tùy thuộc vào kích thước của tập hợp con mà chúng ta đang khám phá và do đó không thống nhất (không giống như các OLTP queries).

Túm lại :v

Vậy nên trước khi thực hiện bất cứ điều gì , hãy tìm ra các yêu cầu trong việc kinh doanh bởi vì nó quyết định rất nhiều đến cách thiết kế database . OLTP hay OLAP , hay là cả hai? Đây là hai phương thức thông dụng, nó không phải là tất cả nhưng nó hiệu quả và dễ tiếp cận. Giúp bạn bắt đầu đi đúng hướng để thiết kế lên một database.

(Tư liệu : Lis Sulmont - Workspace Architect , google , viblo , ... )