Định dạng ngày giờ mongodb

Một số định nghĩa trước khi đi sâu về MongoDB. Đây là một tài liệu đa nền tảng, hướng DB với hiệu suất cao, có thể trả lời câu hỏi cho đa dạng các hệ thống và dễ dàng mở rộng quy mô. Tưởng tượng của MongoDB là thông qua bộ sưu tập khái niệm và tài liệu. Vì không tìm được từ tiếng việt hay ho hơn nên tạm thời cho phép mình giữ nguyên các khái niệm tiếng anh của 2 thuật ngữ này

cơ sở dữ liệu

Cơ sở dữ liệu là vật chứa vật lý cho các bộ sưu tập. Mỗi DB được thiết lập cho riêng nó một danh sách các tệp hệ thống tệp. Một máy chủ MongoDB đơn thường có nhiều DB

Bộ sưu tập

Bộ sưu tập là một nhóm các tài liệu của MongoDB. Nó tương đương với một bảng trong RDBMS. Một bộ sưu tập tồn tại trong một cơ sở dữ liệu duy nhất. Các bộ sưu tập không được tạo nên một lược đồ. Tài liệu trong bộ sưu tập có thể có các lĩnh vực khác nhau. Thông thường, tất cả các tài liệu trong bộ sưu tập có mục đích tương tự nhau hoặc liên quan đến nhau

Định dạng ngày giờ mongodb

Tài liệu

Một tài liệu là một tập hợp các cặp khóa-giá trị. Tài liệu có lược đồ động. Lược đồ động có nghĩa là các tài liệu trong cùng một bộ sưu tập không nhất thiết phải có cùng một nhóm các trường hoặc cấu trúc giống nhau, và các trường phổ biến trong các tài liệu của bộ sưu tập có thể chứa các loại dữ liệu khác nhau.

Định dạng ngày giờ mongodb

Bảng dưới đây cho thấy mối quan hệ của các thuật ngữ RDBMS với MongoDB

Định dạng ngày giờ mongodb

Một số điều cần cân nhắc khi thiết kế lược đồ trong MongoDB

  • Thiết kế lược đồ dựa trên yêu cầu của người dùng

  • Kết hợp các đối tượng vào một tài liệu nếu bạn sử dụng chúng với nhau. Nếu không thì tách riêng Chắc chắn nó ra (nhưng cần phải chú ý là sau này nó sẽ không tham gia)

  • Sao chép dữ liệu (nhưng có giới hạn) do không gian đĩa quá rẻ nên với tốc độ xử lý

  • tham gia khi viết, không tham gia khi đọc

  • Lược đồ tối ưu cho hầu hết các trường hợp sử dụng thông thường

  • Tập hợp các nhóm phức tạp vào lược đồ

Ví dụ

Giả sử là một khách hàng cần DB thiết kế cho blog của anh ta và cân nhắc sự khác biệt giữa lược đồ RDMS và MongoDB. Web will have the following request

  • Mọi bài đăng đều có tiêu đề, mô tả và url duy nhất
  • Mọi bài đăng có thể có 1 hoặc nhiều thẻ
  • Mọi bài đăng đều có tên của nhà xuất bản và số lượng người xem thích
  • Mọi bài đăng đều có nhận xét trả lời một người dùng với tên, thông báo, thời gian dữ liệu và lượt thích
  • Mỗi bài đăng có thể có 0 hoặc nhiều bình luận

Trong lược đồ thiết kế của RDBMS, chúng ta sẽ có như sau về bài đăng, nhận xét và thẻ

Định dạng ngày giờ mongodb

Trong khi thiết kế lược đồ MongoDB sẽ có một bài đăng bộ sưu tập và có cấu trúc sau

Trong khi đó ở MongoDB schema, chúng ta sẽ thiết kế một collection post và có cấu trúc 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
      }
   ]
}

Để hiển thị 1 bài đăng RDBMS cần phải tham gia 3 bảng trong khi MongoDB chỉ cần lấy ra từ một bộ sưu tập. Nói đến đây nhiều bạn chú ý đừng thần tượng MongoDB quá nhé. Tháng sau mình sẽ viết 1 bài về so sánh hiệu năng với hàng triệu bản ghi giữa MySQL và NoSQL

MongoDB - Tạo/xóa cơ sở dữ liệu

Một số lệnh liên quan đến Cơ sở dữ liệu

use DATABASE_NAME

Ví dụ

>use duongdb
switched to db duongdb

Kiểm tra đang sử dụng DB nào

>db
duongdb

hiển thị danh sách các DB trong máy chủ

>show dbs
local     0.78125GB
test      0.23012GB

DB của bạn vừa tạo mới ko có ở đây. bạn phải chèn một tài liệu về nó vào danh sách

>db.movie.insert({"name":"tutorials point"})
>show dbs
local      0.78125GB
duongdb       0.23012GB
test       0.23012GB

Thả DB

db.dropDatabase()

MongoDB - Tạo/Xóa bộ sưu tập

Dưới đây là cú pháp để tạo một Bộ sưu tập

db.createCollection(name, options)

db.COLLECTION_NAME.drop()
0 thì yêu cầu phải là một chuỗi. Trong khi đó mục
db.COLLECTION_NAME.drop()
1 thì chứa khá nhiều thông số về. ________ 82, ________ 83, ________ 84 , ________ 85

db.COLLECTION_NAME.drop()
2 là một tập hợp các bộ sưu tập có kích thước cố định và tự động viết tiêu đề lên các mục cũ của nó khi chạm đến kích thước tối đa. Nếu bạn cho nó đúng, thì bạn phải điền
db.COLLECTION_NAME.drop()
4 với lại
db.COLLECTION_NAME.drop()
5

db.COLLECTION_NAME.drop()
3 sẽ tự động tạo một chỉ mục trên biến
use DATABASE_NAME
80 Mặc định giá trị này là sai

và cú pháp để loại bỏ một bộ sưu tập

________số 8

Ví dụ nhé

use DATABASE_NAME
8

Trong MongoDB, bạn không nhất thiết phải tạo bộ sưu tập. This thing will tự động tạo bộ sưu tập cho bạn khi bạn chèn tài liệu

use DATABASE_NAME
0

Đây là ví dụ drop

use DATABASE_NAME
1

Data type

  • Sợi dây. Chuỗi trong MongoDB phải là UTF-8 hợp lệ
  • số nguyên. Số nguyên có thể là 32 bit hoặc 64 bit tùy thuộc vào máy chủ của bạn
  • Boolean
  • Kép
  • Phím tối thiểu/tối đa. Loại này được sử dụng để so sánh giá trị đối với các yếu tố thấp nhất và cao nhất BSON
  • Mảng
  • dấu thời gian
  • Sự vật
  • Vô giá trị
  • Biểu tượng
  • Ngày
  • ID đối tượng
  • Dữ liệu nhị phân
  • Mã số
  • Biểu hiện thông thường

MongoDB - Tài liệu

Chèn một tài liệu

use DATABASE_NAME
2

Ví dụ

use DATABASE_NAME
3

Nếu bạn muốn chèn nhiều tài liệu trong một lệnh, bạn cần chọn mảng trong lệnh

use DATABASE_NAME
81

use DATABASE_NAME
4

Lệnh tìm kiếm

use DATABASE_NAME
5

To current results better. You can use more method

use DATABASE_NAME
82

use DATABASE_NAME
6

Cách sử dụng tìm AND trong MongoDB

use DATABASE_NAME
7

Cách sử dụng find OR trong MongoDB

use DATABASE_NAME
8

Dưới đây là một ví dụ sử dụng cả AND và OR trong MongoDB

use DATABASE_NAME
9

Next to the command UPDATE

>use duongdb
switched to db duongdb
0

Giá sử dụng ban đầu của bạn dữ liệu ban đầu là như thế này

>use duongdb
switched to db duongdb
1

Sau khi chạy

>use duongdb
switched to db duongdb
2

Bạn sẽ nhận được kết quả như sau

>use duongdb
switched to db duongdb
3

