Trang chủ Kiến thức cơ bản

MongoDB là gì?

Tổng quan

Với sự gia tăng dữ liệu trên toàn thế giới, các cơ sở dữ liệu phi quan hệ, hay còn được gọi là "NoSQL" đang ngày càng được quan tâm hơn. Các doanh nghiệp và tổ chức đang tìm kiếm các phương pháp mới để quản lý lũ dữ liệu, tìm kiếm các công cụ và hệ thống quản lý cơ sở dữ liệu thay thế khác với các hệ thống cơ sở dữ liệu quan hệ truyền thống. Điển hình đó là MongoDb.

MongoDb là gì?

Theo định nghĩa, MongoDB là một cơ sở dữ liệu nguồn mở sử dụng một mô hình dữ liệu hướng tài liệu và một ngôn ngữ truy vấn không có cấu trúc. Đây là một trong những hệ thống và cơ sở dữ liệu NoSQL mạnh mẽ nhất hiện nay.

Là một công cụ NoSQL có nghĩa là nó không sử dụng các hàng và cột thông thường mà chúng ta hay dùng để liên kết việc quản lý cơ sở dữ liệu quan hệ. Nó là một kiến trúc được xây dựng trên các bộ sưu tập (collections) và tài liệu (documents). Đơn vị dữ liệu cơ bản trong cơ sở dữ liệu này bao gồm một tập hợp các cặp key-value. Nó cho phép các document có các trường và cấu trúc khác nhau. Cơ sở dữ liệu này sử dụng định dạng lưu trữ tài liệu được gọi là BSON là kiểu nhị phân của các tài liệu kiểu JSON. Mô hình dữ liệu của MongoDB là một mô hình có độ đàn hồi cao cho phép bạn kết hợp và lưu trữ dữ liệu của các kiểu đa biến mà không phải thỏa hiệp với các tùy chọn lập chỉ mục mạnh mẽ, truy cập dữ liệu và quy tắc xác thực. Không có downtime khi bạn muốn tự động sửa đổi các lược đồ. Điều này rất có ý nghĩa, bạn sẽ có nhiều thời gian để tập trung làm việc hơn là dành thời gian chỉ để chuẩn bị data cho database.

MongoDB là gì? - Ảnh 1.

Kiến trúc của cơ sở dữ liệu NoSQL MongoDB

Database: Hiểu một cách đơn giản, nó có thể được coi là vùng chứa vật lý cho dữ liệu. Mỗi database có tập file riêng trên file system với nhiều database hiện có trên một single MongoDB server.

Collection: Một nhóm các database document có thể được gọi là một collection. RDBMS tương đương với bộ sưu tập là một table. Toàn bộ collection tồn tại trong một single database. Không có schema nào khi nói đến các collection. Bên trong collection, các document khác nhau có thể có các trường khác nhau nhưng hầu hết các document trong một collection đều có cùng một mục đích hoặc phục vụ cùng một mục tiêu.

Document: Một tập hợp các cặp key - value có thể được chỉ định là một document. Các document được liên kết với các dynamic schema. Lợi ích của dynamic schema là document trong một collection không nhất thiết phải có cùng cấu trúc hoặc các trường. Ngoài ra, các trường phổ biến trong document của collection có thể có nhiều loại dữ liệu khác nhau.

MongoDB khác với RDBMS do đâu?

Chúng ta có thể so sánh trực tiếp NoSQL MongoDB với RDBMS và so sánh các thuật ngữ khác nhau trong hai hệ thống:

RDBMS table là một MongoDB collection, column là field, tuple/ row là document và table join là document được nhúng. Schema điển hình của một cơ sở dữ liệu quan hệ cho thấy số lượng các bảng và mối quan hệ giữa các bảng nhưng MongoDB không tuân theo khái niệm về mối quan hệ.

Hãy xem 9 sự so sánh khác nhau dưới đây để hiểu chính xác cơ sở dữ liệu NoSQL chuyên nghiệp như MongoDB khác với RDBMS như thế nào.

MongoDB

RDBMS

Định hướng tài liệu và cơ sở dữ liệu phi quan hệ

Cơ sở dữ liệu quan hệ

Dựa trên tài liệu

Dựa trên hàng

Dựa trên trường

Dựa trên cột

Dựa trên Collection và cặp key - value

Dựa trên bảng

Cung cấp Javascript client cho truy vấn

Không cung cấp Javascript cho truy vấn

Tương đối dễ thiết lập

Tương đối không dễ thiết lập

Nó không bị ảnh hưởng bởi SQL injection

Nó khá dễ bị tấn công bởi SQL injection

Lý tưởng cho việc lưu trữ dữ liệu phân cấp

Không tốt cho việc lưu trữ dữ liệu phân cấp

Có dynamic schema

Chứa schema được xác định trước

Nhanh gấp 100 lần

Tăng quy mô theo chiều dọc RAM

Nó có thể mở rộng theo chiều ngang thông qua sharding

Tăng quy mô theo chiều dọc RAM

Các tính năng quan trọng của MongoDB

Truy vấn (Queries): Hỗ trợ truy vấn đặc biệt và truy vấn dựa trên tài liệu.

Index Support: Bất kỳ trường nào trong tài liệu đều có thể được lập chỉ mục

Replication: Nó hỗ trợ nhân rộng Master slave. MongoDB sử dụng ứng dụng gốc để duy trì nhiều bản sao dữ liệu. Ngăn chặn database downtime là một trong những tính năng của bộ bản sao vì nó có phân đoạn tự phục hồi (self-healing shard).

Multiple Servers: Cơ sở dữ liệu có thể chạy trên nhiều máy chủ. Dữ liệu được nhân bản để đánh lừa hệ thống trong trường hợp lỗi phần cứng.

Auto-Sharding: Quá trình này phân phối dữ liệu trên nhiều phân vùng vật lý được gọi là phân đoạn do sharding MongoDB có tính năng cân bằng tải tự động.

MapReduce: Hỗ trợ MapReduce và các công cụ tổng hợp linh hoạt.

Failure Handling: Trong MongoDb, bạn dễ quản lý trong trường hợp bị lỗi. Số lượng bản sao khổng lồ giúp tăng cường khả năng bảo vệ và độ khả dụng của dữ liệu trong khoảng thời gian database downtime như lỗi rack, lỗi machine và lỗi data centre thậm chí là phân vùng network.

GridFS: Có thể lưu trữ bất kỳ kích thước tệp nào, không làm phức tạp stack. Tính năng GridFS chia tệp thành các phần nhỏ hơn và lưu trữ chúng dưới dạng tài liệu riêng biệt.

Schemaless: Đây là schema  ít được viết trong C ++.

Document-Oriented Storage (Lưu trữ hướng tài liệu): Nó sử dụng định dạng BSON là định dạng giống như JSON.

Procedures: Sự kết hợp của MongoDB JavaScript hoạt động tốt khi database sử dụng language thay vì các procedure.

Tại sao chúng ta cần công nghệ MongoDB?

Công nghệ này đã vượt qua một trong những yếu điểm lớn nhất của các hệ thống cơ sở dữ liệu truyền thống đó là khả năng mở rộng. Với nhu cầu ngày càng phát triển của các doanh nghiệp, hệ thống cơ sở dữ liệu của họ cũng cần được nâng cấp. MongoDb có khả năng mở rộng đặc biệt giúp dễ dàng trong việc lấy dữ liệu và cung cấp sự tích hợp một cách liên tục và tự động. Sau đây là các lý do tại sao chúng ta cần MongoDb:

- Không có downtime trong khi ứng dụng đang được mở rộng.

- Thực hiện trong memory processing

- Tìm kiếm văn bản

- Xử lý đồ thị

- Sao chép toàn cầu

- MongoDb có tính kinh tế

- Hơn nữa, các doanh nghiệp ngày càng nhận thấy rằng MongoDB đáp ứng được hầu hết các yêu cầu kinh doanh của họ, cụ thể như sau:

- MongoDB cung cấp sự kết hợp hiệu quả giữa công nghệ và dữ liệu nhằm tăng lợi thế cạnh tranh.

- Nó phù hợp nhất cho các ứng dụng quan trọng vì nó làm giảm đáng kể các rủi ro có thể xảy ra.

- Nó ngày càng gia tăng giá trị theo thời gian và làm giảm tổng chi phí sở hữu. Cơ sở dữ liệu quan hệ.

- Nó xây dựng các ứng dụng mà các cơ sở dữ liệu quan hệ truyền thống không thể thực hiện được.

Ưu điểm của MongoDB

Đây là các đặc điểm giúp MongoDB trở thành một trong những cơ sở dữ liệu NoSQL tốt nhất:

MongoDB là gì? - Ảnh 2.

- Nền tảng dữ liệu phân tán

- Phát triển nhanh, lặp lại

- Mô hình dữ liệu linh hoạt

- Giảm TCO (tổng chi phí sở hữu)

- Bộ tính năng tích hợp

- Cam kết lâu dài

Ai là đối tượng thích hợp để học công nghệ MongoDB?

Nhà phát triển phần mềm, kiến trúc sư và quản trị viên

Chuyên gia Database và chuyên gia phân tích

Quản trị viên hệ thống, chuyên gia nghiên cứu

Bạn có thể sử dụng cơ sở dữ liệu NoSQL MongoDB ở đâu?

Cơ sở dữ liệu NoSQL MongoDB có thể được sử dụng rộng rãi cho các ứng dụng Big Data và Hadoop, làm việc với số lượng dữ liệu NoSQL khổng lồ - phần chính của Big Data.

MongoDB có thể được triển khai thành công cho các phương tiện truyền thông xã hội và các ứng dụng di động trong việc phân tích tất cả các dữ liệu trực tuyến có định dạng không có cấu trúc.

MongoDB NoSQL database cũng được áp dụng trong việc quản lý và phân phối nội dung, quản lý dữ liệu người dùng và hoạt động độc quyền trong các data hub.

Các lệnh cơ bản trong MongoDB

1. Kết nối đến MongoDB

Tương tự khi sử dụng sql thì phải kết nối đến database, mongodb cũng vậy:

$m = new Mongo("mongodb://${username}:${password}@localhost");

Lệnh này khởi tạo kết nối đến server cài đặt mongodb, mặc định nếu không có tham số sẽ là localhost với cổng port = 27017.

Tiếp theo là lệnh chọn database

$db = $m->google; //Với database có tên "google";

Tiếp theo chọn collection (collection tương tự như chọn một bảng trong cơ sở dữ liệu quan hệ sql):

$collection = $db->user;

Vậy là quá trình kết nối đã hoàn tất, để nắm rõ hơn quá trình này thì các bạn có thể truy cập trực tiếp vào trang chủ php.net theo đường dẫn: http://www.php.net/manual/en/mongo.connecting.php

2. Lệnh insert

Lệnh được sử dụng để thêm dữ liệu mới vào collection tương tự như lệnh insert trong sql

Ví dụ: thêm một bản ghi về user vào collection user đã kết nối ở trên:

$aryUser = array('username'=>'google', 'age'=>27, 'phone'=>'098888888');

$collection ->insert($aryUser);

3. Lệnh update

Khi muốn thay đổi thong tin của một bản ghi thì các bạn có thể dùng lệnh update, tương tự lệnh update trong sql

Ví dụ: thay đổi tuổi của user có username là google:

$aryUser = array('username'=>'google');

$set = array( '$set' => array('age' => 28) );

$collection->update($aryUser, $set);

4. Lệnh find

Được dùng để truy vấn vào collection để lấy các bản ghi cần thiết.

Ví dụ: lấy thông tin user có username là 'google'

$infoUser = $collection->find(array('username'=>'google'));

foreach ($infoUser as $user) {

print_r($user);

}

Kết quả sẽ là:

Array ( [_id] => MongoId Object ( [$id] => … ) [username'] => 'google' [age'] => 28 [phone]=>098888888)

Theo BizFly Cloud tổng hợp

>> Có thể bạn quan tâm: SQL so với NoSQL – lựa chọn nào là tốt nhất cho hệ cơ sở dữ liệu đám mây?

BizFly Cloud là hệ sinh thái điện toán đám mây được vận hành bởi VCCorp - Công ty dẫn đầu trong lĩnh vực công nghệ và truyền thông tại Việt Nam. Với đội ngũ kỹ thuật viên trình độ cao và kinh nghiệm lâu năm làm việc trên các công nghệ khác nhau như cloud, mobile, web..., chúng tôi có đủ khả năng để hỗ trợ đưa ra những giải pháp và công nghệ toàn diện giúp doanh nghiệp chuyển đổi số thành công. Dành cho độc giả quan tâm tới các dịch vụ đám mây do BizFly Cloud cung cấp có thể truy cập tại đây.