Lựa chọn hệ quản trị cơ sở dữ liệu phù hợp

Việc lựa chọn loại cơ sở dữ liệu (CSDL) phù hợp có ý nghĩa rất lớn đối với việc mở rộng dự án sau này. Trong bài viết này sẽ phân tích ưu nhược điểm của các loại CSDL, qua đó bạn có thể nắm được phương pháp lựa chọn CSDL phù hơp nhất đối với nhu cầu ứng dụng của bạn.

Thống kê độ phổ dụng của các hệ CSDL năm 2019

Các yếu tố cần quan tâm

  • Thu thập yêu cầu nghiệp vụ
  • Cấu trúc dữ liệu (có cấu trúc, phi cấu chúc hay bán cấu trúc ~ JSON, Binary)
  • Mô hình cấu trúc dữ liệu
  • Độ lớn dữ liệu ~ tần suất ghi, engine lưu trữ, dung lượng lưu trữ
  • Tốc độ truy vấn dữ liệu tối thiểu
  • Tốc độ ghi dữ liệu tối thiểu
  • Khả năng hỗ trợ kết nối đồng thời (vd. PotgreSQL thường được lựa chọn với dụng cần nhiều kết nôi đông thời)
  • Khả năng mở rộng (theo chiều dọc hay chiều ngang)
  • An toàn dữ liệu
  • Tính phổ biến
  • Đang dạng tính năng nâng cao và hỗ trợ kỹ thuật
  • Phù hợp với technical stack đang phát triển

Hệ cơ sở dữ liệu quan hệ (RDBMS)

MySQL, PostgreSQL, Oracle, MS Server

Ứng dụng

  • Các ứng dụng web với lượng giao dịch lớn và truy vấn phức tạp
  • Dữ liệu tài chính, thông tin người dùng, thông tin nhân khẩu …

Tham khảo: So sánh giữa PostgreSQL và MySQL

Đặc điểm

  • Lưu trữ dữ liệu dưới dạng bảng quan hệ và được quản lý thông qua giao thức SQL – ngôn ngữ truy vấn cấu trúc

Điểm mạnh:

Có kiến trúc dữ liệu chặt chẽ và đảm bảo tính nhất quán cao

  • Tính nguyên tố (Atomicity): Đảm bảo một giao dịch có nhiều thao tác thì hoặc là toàn bộ thao tác được thực hiện hoặc là không thao táo nào được hoàn thành.
  • Tính nhất quán (Consistency): Một giao dịch hoặc là có trạng thái mới hoặc nếu có lỗi sẽ chuyển toàn bộ trạng thái về trước đó.
  • Tính độc lập (Isolation): Một giao dịch đang thực thi và chưa được xác nhận phải đảm báo tách biệt khỏi các giao dịch khác.
  • Tính bền vũng (Durability): Dữ liệu sẽ được hệ thống lưu lại ngay cả trong trường hợp hỏng hóc hoặc có lỗi hệ thống, đảm bảo dữ liệu vẫn trong trạng thái chuẩn xác.

Điểm yếu

  • Điểm yếu lớn nhất của RDBMS là không xử lý được tốt các dữ liệu phi cấu trúc.
  • Tốc độ truy vấn chậm do hỗ trợ các đặc điểm ACID
  • Việc thay đổi cơ sở dữ liệu khá khó do tính chặt chẽ của nó
  • Cấu trúc RDBMS làm phức tạp hóa việc nâng cao mở rộng máy chủ theo chiều ngang howcj chiều dọc.

Hệ cơ sở dữ liệu phi cấu trúc

Document Store

MongoDB, Couchbase

Résultat de recherche d'images pour "document store database"

Ứng dụng:

  • Dữ liệu phi cấu trúc hoặc không có cấu trúc (video, media, photo, document…)
  • Quản lý danh mục sản phẩm
  • Phân tích dữ liệu hành vi khách hàng

Đặc điểm:

  • Document store được gọi là các cơ sở dữ liệu hướng tài liệu, một thiết kế riêng biệt cho việc lưu trữ tài liệu dạng văn kiện JSON, BSON hoặc XML.
  • CSDL dạng này có các cặp khoá – giá trị nhưng cũng có đính kèm các trị số siêu dữ liệu (*metadata) giúp việc truy vấn (*query) dễ dàng hơn.

Điểm mạnh

  • Xử lý tốt dữ liệu semi-constricted hoặc unconstristed, người dùng không cần quan tâm đến dạng dữ liệu khi lưu trữ.
  • Người dùng có thể thiết kế cấu trúc cho một dữ liệu mà không ảnh hưởng đến loại dữ liệu khác
  • Thời gian ghi dữ liệu cũng rất nhanh
  • Mở rộng linh hoạt theo chiều ngang. Quá trình sharding cũng dễ hiểu và dễ thao tác hơn hệ CSDL quan hệ.

Điểm yếu

CSDL dạng lưu trữ tài liệu hy sinh các yếu tố ACID để đổi lấy sự linh hoạt. Ngoài ra, việc truỵ vấn chỉ có thể được thực hiện trong từng tài liệu, không thể truy vấn dữ liệu trên nhiều tài liệu khác nhau.

CSDL dạng khóa – giá trị

Redis, Memcached

Key-value là kiểu lưu trữ đơn giản nhất trong các loại CSDL đồng thời cũng là kiểu lưu trữ cho toàn bộ các hệ NoSQL. Quá trình thực hiện tìm kiếm dữ liệu đều thực hiện thông qua key nên dẫn đến hạn chế về độ chính xác.

