Giới thiệu Hệ quản trị cơ sở dữ liệu NoSQL MongoDB

Trong bài viết này, SmartJob giới thiệu đến bạn Hệ quản trị cơ sở dữ liệu MongoDB. Trước tiên chúng ta phân tích các thuật ngữ làm nền tảng cho chủ đề sẽ đề cập. Các thuật ngữ có thể chưa chính xác tuyệt đối xét trên phương diện học thuật/hàn lâm, tuy nhiên sẽ dễ hiểu/ dễ hình dung hơn dưới góc nhìn của lập trình viên.

Database – Cơ sở dữ liệu
Cơ sở dữ liệu là nơi lưu trữ tập tin, tập tin chứa dữ liệu. Ví dụ: tập tin plain text (chỉ chứa văn bản thuần, không có định dạng, mark-up), csv, JSON, XLS, XLSX, SQL, mp3, v.v..

DBMS: Database Management System: Hệ quản trị cơ sở dữ liệu. Ví dụ: Các hệ quản trị cơ sở dữ liệu Oracle 11g, Oracle 12c, MySQL, MariaDB, MongoDB, Redis, v.v..

Edgar. F. Codd - Cha đẻ của lý thuyết xây dựng nên các Hệ quản trị cơ sở dữ liệu, dựa trên Đại số quan hệ (Relational Algebra)

Edgar. F. Codd – Cha đẻ của lý thuyết xây dựng nên các Hệ quản trị cơ sở dữ liệu quan hệ, dựa trên Đại số quan hệ (Relational Algebra)

SQL: Structured Query Language: Ngôn ngữ truy vấn có cấu trúc. Phát minh bởi Edgar F. Codd – những năm 1960 tại IBM. Dựa trên lý thuyết Đại số quan hệ (các phép toán trên tập hợp có mối quan hệ với nhau).

RDBMS: Relational Database Management System: Hệ quản trị Cơ sở dữ liệu quan hệ, là DBMS áp dụng được chuẩn SQL. Ví dụ: Oracle 11g, Oracle 12c, MariaDB, Microsoft SQL Server, v.v… Tuy nhiên Redis, MongoDB, Apache Cassandra, Apache HBase, v.v.. sẽ không được xếp vào nhóm này.

NoSQL: Là loại Cơ sở dữ liệu mà không truy vấn bằng ngôn ngữ SQL. Các Hệ quản trị cơ sở dữ liệu NoSQL sử dụng các kỹ thuật lưu trữ khác nhau: cặp khóa – giá trị (key-value pair) trên RAM, cặp khóa – giá trị (key-value pair) trên ổ cứng, tài liệu/tập tin (document), trường dữ liệu lớn (big column), đồ thị (graph). NoSQL không có các chuẩn chung thống nhất như SQL.

MongoDB

MongoDB

MongoDB
Đứng ở tốp đầu trong danh sách các Hệ quản trị cơ sở dữ liệu NoSQL, sử dụng cơ chế lưu trữ document/file (tài liệu/tập tin) dạng BSON (gần giống JSON). Kích thước mỗi tập tin lưu trữ có thể coi như không giới hạn (trên máy tính chạy hệ điều hành 64 bit).

Thành ngữ tiếng Việt có câu: “Đông như quân Nguyên”, hàm ý chỉ rằng quân Nguyên Mông rất đông. Thậm chí còn có nhận định rằng, vó ngựa quân Nguyên Mông đi đến đâu thì cỏ ở đó không mọc lên được. Đế chế Nguyên Mông là một đế chế hùng mạnh mang tham vọng bá chủ, gắn với thủ lĩnh Thành Cát Tư Hãn vùng Mông Cổ. Hệ quản trị cơ sở dữ liệu NoSQL MongoDB lấy đó làm ý tưởng để đặt tên sản phẩm, hàm ý việc lưu trữ dữ liệu có dung lượng rất lớn.

Đế chế Mongol - "Đông như quân Nguyên"

Đế chế Mongol – “Đông như quân Nguyên” (Tranh vẽ của moddb.com)

