Blog

Chọn loại cơ sở dữ liệu (CSDL) nào phù hợp với dự án của bạn?

Mọi cơ sở dữ liệu (CSDL – database) đều được tạo ra theo cách không giống nhau, mỗi loại đều có ưu/nhược điểm riêng. Thực tế cho thấy những dạng database như MySQL, MongoDB đôi khi bị “lạm dụng” vì tính phổ biến của nó, bất chấp tính tương thích với dự án/nhu cầu hiện tại.

Việc lựa chọn loại cơ sở dữ liệu (CSDL) phù hợp nhất có ý nghĩa rất lớn cho việc mở rộng dự án sau này. Trong bài viết bên dưới sẽ liệt kê các dạng database thường gặp, ưu/nhược điểm của chúng và nhất là loại CSDL đó phù hợp để sử dụng cho mục đích nào.
*Bài viết sử dụng nhiều từ chuyên ngành, định nghĩa nằm ở phần cuối

1. Hệ cơ sở dữ liệu quan hệ – RDBMS

Oracle, MySQL, MS Server, PostgreSQL

Hệ cơ sở dữ liệu quan hệ – RDBMS
RDBMS (Oracle, MySQL, MS Server, PostgreSQL)

Tên tiếng Anh: Relational database management system – RDBMS.

Các RDBMS lưu trữ dữ liệu với dạng “quan hệ”: các bảng với dòng và cột nơi mọi thông tin dữ liệu được lưu trữ như một giá trị của một ô cụ thể. Dữ liệu trong một RDBMS được quản lý thông qua giao thức nổi tiếng SQL – ngôn ngữ truy vấn cấu trúc. SQL là giao thức được chuẩn hoá, đem đến sự đa nhiệm và tính dễ đoán biết.

Điểm mạnh

  • Tính nguyên tố (Atomicity). Một giao dịch có nhiều thao tác khác biệt thì hoặc là toàn bộ các thao tác hoặc là không một thao tác nào được hoàn thành. Chẳng hạn việc chuyển tiền có thể thành công hay trục trặc vì nhiều lý do nhưng tính nguyên tố bảo đảm rằng một tài khoản sẽ không bị trừ tiền nếu như tài khoản kia chưa được cộng số tiền tương ứng.
  • Tính nhất quán (Consistency). Một giao dịch hoặc là sẽ tạo ra một trạng thái mới và hợp lệ cho dữ liệu, hoặc trong trường hợp có lỗi sẽ chuyển toàn bộ dữ liệu về trạng thái trước khi thực thi giao dịch.
  • 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 bảo đảm tách biệt khỏi các giao dịch khác.
  • Tính bền vững (Durability). Dữ liệu được xác nhận sẽ được hệ thống lưu lại sao cho ngay cả trong trường hợp hỏng hóc hoặc có lỗi hệ thống, dữ liệu vẫn đảm bảo 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 hoặc chiều dọc.

Cơ sở dữ liệu RDBMS phù hợp trong các trường hợp nào?

  • Các trường hợp khi giữ vững tính toàn vẹn dữ liệu – dữ liệu không thể bị chỉnh sửa dễ dàng là tối cần thiết. Ví dụ: các ứng dụng của mảng tài chính, ứng dụng trong quốc phòng, an ninh và trong lĩnh vực thông tin sức khoẻ cá nhân.
  • Các lĩnh vực tự động hoá
  • Thông tin nội bộ

>>>Đọc thêm:  KHÓA ĐÀO TẠO SQL – THÀNH THẠO SQL CHỈ SAU 1 THÁNG

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

Kho tài liệu (MongoDB, Couchbase)

Kho tài liệu (MongoDB, Couchbase)
MongoDB & Couchbase

Document store là các cơ sở dữ liệu (CSDL) phù hợp với 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. Các CSDL này không đòi hỏi người dùng tự tạo bảng nhập liệu trước khi nhập dữ liệu vào vì không ràng buộc với SQL.

Đ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 truy vấn chỉ có thể được thực hiện trong từng tài liệu. Không thể thực hiện trên nhiều tài liệu khác nhau.