Sử dụng cho dữ liệu được truy xuất thường xuyên nhưng không thường xuyên được cập nhật

Memcached chỉ được sử dụng cho bộ nhớ đệm, trong khi Redis làm được nhiều điều hơn nữa. Memcached chỉ hỗ trợ strings, integers trong cấu trúc lưu trữ data, trong khi Redis hỗ trợ nhiều loại dữ liệu phức tạp như strings, hashes, lists, sets, sorted sets …. Ngoài ra, Redis có thể lưu dữ liệu vào đĩa để đảm bảo độ bền, còn Memcached thì không.

Ứng dụng

  • Caching
  • Quản lý HTTP session
  • Dữ liệu phi cấu trúc như review sản phẩm, bình luận của blog
  • Khuyến nghị các sản phẩm / thông tin tương tự
  • Thông tin và thiết lập người dùng
  • Bộ đếm số lượt truy cập trang
  • Kiểu lưu trữ hàng đợi cần hiệu suất cao
  • Biên soạn số liệu thống kê

Điểm mạnh

  • Linh hoạt, xử lý nhiều loại dữ liệu một cách nhanh chóng
  • Các chìa khóa được dùng để truy xuất thẳng tới các giá trị tìm kiếm mà không cần thông qua quá trình index giúp quá trình tìm kiếm nhanh chóng
  • Hỗ trợ chuyển từ hệ thống này sang hệ thống khác mà không cần code lại
  • Mở rộng theo chiều ngang dễ dàng và chi phí vận hành thấp.

Điểm yếu

  • Tính linh hoạt của CSDL dạng key – value bị đánh đổi bởi tính chính xác. Hầu như rất khó để truy xuất giá trị chính xác từ CSDL dạng này vì dữ liệu được lưu trữ theo blob, nên kết quả trả về hầu như đều theo blob. 
  • Khó khăn khi báo cáo số liệu hoặc cần chỉnh sửa một phần của các giá trị. 

CSDL dạng wide – column

Cassandra, HBase

Mô hình wide column là dạng CSDL phi cấu trúc theo dạng cột nhưng cũng có vài tính chất của dạng CSDL quan hệ.

Mô hình này dựa trên khái niệm keyspace thay vì schema. Một keyspace bao gồm nhiều cụm column (tương tự table nhưng linh hoạt hơn về cấu trúc). Mỗi cụm bao gồm nhiều hàng và cột riêng biệt.

Ứng dụng:

  • Xử lí các dữ liệu lớn (big data) khi tốc độ cần thiết
  • Lưu trữ dữ liệu big data
  • Các project có quy mô lớn

Điểm mạnh:

  • Xử lí dữ liệu cấu trúc và phi cấu trúc, đồng thời cũng dễ dàng nâng cấp. So với CSDL quan hệ, khả năng mở rộng theo chiều ngang cũng dễ dàng và nhanh chóng hơn.
  • CSDL dạng cột có khả năng nén tốt hơn CSDL dạng dòng. Đồng thời, data set lớn có thể dễ dàng duyệt hơn. Mô hình wide – column có khả năng xử lí tốt các yêu cầu truy xuất tập trung.

Điểm yếu:

  • CSDL dạng cột dễ dàng update theo cụm, bù lại việc upload và update số liệu cá nhân rất khó. Cộng thêm thực tế là mô hình wide – column chậm hơn so với CSDL quan hệ khi xử lí các giao dịch.

Thống kê sử dụng các hệ CSDL NoSQL

CSDL dạng bộ máy tìm kiếm

Ứng dụng:

  • Tìm kiếm log

Elasticsearch

Elasticsearch về cốt lõi là một bộ máy tìm kiếm và không hoàn toàn là là CSDL chuyên biệt như các loại trên, nhưng ngày càng được giới developers tận dụng để giảm thiểu độ lag khi tìm kiếm thông tin. 

Elasticsearch được xem như một CSDL dạng phi quan hệ, dựa trên nền tảng lưu trữ dữ liệu dạng văn kiện, thiết kế chuyên biệt để tối ưa hoá lưu trữ và trao đổi dữ liệu nhanh chóng.

Điểm mạnh

  • Elasticsearch có khả năng mở rộng cao, với schema linh hoạt và tốc độ trả về thông số lưu trữ nhanh, hỗ trợ khả năng tìm kiếm nâng cao: tìm kiếm full text, khuyến nghị các kết quả tìm kiếm, và hỗ trợ các thông tin tìm kiếm phức tạp.

* Tính năng full-text search là một phương pháp để tìm kiếm trong một cơ sở dữ liệu. Phương pháp này cho phép nhanh chóng tìm kiếm tất cả càng mục trong bảng dữ liệu mà không cần phải quét dòng và không cần biết phần tử tìm kiếm đang lưu trữ ở trong cột nào.

Phương pháp này hoạt động dựa trên cơ chế text indexes, trong đó text indexes lưu thông tin vị trí cho các phần tử tìm thấy trong cột mà bạn tạo text index trên đó.

Điểm yếu

  • Elasticsearch được sử dụng chủ yếu để thay thế hoặc bổ trợ cho CSDL có sẵn hơn là hoạt động độc lập.
  • Elasticsearch còn có nhược điểm là độ ổn định và bảo mật kém, không có giao thức xác định và xác nhận danh tính của một khách truy cập hoặc điều khiển đăng nhập.
  • Ngoài ra, Elasticsearch không hỗ trợ thanh toán.

Tham khảo

Leave a Reply

Your email address will not be published. Required fields are marked *