MongoDB có hai phiên bản Community (miễn phí) và Enterprise (trả phí). Mã nguồn, quản lý phiên bản đặt tại Github [1], phát hành theo giấy phép phần mềm mã nguồn mở GNU Affero General Public License (AGPL) hoặc Apache License tùy theo phiên bản. MongoDB được viết bằng ngôn ngữ lập trình C++ (80,1%), JavaScript (16,5%), Python (2,8%) và các ngôn ngữ lập trình khác (0,6%).  MongoDB là hệ quản trị cơ sở dữ liệu chạy trên nhiều hệ điều hành (Linux, Windows, MacOS), trên kiến trúc máy tính 32bit hoặc 64 bit (tuy nhiên không khuyến khích chạy trên máy tính 32bit do kích thước tập tin sẽ bị giới hạn bởi khả năng đánh địa chỉ ô nhớ của hệ điều hành).

MongoDB được phát triển bởi công ty phần mềm 10gen, sau đó vào năm 1013, 10gen đổi tên thành MongoDB, Inc để thống nhất tên gọi công ty với sản phẩm chủ lực mà công ty này có. Mongo, MongoDB và biểu trưng chiếc lá Mongo là thương hiệu đã đăng ký của MongoDB, Inc.

The right tool for the job – Chọn đúng công cụ để làm việc. Đó là câu thành ngữ Tiếng Anh để nhắc mọi người phải chọn đúng công cụ khi làm việc, không tồn tại một thứ công cụ vạn năng. MongoDB phát huy tác dụng trong các ngữ cảnh nhất định:
+ Đó là các ứng dụng không yêu cầu tính A.C.I.D. [2] quá cao.
+ Các ứng dụng gần thời gian thực (near real-time), độ trễ thấp, lượng dữ liệu lớn mà lại cần truy vấn (Đọc, ghi, xóa, tìm kiếm, cập nhật) nhanh. Như hệ thống gợi ý (recommend system): gợi ý kết bạn, trên web hẹn hò, web tìm việc, gợi ý nhà hàng sau khi check-in, gợi ý page (trang tin) để follow (theo dõi).
+ Không có hoặc không yêu cầu tính toàn vẹn dữ liệu, ràng buộc dữ liệu (constraint) cao.

Mặc dù SQL và NoSQL khác nhau về bản chất, nhưng khi lập trình viên đã nắm chắc các nền tảng của Cơ sở dữ liệu quan hệ cùng với cách dùng SQL [3], thì việc tiếp cận MongoDB cũng không quá khó khăn. Các thao tác C.R.U.D.S. trên MongoDB sẽ có điểm tương đồng với việc sử dụng SQL đã biết.

Đối với DBA (Database Administrator) sẽ sử dụng dòng lệnh, các lệnh shell để thực hiện các công việc quản trị. Đối với lập trình viên MongoDB cung cấp API (Giao diện lập trình ứng dụng), các phương thức để hỗ trợ lập trình viên thao tác trên cơ sở dữ liệu, theo các ngôn ngữ và nền tảng lập trình khác nhau: Java, Python, Node.JS, C++,  C#.

Bài viết có tham khảo nội dung từ
Trang chủ MongoDB https://www.mongodb.org/
Bách khoa toàn thư mở (phiên bản tiếng Anh) https://en.wikipedia.org/wiki/MongoDB

Ghi chú
[1] https://github.com/mongodb/mongo
[2] A.C.I.D. – Atomicity (tính nguyên tử/không thể chia nhỏ), Consistency (Nhất quán), Isolation (cô lập/cách ly), Durability (Liên tục/Không gián đoạn)
[3] SQL: Structured Query Language – Ngôn ngữ truy vấn có cấu trúc
[4] C.R.U.D.S là Creat (tạo mới, thêm dữ liệu) – Read (đọc, truy vấn) – Update (cập nhật) – Delete (xóa) – Search (tìm kiếm)

Mời bạn đọc bài tiếp theo: Hướng dẫn cài đặt MongoDB.

Đỗ Như Vý – developer tại SmartJob


10gen,
A.C.I.D.,
Apache Cassandra,
Apache HBase,
Big Data,
Database,
DBMS,
Edgar. F. Codd,
IBM,
Inc.,
java,
Linux,
MacOS,
MariaDB,
MongoDB,
NoSQL,
Oracle,
RDBMS,
SQL,
Windows,