Cơ sở dữ liệu dạng lưu trữ tài liệu phù hợp trong các trường hợp nào?

  • 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ơ sở dữ liệu dạng khoá – giá trị (Redis, Memcached)

CSDL dạng khoá – giá trị (Redis, Memcached)
Redis & Memcached

Key-value là kiểu lưu trữ đơn giản nhất trong các loại cơ sở dữ liệu (CSDL) đồng thời cũng là kiểu lưu trữ cho toàn bộ các hệ NoSQL. Một “key” là một định danh độc nhất được gán cho một giá trị. Keys có thể là bất cứ thứ gì cho phép bởi DBMS. Trong Redis, keys có thể là một hàm nhị phân lên tới 512MB.

“Key” có thể được lưu trữ dưới dạng blob (kiểu dữ liệu của một cột trong bảng RDBMS, có thể lưu ảnh lớn hoặc dữ liệu văn bảng như những thuộc tính). Các giá trị này có thể được gán bất cứ loại giá trị nào:

  • Số
  • Chuỗi giá trị
  • Bộ đếm
  • JSON, XML, HTML, PHP,
  • Nhị phân
  • Hình ảnh
  • Video ngắn
  • Danh sách

Đ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 cơ sở dữ liệu (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ị. 

Cơ sở dữ liệu key – value phù hợp trong các trường hợp nào?

  • 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
  • Dữ liệu phi cấu trúc như review sản phẩm, bình luận của blog
  • Quản lý session trên diện rộng
  • Dữ liệu được truy xuất thường xuyên nhưng không thường xuyên được cập nhật

>>>Đọc thêm:  KHÓA ĐÀO TẠO SQL – THÀNH THẠO SQL CHỈ SAU 1 THÁNG

Mô hình wide – column (Cassandra, HBase)

Mô hình wide – column (Cassandra, HBase)
Cassandra & HBase

Mô hình wide – column là dạng cơ sở dữ liệu (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.

Đ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.
  • Cơ sở dữ liệu dạng cột phù hợp để nén tốt hơn so với cơ sở dữ liệu 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 là mô hình này chậm hơn so với CSDL quan hệ khi xử lí các giao dịch.

Nên sử dụng mô hình wide – column cho trong trường hợp nào?

  • 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

3. CSDL dạng bộ máy tìm kiếm (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à cơ sở dữ liệu (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 cơ sở dữ liệu (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.
  • Một trong số những tính năng thú vị của Elasticsearch đó là “stemming”. Stemming là từ để chỉ kỹ thuật dùng để biến đổi 1 từ về dạng gốc (được gọi là stem hoặc root form) bằng cách đơn giản là loại bỏ 1 số ký tự nằm ở cuối được xem như biến thể của từ. Ví dụ: các từ như walkedwalkingwalks, bằng cách bỏ đi -ed-ing hoặc -s, chúng ta sẽ được từ nguyên gốc là walk. 

Đ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.

Bộ máy tìm kiếm Elastisearch phù hợp cho các trường hợp sau:

  • Cung cấp các thông tin phụ hỗ trợ việc ra quyết định khi tìm kiếm dữ liệu
  • Lưu file tạm

Bài viết có sử dụng các từ ngữ chuyên ngành quản lý cơ sở dữ liệu như:

  • Database là một tập hợp liên kết các dữ liệu, thường đủ lớn để lưu trên một thiết bị lưu trữ như đĩa hay băng. Dữ liệu này được duy trì dưới dạng một tập hợp các tập tin trong hệ điều hành hay được lưu trữ trong các hệ quản trị cơ sở dữ liệu.
  • Schema là thuật ngữ để chỉ định nghĩa về cấu trúc dữ liệu. Từ điển Websters định nghĩa schema là “phác thảo hoặc hình dung khái quát dễ hiểu về một khái niệm nào đó; ví dụ, 5 dấu chấm là schema của số 5”.
  • Stemming là kỹ thuật dùng để biến đổi 1 từ về dạng gốc (được gọi là stem hoặc root form) bằng cách cực kỳ đơn giản là loại bỏ 1 số ký tự nằm ở cuối từ mà nó nghĩ rằng là biến thể của từ.
  • Key – value chỉ các CSDL key-value lưu trữ dữ liệu dưới dạng key – chìa khoá (một chuỗi duy nhất) liên kết với value – giá trị có thể ở dạng chuỗi văn bản đơn giản hoặc các tập, danh sách dữ liệu phức tạp hơn.
  • Relational database còn được biết đến như Relational Database Management System (Hệ thống quản lý cơ sở dữ liệu quan hệ) Trong RDBMS, dữ liệu được biểu diễn bởi các hàng. Relational Database là cơ sở dữ liệu được sử dụng phổ biến nhất. Nó chứa các bảng và mỗi bảng có Primary Key riêng. Bởi vì các bảng này được tổ chức chặt chẽ nên việc truy cập dữ liệu trở nên dễ dàng hơn trong RDBMS.
  • Nonrelational database chỉ những cơ sở dữ liệu không dùng mô hình dữ liệu quan hệ để quản lý dữ liệu trong lĩnh vực phần mềm, còn gọi là CSDL không ràng buộc.
  • High scalability nghĩa là “Khả năng mở rộng cao“. Ở đây chỉ khả năng của hệ thống máy chủ, hạ tầng mạng, băng thông có thể nâng cấp, chịu tải lớn, mở rộng nhanh chóng khi có nhu cầu.
  • Sharding là một tiến trình lưu giữ các bản ghi dữ liệu qua nhiều thiết bị để đáp ứng yêu cầu về sự gia tăng dữ liệu. Khi kích cỡ của dữ liệu tăng lên, một thiết bị đơn không thể đủ để lưu giữ dữ liệu.
  • Horizontal/ vertical scaling theo thứ tự là nâng cấp mở rộng theo chiều ngang, tức là nâng số máy chủ, ngược lại vertical scaling là nâng cấp dọc, là bổ sung thêm tài nguyên như CPU, RAM vào máy chủ có sẵn.
  • Metadata là dạng định nghĩa dữ liệu như: bảng, cột, một báo cáo, các luật doanh nghiệp hay những quy tắc biến đổi. Metadata bao quát tất cả các phương diện của kho dữ liệu.
  • Query có nghĩa là truy vấn. Đây thực chất là một câu lệnh SQL được xây dùng để tổng hợp dữ liệu từ các bảng nguồn. Có nhiều loại query khác nhau như crosstab, action, union và data – definition.

>>>Đọc thêm:  KHÓA ĐÀO TẠO SQL – THÀNH THẠO SQL CHỈ SAU 1 THÁNG

Hy vọng bài viết sẽ giúp các bạn có cái nhìn tổng thể về các loại cơ sở dữ liệu và các trường hợp thích hợp để sử dụng chúng!

(Bài viết có tham khảo thông tin từ các nguồn: Vietjack, vngeek, kipalog và Wikipedia)

Nguồn: Internet

INDA ACADEMY chuyên cung cấp những khóa học về phân tích dữ liệu, đăng ký ngay để nhận được tư vấn chi tiết lộ trình dành riêng cho bạn nhé!

>> Đọc thêm:

KHOÁ HỌC TRUY VẤN VÀ THAO TÁC DỮ LIỆU SQL TỪ CƠ BẢN ĐẾN NÂNG CAO

KHÓA HỌC DATA WAREHOUSE : TỔNG HỢP, CHUẨN HÓA VÀ XÂY DỰNG KHO DỮ LIỆU TRONG DOANH NGHIỆP

KHÓA HỌC DATA MODEL – THIẾT KẾ MÔ HÌNH DỮ LIỆU TRONG DOANH NGHIỆP

LỘ TRÌNH TRỞ THÀNH DATA ENGINEER CHO NGƯỜI MỚI BẮT ĐẦU

DATA ENGINEER LÀ GÌ? CÔNG VIỆC CHÍNH CỦA DATA ENGINEER? CÁC KỸ NĂNG CẦN THIẾT

    LIÊN HỆ VỚI CHÚNG TÔI ĐỂ NHẬN ĐƯỢC TƯ VẤN MIỄN PHÍ
    Xin vui lòng điền vào form dưới đây. Chúng tôi sẽ liên hệ lại ngay cho bạn khi nhận được thông tin:






    Leave a Reply

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