03/08/2018, 10:16

Bài 03: Cấu trúc Data Model trong MongoDB

Trong các hệ quản trị CSDL như MySQL hay SQL SERVER đều có khái niệm table (bảng) và mỗi table sẽ có các thông tin (column) xác định, có nghĩa bạn ...

Trong các hệ quản trị CSDL như MySQL hay SQL SERVER đều có khái niệm table (bảng) và mỗi table sẽ có các thông tin (column) xác định, có nghĩa bạn không thể chỉnh sửa cấu trúc lưu trữ của một table được. Nhưng với MongoDB thì lại khác, các collection (table trong MySQLlưu trữ trong MongoDB có sự linh động và cấu trúc có thể khác nhau, nghĩa là một collection bạn có thể lưu hai loại dữ liệu hoàn toàn khác nhau (theo node).

1. So sánh RDBMS  và MongoDB

Để rõ ràng hơn thì chúng ta có một bài toán thế này: Hãy thiết kế mô hình CSDL cho trường hợp lưu trữ tin tức, mỗi tin tức có thể có nhiều comment và có nhiều tags.

Trường hợp RDBMS: Trong trường hợp này chúng ta sẽ tạo tối thiểu là 3 bảng gồm POST, COMMENTS, TAG_LIST như hình dưới đây (Ảnh sưu tầm).

RDBMS.png

Khi truy vấn chúng ta sẽ JOIN các bảng lại với nhau để lấy thông tin.

Trường hợp MongoDB: Với MongoDB thì ta không thể thiết kế theo mô hình kia được, trường hợp này chúng ta sẽ có một collection tên POST với cấu trúc lưu trữ như sau:

{
   _id: POST_ID
   title: TITLE_OF_POST, 
   description: POST_DESCRIPTION,
   by: POST_BY,
   url: URL_OF_POST,
   tags: [TAG1, TAG2, TAG3],
   likes: TOTAL_LIKES, 
   comments: [    
      {
         user:'COMMENT_BY',
         message: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES 
      },
      {
         user:'COMMENT_BY',
         message: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES
      }
   ]
}

Nhìn kỹ hơn bạn thấy nó giống JSON (tham khảo JSON là gì?)

Mỗi khi insert dữ liệu vào thì bạn sẽ phải truyền nó vào một chuỗi JSON y chang cấu trúc trên. Chính vì là JSON nên ban phải lưu ý các ký tự đặc biệt khi INSERT bằng code PHP nhé.

2. Một số lưu ý khi thiết kế lược đồ MongoDB

Khi thiết kế CSDL với MongoDB thì không giống như trong MySQL nên bạn cần phải cân nhắc các lưu ý sau:

  • Cấu trúc theo yêu cầu của người dùng (khách hàng)
  • Kết hợp chung vào chung một document nếu nó có dính líu với nhau. Nếu không tách chúng ra và truy vấn nhiều lần để lấy kết quả theo mong muốn
  • Dupplicate data (nhân đôi dữ liệu) ở mức hạn chế vì năm 2015 vấn đề dung lượng lưu trữ không quan trọng nữa mà họ chỉ quan tâm tới tốc độ truy vấn
  • Thực hiện JOIN trong khi insert, không thể JOIN khi select được.
  • Tối ưu hóa CSDL cho các trường hợp thường xuyên sử dụng

3. Lời kết

Nếu ban làm việc quen với MySQL rồi thì bạn sẽ có nhiều bỡ ngỡ khi tìm hiểu MongoDB, nhưng nếu bạn đã tìm hiểu JSON rồi thì bạn sẽ dễ dàng học MongoDB hơn.

Trong bài viết mình có tham khảo một số website như:

  • Tutorialpoints
BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan

[School] Bài tập đặc tả cấu trúc DTD, Schema trong XML

[School] Bài tập đặc tả cấu trúc DTD, Schema trong XML Tháng Mười Hai 8, 2014 nguyenvanquan7826 Z- Thể loại khác 10 responses Bài viết này giải bài tập về đặc tả cấu trúc với DTD và XMLSchema trong phạm vi “Bài tập” ...

Tạ Quốc Bảo viết 3 tuần trước

Bài 2: Cấu trúc của laravel (5.3)

1,Cấu trúc của Laravel. -Ở bài trước mình đã giới thiệu qua về Laravel và các cách cài đặt nó trên windows rồi. Sau khi đã cài đặt được nó rồi thì chúng ta bắt đầu xem qua về cấu trúc của nó nhé. lar-53/ |--- app/ │ |--- Console │ |--- Exceptions │ |--- Http │ │ ...

Tạ Quốc Bảo viết 17:34 ngày 07/09/2018

Bài 4: Câu Lệnh SELECT DISTINCT Trong SQL

Chào các bạn hôm nay chúng ta sẽ tiếp tục loạt bài học SQL căn bản, chủ đề hôm nay của chúng ta là câu lệnh SELECT DISTINCT trong SQL Câu Lệnh SELECT DISTINCT Có Tác Dụng Gì? Bên trong một bảng, một cột thường chứa nhiều giá trị trùng lặp; và đôi khi bạn chỉ muốn liệt kê các giá trị khác ...

Trịnh Tiến Mạnh viết 13:40 ngày 07/09/2018

Cấu trúc dữ liệu trong Java

Các cấu trúc dữ liệu cung cấp bởi các package tiện ích của Java rất mạnh mẽ và thực hiện các tính năng rộng rãi. Những cấu trúc dữ liệu này bao gồm những interface và class. Tất cả các lớp trên được giới thiệu bởi một framework mới với tên là Collection Framework, được thảo luận ở chương ...

Bùi Văn Nam viết 13:50 ngày 14/08/2018

Làm thế nào để cấu trúc các components trong React?

Lập trình là một nhiệm vụ khá phức tạp. Đặc biệt tạo ra clean code là rất khó. Chúng ta cần phải quan tâm nhiều yếu tố - đặt tên các biến, phạm vi function, xử lý các lỗi, đảm bảo security, giám sát performance, ... Còn để đặt tên điều khó nhất trong lập trình, tôi sẽ bắt đầu với bài viết các ...

Hoàng Hải Đăng viết 16:41 ngày 12/08/2018
0