Bạn có thể cập nhật nhiều tài liệu bằng cách truyền một thông số 'đa' cho nó đúng

>use duongdb
switched to db duongdb
4

Lệnh LƯU

Cú pháp của lệnh này như sau

>use duongdb
switched to db duongdb
5

Dưới đây là ví du

>use duongdb
switched to db duongdb
6

when you run this phase, data section of documents has ID

use DATABASE_NAME
83 will be instead of after

>use duongdb
switched to db duongdb
7

Lệnh XÓA

Command this other menu. Các bạn tự tìm hiểu thêm nhé

MongoDB - Phép chiếu

Trong mongodb, projection có nghĩa là bạn chỉ cần chọn những dữ liệu cần hthieets thay vì chọn hết mọi dữ liệu của tài liệu. Nó khác find trong find Collection at place is find thì tìm tài liệu tìm kiếm dữ liệu trong bộ sưu tập. Còn lại, khái niệm này sẽ tìm kiếm các trường kết quả trong tài liệu. ví dụ bạn cần hiển thị 3 trường kết quả trong 5 trường của một tài liệu

cú pháp của lệnh tìm kiếm này sẽ là

>use duongdb
switched to db duongdb
8

Ví dụ dữ liệu hiện tại của bạn như sau

>use duongdb
switched to db duongdb
1

Bạn chỉ cần muốn hiển thị từng tiêu đề thôi. Please do as after

>db
duongdb
0

It's menu must ko

MongoDB - Bản ghi giới hạn

Để giới hạn số lượng bản ghi trong MongoDB, bạn sẽ sử dụng phương thức limit(). Limit() sẽ chấp nhận số lượng bản ghi giới hạn thông qua đối số mà bạn truyền vào. Nó sẽ hiển thị số lượng tài liệu mà bạn muốn hiển thị

>db
duongdb
1

Use ví dụ ở Projection at on them ta có ví dụ sau

>db
duongdb
2

Ngoài ra, lệnh skip() cho phép bạn bỏ qua 1 giá trị tài liệu

>db
duongdb
3

MongoDB - Sắp xếp bản ghi

Để sắp xếp các tài liệu trong MongoDB, bạn phải sử dụng sort(). sort() cho pehsp một tài liệu trong chứa các trường theo thứ tự thứ tự. có 2 loại thứ tự, 1 sẽ tương đương với tăng dần và -1 sẽ tương đương với giảm dần

>db
duongdb
4

MongoDB - Lập chỉ mục

Index hỗ trợ phân tích một cách hiệu quả các truy vấn. Nếu không có mục duy nhất, MongoDB sẽ phải quét tất cả các tài liệu của bộ sưu tập để chọn ra những tài liệu phù hợp với câu hỏi. Quá trình quét này không hiệu quả và yêu cầu MongoDB xử lý một khối dữ liệu lớn

Chỉ mục là những cấu trúc dữ liệu đặc biệt, được sử dụng để chứa một phần nhỏ của các tập tin dữ liệu một cách dễ dàng để quét. Chỉ số lưu trữ giá trị của một trường cụ thể hoặc thiết lập các trường, sắp xếp theo giá trị của các trường này

>db
duongdb
5

Để có thể đánh số nhiều trường, bạn hãy sử dụng

use DATABASE_NAME
84

>db
duongdb
6

At here value 1 and -1 is could show the sorting index.

use DATABASE_NAME
84 có khá nhiều tham số để bạn có thể tùy chỉnh

MongoDB - Tổng hợp

Tổng hợp xử lý các bản ghi dữ liệu và trả về kết quả tính toán rồi. Tập hợp sẽ nhóm các giá trị từ nhiều tài liệu khác nhau và có thể tiến hành xử lý rất nhiều nhóm dư liệu để trả về một kết quả đơn lẻ. Xử lý này tương đương với đếm(*) trong SQL

>db
duongdb
7

Ví dụ chúng ta có dữ liệu như thế này

>db
duongdb
8

Nếu bạn muốn hiển thị có bao nhiêu hướng dẫn được viết bởi mỗi người dùng, bạn sẽ sử dụng

use DATABASE_NAME
86 như sau

>db
duongdb
9

Tương ứng với câu truy vấn trên trong SQL sẽ có kết quả là

use DATABASE_NAME
87. Trong ví dụ ở trên, chúng ta đã nhóm các tài liệu trả trường
use DATABASE_NAME
88 và sau đó trên mỗi lần xả by_user giá trị tổng được tăng lên

Khái niệm về PIPELINE

Trong lệnh shell UNIX, đường dẫn có nghĩa là khả năng thực hiện một xử lý trên một vài đầu vào và sử dụng các đầu ra như đầu vào cho lệnh toeeps theo. MongoDB cũng hỗ trợ khái niệm tương tự trong tập hợp khung. Sẽ có một tập hợp các giai đoạn có thể xảy ra và mỗi giai đoạn được đánh dấu bằng một nhóm tài liệu như đầu vào và tính toán ra kết quả của nhóm tài liệu đó. Kết quả này có thể sẽ được chuyển thành đầu vào sử dụng cho giai đoạn tiếp theo

Bài viết sau mình sẽ viết tiếp về những vấn đề nâng cao hơn của MongoDB

MongoDB - Sao chép

Bản sao là khái niệm đồng bộ hóa dữ liệu trên nhiều máy chủ. REplication sẽ cung cấp rất nhiều và tăng tính khả dụng của dữ liệu với nhiều bản sao dữ liệu trên nhiều máy chủ DB, các bản sao bảo đảm cho DB khỏi việc mất dữ liệu trên 1 máy chủ đơn lẻ. Bản sao cũng cho phép bạn có thể khôi phục dữ liệu từ ổ cứng bị lỗi và dịch vụ bị lỗi hoặc gặp sự cố. Với rất nhiều bản sao dữ liệu, bạn có thể tinh chỉnh một bản để phục hồi, báo cáo hoặc sao lưu

In sao lại cần REPLICATION

  • Data data an toàn
  • Tạo tính năng sẵn sàng cho dữ liệu 24/7
  • Khôi phục dữ liệu khỏi lỗi
  • Không có thời gian chết khi xảy ra bảo trì
  • Tăng khả năng đọc dữ liệu
  • Cài đặt bản sao không ảnh hưởng đến ứng dụng

REPILCATION hoạt động như thế nào trong MongoDB

MongoDB sao lưu bản sao bằng cách sử dụng bản sao tập hợp. Một bản sao chính của tập tin hơp là một nhóm các trường hợp

use DATABASE_NAME
89 mà có máy chủ cung cấp tập hợp dữ liệu chung. Tất cả các trường hợp khác, thứ 2 sẽ được áp dụng xử lý từ trường hợp chính cho nên nó sẽ có tập hợp dữ liệu chung. Bản sao chỉ có một nút chính duy nhất

  • Bản sao là một tập hợp 2 hoặc nhiều nút
  • Trong bản sao tập hợp, một nút là nút chính và phần còn lại là nốt thứ 2
  • Tất cả dữ liệu được sao chép từ nút chính sang nút phụ
  • Tại một thời điểm bất kỳ bảo trì tự động nào, sẽ có một "cuộc bầu cử" được thiết lập lại để chọn ra nút chính mới
  • Sau một lần khôi phục một nút bị lỗi, nó sẽ tham gia lại nhóm bản sao và thực hiện công việc như một ghi chú phụ tiếp theo

Định dạng ngày giờ mongodb

MongoDB - Phân mảnh

Sharding là quá trình xử lý lưu bản ghi dữ liệu trên nhiều máy và đây là cách tiếp cận của MongoDB để có thể đáp ứng các yêu cầu về dữ liệu lớn. Khi kích thước của dữ liệu tăng lên, một máy tính đơn lẻ không thể đủ để lưu dữ liệu cũng như cung cấp các xử lý đọc và ghi thông thường. Sharding giải bài toán này bằng cách phóng to theo chiều ngang. Với sharding, bạn có thể sẽ bổ sung thêm máy để hỗ trợ lưu trữ dữ liệu cũng như các yêu cầu về đọc và viết