So sánh sự tương quan giữa MongoDB và SQL

Trong thời gian gần đây, tôi có tìm hiểu về cơ sở dữ liệu NoSQL và MongoDB.

Bạn có thể tìm hiểu sơ qua về NoSQL tại bài viết Giới thiệu về cơ sở dữ liệu NoSQL

Về cơ bản, bạn có thể hiểu về NoSQL là không phải SQL. Nếu bạn chưa biết SQL là gì, bạn có thể tìm câu trả lời tại series giới thiệu về MySQL của chị Nguyễn Thị Hồng Nhung, người có nhiều bài viết hay và chất lượng trên Viblo.

Vậy mục đích tôi viết bài viết này là gì?

  • Bài viết này tìm ra điểm tương quan giữa cách sử dụng query trong Mongo db và SQL, mong rằng bài viết này sẽ hữu ích cho những người mới tìm hiểu từ SQL sang NoSQL.
  • Bài viết có ví dụ đơn giản cách query dữ liệu, các câu lệnh query dữ liệu tương ứng khi dụng Mongodb thay vì MySQL

Start Mongo DB

  • Đơn giản là bạn bật Mongo db server lên , và bật shell mode của mongo db để gõ các câu lệnh query tương ứng với các câu lệnh SQL mà bạn quen thuộc.

  • Dành cho bạn nào còn chưa cài đặt Mongo db trên máy tính của mình, bạn có thể tham khảo bạn tại google nhé, có rất nhiều bài viết hướng dẫn cài đặt Mongo db trên windows, ubuntu, .v.v

  • Về cơ bản, để bắt đầu, chúng ta sẽ có 2 cửa terminal như hình.

13043475_862383733874082_1855643372378272052_n.jpg .

Cửa sổ (terminal) thứ nhất ta bật MongoDB sever, cửa sổ thứ hai ta để mongo shell. Đơn giản là chúng ta chỉ cần cỗ chỗ viết các câu query và thực hiện các kêu query để mục sở thị kết quả cho dễ nhớ.

Sự tương quan các thuật ngữ được sử dụng trong MongoDB và SQL

Operation In SQL In MongoDB
Create Insert Insert
Read Select Find
Update Update Update
Delete Delete Remove
Table Table Collection
Row Row Document

Một số điểm quan trọng của MongoDB

  1. MongoDB lưu dữ liệu theo định dạng JSON( chúng ta gọi nó là BSON(Binary JSON))

  2. JSON là viết tắt của JavaScript Object Notations và trông nó kiểu kiểu như {"name": "nhat"}

  3. JSON document lưu trữ các dữ liệu theo kiểu định dạng key-value, trong ví dụ trên, "name"key, "nhat"value

  4. Có 2 kiểu cấu trúc cơ bản trong JSON là:

    • Array: Một danh sách chứa các thể hiện của một list các key-value
    • Dictionaries: Lưu trữ các cặp key-value, ai đã từng dùng ngôn ngữ lập trình python sẽ rất quen thuộc với kiểu dictionaries này. Bạn có thiểu nó tương tự kiểu con trỏ trong C, C++, nghĩa là key trỏ đến gía trị mà nó lưu trữ, bạn có thể ,lấy giá trị nó lưu trữ thông qua key. 😃
  5. MongoDb có cấu trúc Schema động, nó không cần phải định nghĩa một mô hình với những mối quan hệ phải được định sẵn khi thiết kế, điều này MongoDB kế thừa từ NoSQL

  6. MongoDB không hỗ trợ Joins

  7. MongoDB không hỗ trợ Transactions

Một vài ví dụ về query trong MongoDB

  1. Insert
  • Ý nghĩa/mục đích: Chèn thêm một bảng ghi vào 1 bảng
  • Câu query trong SQl:
    insert into
    Student Values(1,'Vijay',
    '[email protected]',
    '9711965544','Delhi')
  • Câu query trong MongoDB:
    db.Student.insert(
    {"_id":1,"Name":"Vijay","Email":"[email protected]",
    "PhoneNo":"9711965544","Address":"Delhi"}
    )
  1. Select
  • Ý nghĩa/mục đích:
  • Câu query trong SQl:
    Lấy tất cả các cột :
    select * from student
    Lấy một vài cột :
    select ID,Name from Student
  • Câu query trong MongoDB:
    Lấy tất cả các cột :
    db.Student.find()
    Lấy một vài cột :
    db.Student.find({},{"Name":true})
    Chúng ta dùng find() Method để get tất cả dữ liệu trong table.
  1. Where
  • Ý nghĩa/mục đích:
  • Câu query trong SQl:
    select * from student where Name='Vijay'
  • Câu query trong MongoDB:
     db.Student.find({Name:"Vijay"})

Trên là một ví dụ về 3 query thường gặp nhất trong SQL, và nó chuyển thành như thê nào trong MongoDB.

Trong các bài viết tiếp theo, tôi sẽ tiếp tục tìm hiểu Mongodb và so sánh chúng với SQL để những người đã tiếp xúc với SQL có một chuyển mình nhẹ nhàng sang NoSQL, cụ thể là Mongodb.

Cảm ơn đã đọc bài viết.