Chắc hẳn các bạn đã không còn quá xa lạ với định nghĩa cơ sở dữ liệu quan hệ, nổi bật trong đó là những cái tên rất nổi tiếng trong cộng đồng lập trình viên như MySQL, PostgreSQL. Tuy nhiên, ngoài cơ sở dữ liệu quan hệ thì bạn có biết không, còn rất nhiều kiểu phần mềm cho phép lưu trữ dữ liệu cho phép chúng ta có thể tổ chức và quản lý các thông tin của mình một cách hiệu quả và nhanh chóng. Trong bài viết này, Stringee và các bạn sẽ cùng tìm hiểu về một cơ sở dữ liệu phi quan hệ đang rất là "hot" trong thời buổi hiện nay đó chính là MongoDB.

Tuy nhiên, để vào bài một cách hiệu quả, chúng ta sẽ cùng nhau tìm hiểu một chút thông tin về cơ sở dữ liệu phi quan hệ(NoSQL nhé).

1. NoSQL là gì? 

Cùng tìm hiểu về NoSQL

- NoSQL là 1 dạng CSDL mã nguồn mở và được viết tắt bởi: Non-Relational SQL hay có nơi thường gọi là Not-Only SQL.

- NoSQL được phát triển trên Javascript Framework với kiểu dữ liệu là JSON và dạng dữ liệu theo kiểu key và value.

- NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của mô hình dữ liệu quan hệ RDBMS (Relational Database Management System - Hệ quản trị cơ sở dữ liệu quan hệ) về tốc độ, tính năng, khả năng mở rộng,...

- Với NoSQL bạn có thể mở rộng dữ liệu mà không lo tới những việc như tạo khóa ngoại, khóa chính, kiểm tra ràng buộc ...

- NoSQL bỏ qua tính toàn vẹn của dữ liệu và transaction để đổi lấy hiệu suất nhanh và khả năng mở rộng.

- NoSQL được sử dụng ở rất nhiều công ty, tập đoàn lớn, ví dụ như FaceBook sử dụng Cassandra do FaceBook phát triển, Google phát triển và sử dụng BigTable,...

NoSQL hoạt động như thế nào

Cơ sở dữ liệu NoSQL sử dụng nhiều mô hình dữ liệu để truy cập và quản lý dữ liệu. Các loại cơ sở dữ liệu này được tối ưu hóa dành riêng cho các ứng dụng yêu cầu mô hình dữ liệu linh hoạt có lượng dữ liệu lớn và độ trễ thấp, có thể đạt được bằng cách giảm bớt một số hạn chế về tính nhất quán của dữ liệu của các cơ sở dữ liệu khác.

Một số loại cơ sở dữ liệu NoSQL

- Khóa–giá trị(key-value)

- Tài liệu(document)

- Đồ thị(graph)

- Trong bộ nhớ(memcache)

- Tìm kiếm(search engine)

2. MongoDB là gì?

MongoDB là một cơ sở dữ liệu hướng tài liệu(document), khác với các cơ sở dữ liệu quan hệ như MySQL sử dụng các bảng(table) để phân chia dữ liệu và dùng các trường(column) để định nghĩa dữ liệu, MongoDB không yêu cầu bạn phải chỉ định dạng dữ liệu của mình. Thay vào đó, nó sử dụng một schema rất linh hoạt được gọi là BSON. BSON có thể được hiểu đơn giản là dạng document JSON. Chính vì dữ liệu không bị ràng buộc nên các đơn vị lưu trữ của MongoDB, hay còn được gọi là các collection sẽ có kích thước và các document khác nhau. Ngoài ra, việc lưu trữ các document dưới dạng JSON là một lợi thế giúp tăng hiệu suất cho các quá trình truy vấn và duyệt dữ liệu.

MongoDB được sử dụng rất nhiều bởi các doanh nghiệp lớn, chúng ta có thể kể đến ở đây như: eBay, SourceForge và The New York Times. Được tin dùng như vậy bởi các tập đoàn lớn là vì DB này mang lại rất nhiều tính năng ưu việt đáp ứng được nhu cầu tải trọng cao và cần sự ổn định - các yếu tố tiên quyết để có thể xây dựng nên các hệ thống lớn. Một số tính năng của MongoDB có thể được kể đến như:

- Các ad hoc query: hỗ trợ search bằng field, các phép search thông thường, regular expression searches, và range queries.

- Indexing: bất kì field nào trong BSON document cũng có thể được index.

- Replication: có ý nghĩa là “nhân bản”, là có một phiên bản giống hệt phiên bản đang tồn tại, đang sử dụng. Với cơ sở dữ liệu, nhu cầu lưu trữ lớn, đòi hỏi cơ sở dữ liệu toàn vẹn, không bị mất mát trước những sự cố ngoài dự đoán là rất cao. Vì vậy, người ta nghĩ ra khái niệm “nhân bản”, tạo một phiên bản cơ sở dữ liệu giống hệt cơ sở dữ liệu đang tồn tại, và lưu trữ ở một nơi khác, đề phòng có sự cố.

- Aggregation: Các Aggregation operation xử lý các bản ghi dữ liệu và trả về kết quả đã được tính toán. Các phép toán tập hợp nhóm các giá trị từ nhiều Document lại với nhau, và có thể thực hiện nhiều phép toán đa dạng trên dữ liệu đã được nhóm đó để trả về một kết quả duy nhất. Trong SQL, count(*) và GROUP BY là tương đương với Aggregation trong MongoDB.

- Lưu trữ file: MongoDB được dùng như một hệ thống file tận dụng những function trên và hoạt động như một cách phân phối qua sharding.

>>> Xem thêm bài viết:

- Tìm hiểu về ràng buộc (Constraint) trong SQL

- Monitoring trên K8s cluster với Prometheus và Grafana

- Kubernetes (K8s) là gì?

3. Ưu điểm của MongoDB

- Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái.

- Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS.

- MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster:

- Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất.

- Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng.

- Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Với một lượng dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL.

4. Nhược điểm của MongoDB

- Không ứng dụng được cho các mô hình giao dịch nào có yêu cầu độ chính xác cao do không có ràng buộc.

- Không có cơ chế transaction (giao dịch) để phục vụ các ứng dụng ngân hàng.

- Dữ liệu lấy RAM làm trọng tâm hoạt động vì vậy khi hoạt động yêu cầu một bộ nhớ RAM lớn.

- Mọi thay đổi về dữ liệu mặc định đều chưa được ghi xuống ổ cứng ngay lập tức vì vậy khả năng bị mất dữ liệu từ nguyên nhân mất điện đột xuất là rất cao.

5. Khi nào nên sử dụng MongoDB?

- Khi quản lý và truyền tải content: quản lý đa dạng nhiều sản phẩm và có nội dung khác nhau chỉ trong một kho lưu trữ dữ liệu cho phép thay đổi và phản hồi nhanh chóng, không làm phức tạp hóa thêm từ hệ thống content

- Cấu trúc mobile và social: MongoDB cung cấp một platform có sẵn, phản xạ nhanh, và dễ mở rộng cho phép rất nhiều khả năng đột phá, phân tích real-time, và hỗ trợ toàn cầu.

- Quản lý data khách hàng: tận dụng khả năng query nhanh chóng cho phân tích real-time trên cơ sở dữ liệu người dùng cực lớn với các mô hình data phức tạp bằng các schema linh hoạt và tự động sharding cho mở rộng chiều ngang.

Kết

Như vậy, trong bài viết này Stringee và các bạn đã cùng nhau tìm hiểu về một cơ sở dữ liệu phi quan hệ rất nổi bật đó chính là MongoDB. Trong thời đại phát triển mạnh của công nghệ như hiện nay, đây là một giải pháp rất hữu hiệu cho bài toán xử lý các cấu trúc dữ liệu không đồng nhất, cụ thể nhất có thể là các dữ liệu được thu thập và xử lý từ các app mobile. Stringee sẽ còn cho ra mắt bạn đọc nhiều bài viết bổ ích khác nữa, các bạn hãy cùng chờ đón nhé.

Stringee Communication APIs là giải pháp cung cấp các tính năng như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài chăm sóc khách hàng có thể tích hợp trực tiếp vào các ứng dụng/website của doanh nghiệp nhanh chóng. Bộ giải pháp này giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Mời quý bạn đọc đăng ký dùng thử và nhận tư vấn tại đây: