2 kiểu lưu trữ dữ liệu: Row-based storage vs Column-based storage

Ngày đăng: 04/07/2024

Lưu trữ dữ liệu theo Row-based storage

Row-based storage (còn được gọi là lưu trữ dữ liệu theo hàng) là tổ chức dữ liệu theo từng hàng. Mỗi hàng lưu trữ một bản ghi hoàn chỉnh, và mỗi bản ghi bao gồm tất cả các trường (hoặc cột) của bản ghi đó. Định dạng này thường được sử dụng trong các cơ sở dữ liệu quan hệ như SQL Server, MySQL và PostgreSQL. Khi bạn đọc hoặc ghi một bản ghi, bạn truy cập tất cả các cột của hàng đó cùng một lúc.

Ví dụ:

Bảng dữ liệu ví dụ minh họa

lưu trữ dữ liệu theo hàng (row-based storage)

Với bảng trên thì dữ liệu được ghi có dạng sau:

Nhìn vào cách lưu trữ dữ liệu của Row-based storage như ví dụ trên thì sẽ rất có lợi khi trả về dữ liệu của một hàng cụ thể nào đó. Chẳng hạn, để tìm CountryName của Employee “Jae Pak” thì chỉ cần tìm đến nơi lưu trữ Employee “Jae Pak”, sau đó lấy ra CountryName một cách đơn giản vì tất cả dữ liệu đều được lưu chung cùng 1 block. Tuy nhiên, khi số lượng hàng cần đọc càng tăng thì tốc độ sẽ càng chậm lại.

Lữu trữ dữ liệu theo Column-based storage

Column-based storage (còn được gọi là lưu trữ dữ liệu theo cột) là một phương pháp tập trung vào tối ưu hóa việc đọc, tổng hợp và phân tích các tập dữ liệu lớn. Đặc biệt hữu ích khi các truy vấn liên quan chỉ đến một phần của các cột trong cơ sở dữ liệu. Thay vì lưu trữ dữ liệu theo từng hàng như Row-based storage thì Column-based storage tổ chức dữ liệu thành các cột riêng lẻ. Mỗi cột dữ liệu, các giá trị giống nhau sẽ được gom nhóm lại để lưu trữ. Thay vì lưu là 1: VN, 2: VN thì chỉ cần lưu 1, 2: VN. Điều này giúp cải thiện hiệu suất truy vấn và tiết kiệm không gian lưu trữ.

Một số cơ sở dữ liệu sử dụng Column-based storage để tối ưu hóa việc lưu trữ và truy vấn dữ liệu như Amazon Redshift, Google BigQuery, Vertica, Cassandra HBase.

Ví dụ:

Bảng dữ liệu ví dụ minh họa

lưu trữ dữ liệu theo cột (column-based storage)

Với bảng trên thì dữ liệu được ghi có dạng sau:

Nhìn vào cách lưu trữ dữ liệu của Column-based storage như ví dụ trên, thì sẽ rất có lợi khi thực hiện các truy vấn tổng hợp (như SUM, COUNT, AVG, v.v.). Chẳng hạn, để tính số lượng Employee của DepartmentGroupName “Finance” thì chỉ cần tìm đến nơi lưu trữ DepartmentGroupName “Finance”, sau đó COUNT thì ta sẽ được số lượng của Employee.

Sự khác biệt giữa Row-based storage và Column-based storage

Row-based storage và Column-based storage như 2 thái cực trái ngược nhau. Điểm mạnh của cái này cũng là điểm yếu của cái kia và ngược lại. Sau đây là tổng quan về sự khác biệt của 2 cách lưu trữ dữ liệu:

Tiêu chí

Row-based storage

Column-based storage

Tổ chức dữ liệu

Mỗi hàng lưu trữ một bản ghi hoàn chỉnh, bao gồm tất cả các trường (hoặc cột) của bản ghi đó.

Dữ liệu được tổ chức thành các cột riêng lẻ. Mỗi cột chứa tất cả các giá trị của một trường cụ thể cho tất cả các hàng.

