So sánh OLAP và OLTP trên AWS – Redshift vs Aurora?

Khi chúng ta thảo luận về Database ngoài việc xem loại DB đó là SQL hay NoSQL thì các bạn cũng cần xem loại DB đó là OLAP hay OLTP đây có thể xem như hai đặc tính thiết kế mà ảnh hưởng rất nhiều đến việc sử dụng sau này và ứng dụng liên quan. Trên AWS có hơn 15 loại DB khác nhau hỗ trợ cho nhiều loại ứng dụng trong đó Redshift và Aurora nổi bật lên cung cấp nhiều khả năng mạnh mẽ về scalable và hiệu năng sử dụng nhưng chúng có sự khác biệt rất lớn đấy nhé. Nào, hãy cùng xem OLAP và OLTP hay Redshift vs Aurora trong bài này.

OLTP là gì?

OLTP viết tắt của Online Transaction Processing được thiết kế để có thể xử lý lưu trữ các trạng thái bền (persistent state store) nằm sau một ứng dụng front-end nào đó. OLTP chính vì thế phù hợp với các thủ tục mang tính phiên (transactional procedures) như: GET, INSERT, UPDATE hay DELETE.

Một vài tác vụ phổ biến khi nghĩ tới OLTP DB như sau:

  • Username của email_user này là gì? (GET)
  • Thời gian đăng nhập gần nhất của user_1 là lúc nào? (GET)
  • Cập nhật billing số lượng giờ sử dụng của người dùng (UPDATE)

Điểm mạnh của OLTP là tối ưu cho việc ghi (WRITE). OLTP workload có thể sử dụng cho ứng dụng cả READ và WRITE, nhưng việc READ xu hướng là tìm các chỉ số cụ thể (specific value kiểu như biết trước user_id rồi tìm thông tin của user_id này) chứ ko scan tất cả value và thực hiện tính toán (kiểu scan tất cả những người dùng đăng nhập vào hệ thống từ 8am đến 9am và tính xem tổng số phút đi trễ…). Đây chính là điểm cốt lõi mà các bạn làm kiến trúc phần mềm hay kiến trúc giải pháp cần sáng tỏ để chọn đúng loại Database trên AWS.

Một số loại DB thiết kế dạng OLTP ở AWS:

  • MySQL
  • PostgreSQL
  • Amazon Aurora
  • Oracle

OLAP là gì?

OLAP viết tắt của Online Analytic Processing là loại DB thiết kế tối ưu cho việc xử lý phân tích các tập dữ liệu lớn (large datasets) một cách nhanh chóng để trả lời các câu hỏi về dữ liệu.

Một số use case phổ biến cho OLAP:

  • Tính toán xem Customer Lifetime Value (CLV) của công ty tôi thế nào?
  • Thời gian trung bình chơi game của tôi là bao nhiêu?
  • Tỉ lệ chuyển đổi (conversion rate) của các landing pages dựa trên đề xuất là bao nhiêu?

OLAP database được thiết kế theo chiều ngược lại với OLTP khi tập trung vào năng lực scan và tính toán trên nhiều dòng (rows) cho một hay nhiều cột dữ liệu (volume). Để tối ưu performance, OLAP tổ chức dữ liệu dạng columnar.

Columnar là gì?

Thay vì dữ liệu thông thường chúng ta tổ chức dạng bảng và mỗi dòng là một record dữ liệu, OLAP tổ chức theo kiểu ngược lại đó là dữ liệu tổ chức theo dạng cột. Những loại storage thiết kế tối ưu cho columnar cho phép tối ưu về hiệu năng nén và thực hiền các yêu cầu đọc tuần tự, điều này cho phép đọc một số lượng datasets lớn.

OLAP thiết kế tối ưu cho việc đọc hay scan lượng dataset lớn, nên các yêu cầu liên quan thay đổi như Update hay Write sẽ thực hiện thông qua batch theo định ỳ nào đó. Thời gian chạy batch có thể tùy doanh nghiệp thông thường là hàng giờ hoặc hàng ngày. OLAP sẽ tỏa sáng trong các ứng dụng như phân tích dữ liệu, dữ liệu lớn… với các yêu cầu tính toán gộp aggregation.

Amazon Redshift là OLAP DB nổi tiếng trên AWS. Ngoài ra còn có nhiều loại OLAP khác như Terradata, HP Vertical, IBM Netezza, KDB+

Có thể dùng OLAP thay cho OLAP?

Về capability các hệ quản lý trị sở dữ liệu nói chung đều có các tính năng cơ bản nhưng được thiết kế theo những cách khác nhau để tối ưu cho các workload khác nhau. Các hệ quản trị OLAP thường chi phí rất đắt đỏ, cho nên nếu bạn chỉ đơn thuần là lập trình viên sẽ dễ theo kiểu tận dụng OLTP cho các yêu cầu OLAP vẫn chạy được mà.

Ví dụ: Dùng Aurora để phân tích dữ liệu lớn.

Thực ra việc này sẽ ko tối ưu về mặt kiến trúc và khi yêu cầu ngày càng lớn bạn sẽ thấy rằng làm việc này rất cực khổ. Kiểu như ép một con cá phải trèo cây giỏi như khỉ ấy.

Việc ép một OLTP DB phải làm việc như OLAP DB cũng tạo ra hiệu năng ko tốt khi mà ko được thiết kế tối ưu để đọc một tập các dataset lớn. Có một số giải pháp workaround là có một lớp OLAP layer ở trên OLTP database ví dụ như PostgreSQL có việc này cũng tối ưu được nhưng về mặt cơ bản nếu dùng các workload thuần OLAP nên chọn thuần OLAP database như Amazon Redshift sẽ có lợi ích ở quy mô lớn.

Tóm lại, hãy học thêm Amazon Redshift ha!

Have fun!

%d bloggers like this: