- vừa được xem lúc

[MongoDB P1] Giới thiệu về CSDL MongoDB

0 0 24

Người đăng: Trịnh Quốc Việt

Theo Viblo Asia

Lời mở đầu

Hello các bạn, đây là bài viết đầu tiên trong series bài viết "Những gì mình biết về MongoDB", series nói về một NoSQL DB cực kỳ phổ biến là MongoDB.

Trong nội dung bài này mình sẽ chia sẻ một cái nhìn tổng quan về MongoDB ở các khía cạnh:

  • NoSQL là gì?
  • MongoDB là gì?
  • Tại sao và khi nào nên dùng MongoDB
  • Ưu/nhược điểm của mongodb
  • Các tính năng nổi bật của mongodb

Nào hãy cùng mình bắt đầu nhé!

NoSQL là gì

Nếu bạn là dân IT thì chắc hẳn ở trường các bạn đã được học về Cơ sở dữ liệu quan hệ (Rational Database Management System - RDBS) với các tiêu chuẩn thiết kế chuẩn 1, chuẩn 2, chuẩn 3... Tuy nhiên tồn tại song song với các loại hệ quản trị CSDL quan hệ RDBMS (Relational Database Management System còn có các loại hệ quản trị CSDL phi quan hệ, gọi là NoSQL DB (NoSQL viết tắt của Not-Only SQL hay None-Relational SQL).

Vậy đã có RDBMS rồi sao lại cần có NoSQL DB nữa, thì đây là lý do:

  • NoSQL DB giải quyết những khuyết điểm và hạn chế của các loại RDBMS về tốc độ, tính năng, khả năng mở rộng,...
  • NoSQL DB có thể sử dụng cho các loại dữ liệu có cấu trúc, bán cấu trúc hay phi cấu trúc. Nó không bị hạn chế bởi một data model có định
  • Với NoSQL DB 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 .v.v .
  • NoSQL DB sử dụng schema động cho các dữ liệu phi cấu trúc, giúp cho việc tích hợp dữ liệu với các loại ứng dụng khác nhau một đơn giản và nhanh chóng hơn
  • NoSQL DB 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 DB phổ biến có thể kể đến MongoDB, Cassandra, Hbasse, Redis, CouchDB

MongoDB là gì

MongoDB là phần mềm cơ sở dữ liệu dạng NoSQL, có mã nguồn mở hỗ trợ đa nền tảng được thiết kế theo hướng đối tượng. Các bảng (trong MongoDB gọi là collection) có cấu trúc linh hoạt cho phép tổ chức và lưu trữ dữ liệu theo một cách linh động không bắt buộc có tính cấu trúc chặt chẽ như các CSDL SQL khác.

Từ cách tiếp cận đó, mongodb có thể được sử dụng để lưu các dữ liệu có cấu trúc phức tạp. Các dữ liệu phức tạp có thể được lưu vào các bảng (trong mongodb thì khái niệm bảng - table được gọi là collection) dưới dạng json nên mang lại tính khả dụng và hiệu suất cao.

Điểm mạnh của mongodb

Không phải tự nhiên mà mongodb lại phổ biến đến vậy trong số các NoSQL DB, đơn giản vì nó có nhiều ưu điểm:

  • Mongod lưu trữ các bản ghi như các tài liệu dạng json và được lưu trữ dưới dạng file nén BSON. Các bản ghi này có thể được truy vấn trực tiếp dưới dạng Json và điều này mang lại nhiều lợi ích:

    • Nó là dạng lưu trữ data khá tự nhiên
    • Cả dữ liệu cấu trúc và phi cấu trúc đều có thể được lưu trữ trong cùng 1 cấu trúc bản ghi
    • Có thể sử dụng dữ liệu json lồng nhau để lưu các dữ liệu phức tạp
    • Json giúp cho việc thêm/bớt các trường dữ liệu trở nên đơn giản hơn rất nhiều

    Ví dụ lưu trữ bản ghi dưới dạng Json:

    {
    _id: ,
    Emp_ID: "10025AE336"
    Personal_details:{ First_Name: "Radhika", Last_Name: "Sharma", Date_Of_Birth: "1995-09-26"
    },
    Contact: { e-mail: "radhika_sharma.123@gmail.com", phone: "9848022338"
    },
    Address: { city: "Hyderabad", Area: "Madapur", State: "Telangana"
    }
    }
    
  • Khả năng mở rộng: MongoDB hỗ trợ scale với tính năng Sharding. Điều này giúp cho chúng ta có thể mở rộng cụm mongodb dễ dàng

  • Cộng đồng phát triển lớn

Khi nào nên sử dụng MongoDB

Chắc là đọc tới đây thì có lẽ các bạn, hay cty của các bạn đã chọn sử dụng mongodb rồi. Việc lựa chọn một loại DB phụ thuộc vào rất nhiều yếu tố cả về kỹ thuật tới các chi phí phát triển và vận hành về sau.

Tuy nhiên các bạn có thể tham khảo thêm một số trường hợp phù hợp sử dụng mongodb như:

  • Sử dụng document để lưu trữ dữ liệu, dễ dàng thêm bớt, mở rộng dữ liệu tùy ý.
  • Dữ liệu của bạn phức tạp hoặc có dạng phi cấu trúc
  • Ứng dụng có tính chất Insert nhiều (write-intensive)
  • Cần hệ thống có cơ chế dự phòng cao (High Availabity)
  • Cần hệ thống có khả năng mở rộng nhanh chóng và dễ dàng

Một số thuật ngữ của MongoDB

Khi bạn đã quen làm việc với RDBMS thì chuyển sang MongoDB ban đầu sẽ có chút bỡ ngỡ vì một số khái niệm của RDBMS sẽ khác với MongoDB.

Các bạn có thể xem một ánh xạ giữa các khái niệm tương đương của RDBMS với MongoDB như sau:

Trong phần sau chúng ta sẽ tìm hiểu sâu hơn một chút về kiến trúc hệ thống MongoDB như thế nào nhé!

Bình luận

Bài viết tương tự

- vừa được xem lúc

TÌM HIỂU VỀ MONGODB

. 1. Định nghĩa về MongoDB. . MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL(*) hàng đầu, được hàng triệu người sử dụng.

0 0 44

- vừa được xem lúc

Mongo DB cho người mới bắt đầu !

Lời nói đầu. Gần đây, mình mới bắt đầu nghiên cứu và sử dụng mongo db nên có chút kiến thức cơ bản về Mongo muốn share và note ra đây coi như để nhở (Biết đâu sẽ có ích cho ai đó).

0 0 36

- vừa được xem lúc

Áp dụng kiến trúc 3 Layer Architecture vào project NodeJS

The problem encountered. Các framework nodejs phổ biết như Express cho phép chúng ta dễ dàng tạo ra Resful API xử lí các request từ phía client một cách nhanh chóng và linh hoạt.

0 0 80

- vừa được xem lúc

Mongo DB cho người mới bắt đầu ! (P2)

Lời nói đầu. Gần đây, mình mới bắt đầu nghiên cứu và sử dụng mongo db nên có chút kiến thức cơ bản về Mongo muốn share và note ra đây coi như để nhở (Biết đâu sẽ có ích cho ai đó).

0 0 183

- vừa được xem lúc

Xây dựng CRUD RESTful API sử dụng Node, Express, MongoDB.

Introduction. Trong phạm vi bài viết này chúng ta sẽ cùng tìm hiểu về cách tạo restful api với Node, Express và MongoDB. . Xử lý các hoạt động crud.

0 0 226

- vừa được xem lúc

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

Bài viết này mình sẽ giúp các bạn có cái nhìn tổng quan về MongoDB. Chúng ta không lạ gì với cơ sở dữ liệu quan hệ, còn với cơ sở dữ liệu phi quan hệ thì sao? MEAN stack (MongoDB, Express, AngularJS,

0 0 53