Truy cập dữ liệu

Đơn giản, vì bạn truy cập tất cả các cột của hàng đó cùng một lúc.

Phức tạp hơn, vì bạn cần ghép nối các cột để có bản ghi hoàn chỉnh.

Hoạt động giao dịch

Hiệu quả cho các hoạt động giao dịch, nơi bạn thường cần truy cập và sửa đổi toàn bộ bản ghi.

Không hiệu quả cho các hoạt động giao dịch.

Truy vấn phân tích

Không hiệu quả cho các truy vấn phân tích, vì đọc toàn bộ hàng có thể không cần thiết.

Hiệu quả cho các truy vấn phân tích, vì bạn chỉ cần truy cập các cột cụ thể.

Chi phí lưu trữ


Nếu không tối ưu hóa đúng cách thì chi phí lưu trữ dữ liệu cao.



Tiết kiệm không gian lưu trữ dữ liệu, vì các giá trị giống nhau trên một cột sẽ được gom nhóm lại để lưu trữ. Do đó, chi phí lưu trữ thấp.


Các yếu tố cần xem xét khi lựa chọn Row-based storage hay Column-based storage

Khi lựa chọn giữa Row-based storage và Column-based storage, bạn cần xem xét các yếu tố sau:

  • Mục đích sử dụng:
    • Row-based storage: thích hợp cho các ứng dụng giao dịch, nơi cần truy vấn nhanh chóng dữ liệu theo hàng.
    • Column-based storage: phù hợp cho các ứng dụng phân tích dữ liệu, nơi cần tối ưu hóa truy vấn và tính toán tổng hợp.
  • Hiệu suất truy vấn:
    • Row-based storage: truy vấn theo hàng nhanh, nhưng truy vấn theo cột chậm.
    • Column-based storage: truy vấn theo cột nhanh, nhưng truy vấn theo hàng chậm.
  • Dung lượng lưu trữ:
    • Row-based storage: dung lượng lớn hơn vì lưu trữ toàn bộ hàng.
    • Column-based storage: dung lượng nhỏ hơn vì lưu trữ từng cột riêng biệt và khả năng nén dữ liệu tốt.
  • Tối ưu hóa dữ liệu:
    • Row-based storage: tốt cho việc cập nhật và ghi dữ liệu.
    • Column-based storage: tối ưu hóa khi sử dụng truy vấn phân tích dữ liệu lớn.
  • Chi phí:
    • Row-based storage: thường có chi phí lưu trữ cao hơn.
    • Column-based storage: thường có chi phí lưu trữ thấp hơn.

Ứng dụng

  • Row-based storage:
    • Hiệu quả cho các hoạt động giao dịch: Row-based storage tối ưu hóa cho việc thêm, sửa đổi và truy cập toàn bộ bản ghi, chẳng hạn như thêm khách hàng mới hoặc cập nhật đơn hàng.
    • Thích hợp cho các ứng dụng giao dịch như hệ thống quản lý bán hàng, quản lý khách hàng, v.v.
  • Column-based storage:
    • Hiệu quả cho các truy vấn phân tích: Column-based storage tối ưu hóa cho việc tính toán, tổng hợp và truy vấn dữ liệu phân tích.
    • Thích hợp cho các ứng dụng phân tích dữ liệu như hệ thống báo cáo, khai thác dữ liệu, v.v.

Kết luận

Tùy thuộc vào mục đích sử dụng và yêu cầu của bạn, bạn có thể chọn phương pháp lưu trữ dữ liệu phù hợp với nhu cầu cụ thể của mình.

Ngoài chủ đề lưu trữ trên cơ sở dữ liệu, thì các tool BI cũng các chế độ lưu trữ của riêng chúng. Nếu bạn tò mò, hãy thử tìm hiểu thêm về 4 chế độ lưu trữ dữ liệu trong Power BI – một trong các công cụ phân tích dữ liệu phổ biến nhất hiện nay.

Chia sẻ bài viết này

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

This site uses Akismet to reduce spam. Learn how your comment data is processed.