Hướng dẫn why does mongodb use bson rather than json check all that apply? - tại sao mongodb sử dụng bson thay vì json kiểm tra tất cả những gì áp dụng?

Hướng dẫn why does mongodb use bson rather than json check all that apply? - tại sao mongodb sử dụng bson thay vì json kiểm tra tất cả những gì áp dụng?

JSON là gì?

JSON, hoặc ký hiệu đối tượng JavaScript, là định dạng trao đổi dữ liệu có thể đọc được của con người, được chỉ định vào đầu những năm 2000. Mặc dù JSON dựa trên một tập hợp con của tiêu chuẩn ngôn ngữ lập trình JavaScript, nhưng nó hoàn toàn độc lập với ngôn ngữ.

Các đối tượng JSON là các thùng chứa kết hợp, trong đó một khóa chuỗi được ánh xạ tới một giá trị (có thể là một số, chuỗi, boolean, mảng, giá trị trống - null hoặc thậm chí là một đối tượng khác). Hầu như bất kỳ ngôn ngữ lập trình nào cũng có một triển khai cho cấu trúc dữ liệu trừu tượng này - các đối tượng trong JavaScript, từ điển trong Python, các bảng băm trong Java và C#, các mảng kết hợp trong C ++, v.v. Các đối tượng của JSON rất dễ dàng cho con người hiểu và cho máy móc phân tích và tạo ra:

{
  "_id": 1,
  "name": { "first" : "John", "last" : "Backus" },
  "contribs": [ "Fortran", "ALGOL", "Backus-Naur Form", "FP" ],
  "awards": [
    {
      "award": "W.W. McDowell Award",
      "year": 1967,
      "by": "IEEE Computer Society"
    }, {
      "award": "Draper Prize",
      "year": 1993,
      "by": "National Academy of Engineering"
    }
  ]
}

Khi JavaScript trở thành ngôn ngữ hàng đầu để phát triển web, JSON bắt đầu có một cuộc sống của riêng mình. Nhờ cả hai người và máy có thể đọc được, và tương đối đơn giản để thực hiện hỗ trợ cho các ngôn ngữ khác, JSON nhanh chóng di chuyển ra ngoài trang web và vào phần mềm ở mọi nơi.

Ngày nay, JSON xuất hiện trong nhiều trường hợp khác nhau:

  • API
  • Tệp cấu hình
  • Thông điệp đăng nhập
  • Lưu trữ cơ sở dữ liệu

Kết nối MongoDB-JSON

MongoDB được thiết kế từ khi thành lập để trở thành một cơ sở dữ liệu tập trung vào việc mang lại trải nghiệm phát triển tuyệt vời. Sự phổ biến của JSON, đã khiến nó trở thành lựa chọn rõ ràng để thể hiện các cấu trúc dữ liệu trong mô hình dữ liệu tài liệu MongoDB.

Tuy nhiên, có một số vấn đề làm cho JSON ít hơn lý tưởng cho việc sử dụng bên trong cơ sở dữ liệu.

  1. JSON chỉ hỗ trợ một số lượng hạn chế của các loại dữ liệu cơ bản. Đáng chú ý nhất, JSON thiếu hỗ trợ cho ngày và dữ liệu nhị phân.

  2. Các đối tượng và thuộc tính của JSON không có độ dài cố định làm cho việc đi ngang chậm hơn.

Để tạo ra MongoDB JSON-First, nhưng vẫn có hiệu suất cao và mục đích chung, BSON đã được phát minh để thu hẹp khoảng cách: một biểu diễn nhị phân để lưu trữ dữ liệu ở định dạng JSON, được tối ưu hóa cho tốc độ, không gian và hiệu quả. Nó không giống nhau từ các định dạng trao đổi nhị phân khác như bộ đệm giao thức, hoặc tiết kiệm, về mặt tiếp cận.

BSON là gì?

BSON là viết tắt của nhóm nhị phân Json, và đó chính xác là những gì nó được phát minh. Cấu trúc nhị phân của BSON, mã hóa thông tin loại và chiều dài, cho phép nó đi qua nhanh hơn nhiều so với JSON.

BSON bổ sung một số loại dữ liệu không phải là Json, như ngày và dữ liệu nhị phân, mà không có MongoDB sẽ thiếu một số hỗ trợ có giá trị.

Sau đây là một số ví dụ đối tượng JSON và các biểu diễn BSON tương ứng của chúng.

{"hello": "world"} →
\x16\x00\x00\x00           // total document size
\x02                       // 0x02 = type String
hello\x00                  // field name
\x06\x00\x00\x00world\x00  // field value
\x00                       // 0x00 = type EOO ('end of object')
 
{"BSON": ["awesome", 5.05, 1986]} →
\x31\x00\x00\x00
 \x04BSON\x00
 \x26\x00\x00\x00
 \x02\x30\x00\x08\x00\x00\x00awesome\x00
 \x01\x31\x00\x33\x33\x33\x33\x33\x33\x14\x40
 \x10\x32\x00\xc2\x07\x00\x00
 \x00
 \x00

Bạn có thể tìm hiểu thêm về ngữ pháp BSON trong đặc tả BSON.

MongoDB có sử dụng BSON hay JSON không?

MongoDB lưu trữ dữ liệu ở định dạng BSON cả bên trong và qua mạng, nhưng điều đó không có nghĩa là bạn có thể nghĩ về MongoDB như một cơ sở dữ liệu JSON. Bất cứ điều gì bạn có thể đại diện trong JSON đều có thể được lưu trữ trong MongoDB, và được lấy lại dễ dàng như trong JSON.

Khi sử dụng trình điều khiển MongoDB cho ngôn ngữ lập trình yêu thích của bạn, bạn làm việc với các cấu trúc dữ liệu gốc cho ngôn ngữ đó. Trình điều khiển sẽ chăm sóc chuyển đổi dữ liệu thành BSON và quay lại khi truy vấn cơ sở dữ liệu.

Không giống như các hệ thống lưu trữ JSON dưới dạng các giá trị được mã hóa theo chuỗi hoặc các đốm màu được mã hóa nhị phân, MongoDB sử dụng BSON để cung cấp các tính năng lập chỉ mục và truy vấn mạnh mẽ trên định dạng dữ liệu phổ biến nhất của Web.

Ví dụ, MongoDB cho phép các nhà phát triển truy vấn và thao tác các đối tượng bằng các khóa cụ thể trong tài liệu JSON/BSON, ngay cả trong các tài liệu lồng nhau, nhiều lớp sâu vào một bản ghi và tạo các chỉ mục hiệu suất cao trên các khóa và giá trị tương tự.

Thứ nhất, các tài liệu BSON có thể chứa các đối tượng ngày hoặc nhị phân không thể đại diện trong JSON thuần túy. Thứ hai, mỗi ngôn ngữ lập trình có ngữ nghĩa đối tượng riêng. Ví dụ, các đối tượng JSON đã đặt hàng các khóa trong khi từ điển Python (cấu trúc dữ liệu gốc gần nhất mà tương tự như các đối tượng JavaScript) không được đặt hàng, trong khi sự khác biệt về các loại dữ liệu số và chuỗi cũng có thể xuất hiện. Thứ ba, BSON hỗ trợ nhiều loại số không có nguồn gốc từ JSON và nhiều ngôn ngữ đại diện cho những loại khác nhau.

Kiểm tra tài liệu trình điều khiển của bạn để đảm bảo bạn hiểu cách truy cập tốt nhất dữ liệu do MongoDB BSON hỗ trợ bằng ngôn ngữ của bạn.

JsonBSON
Mã hóaChuỗi UTF-8Nhị phân
Hỗ trợ dữ liệuChuỗi, boolean, số, mảng, đối tượng, nullChuỗi, boolean, số (số nguyên, float, dài, thập phân128 ...), mảng, null, ngày, bindata
Khả năng đọcCon người và máy mócChỉ máy

JSON và BSON thực sự là anh em họ gần gũi theo thiết kế. BSON được thiết kế như một biểu diễn nhị phân của dữ liệu JSON, với các tiện ích mở rộng cụ thể cho các ứng dụng rộng hơn và được tối ưu hóa để lưu trữ dữ liệu và truyền tải. Giống như JSON, BSON hỗ trợ nhúng các đối tượng và mảng.

Một cách đặc biệt trong đó BSON khác với JSON là hỗ trợ cho một số loại dữ liệu nâng cao hơn. Ví dụ, JSON không phân biệt giữa các số nguyên (là số tròn) và số điểm nổi (có độ chính xác thập phân ở nhiều mức độ khác nhau).

Hầu hết các ngôn ngữ lập trình phía máy chủ đều có các loại số tinh vi hơn (các tiêu chuẩn bao gồm số nguyên, số điểm nổi chính xác thông thường hay còn gọi hoạt động.

Tính linh hoạt của lược đồ và quản trị dữ liệu

Một trong những điểm thu hút lớn cho các nhà phát triển sử dụng cơ sở dữ liệu với các mô hình dữ liệu JSON và BSON là lược đồ động và linh hoạt mà chúng cung cấp khi so sánh với các mô hình dữ liệu dạng bảng cứng nhắc được sử dụng bởi cơ sở dữ liệu quan hệ.

Thứ nhất, các tài liệu MongoDB là đa hình - các trường có thể thay đổi từ tài liệu này sang tài liệu khác trong một bộ sưu tập duy nhất (tương tự như các bảng trong cơ sở dữ liệu quan hệ). Tính linh hoạt này giúp mô hình hóa dữ liệu của bất kỳ cấu trúc nào và điều chỉnh mô hình khi yêu cầu thay đổi.

Thứ hai, không cần phải khai báo cấu trúc của các tài liệu cho cơ sở dữ liệu-tài liệu là tự mô tả. Các nhà phát triển có thể bắt đầu viết mã và các đối tượng tồn tại khi chúng được tạo.

Thứ ba, nếu một trường mới cần được thêm vào một tài liệu, nó có thể được tạo mà không ảnh hưởng đến tất cả các tài liệu khác trong bộ sưu tập mà không cập nhật danh mục hệ thống trung tâm và không sử dụng cơ sở dữ liệu ngoại tuyến. Khi bạn cần thay đổi mô hình dữ liệu, cơ sở dữ liệu tài liệu tiếp tục lưu trữ các đối tượng được cập nhật mà không cần phải thực hiện các hoạt động ALTER TABLE tốn kém - hoặc tệ hơn, phải thiết kế lại lược đồ từ đầu.

Thông qua những lợi thế này, tính linh hoạt của mô hình dữ liệu tài liệu rất phù hợp với nhu cầu của các hoạt động phát triển ứng dụng hiện đại.

Mặc dù lược đồ linh hoạt là một tính năng mạnh mẽ, có những tình huống bạn có thể muốn kiểm soát nhiều hơn đối với cấu trúc dữ liệu và nội dung của tài liệu của bạn. Hầu hết các cơ sở dữ liệu tài liệu đẩy thực thi các điều khiển này trở lại nhà phát triển để thực hiện trong mã ứng dụng. Tuy nhiên, cơ sở dữ liệu tài liệu tiên tiến hơn cung cấp xác thực lược đồ, sử dụng các phương pháp như tiêu chuẩn lược đồ IETF JSON được MongoDB thông qua.

Hãy thử MongoDB Atlas trực tuyến ngay bây giờ!

Tại sao MongoDB sử dụng BSON?

Không giống như các hệ thống lưu trữ JSON dưới dạng các giá trị được mã hóa chuỗi hoặc các đốm màu được mã hóa nhị phân, MongoDB sử dụng BSON để cung cấp các tính năng lập chỉ mục và truy vấn mạnh mẽ trên định dạng dữ liệu phổ biến nhất của web.to offer powerful indexing and querying features on top of the web's most popular data format.

MongoDB có sử dụng BSON không?

BSON là định dạng được sử dụng cả để lưu trữ dữ liệu và truyền mạng trong MongoDB.Sau khi lưu trữ dữ liệu trong MongoDB, bạn có thể muốn lấy lại dữ liệu của mình dưới dạng JSON, trong số nhiều định dạng khác.

BSON là gì trong MongoDB?

MongoDB lưu trữ tài liệu (đối tượng) theo định dạng gọi là BSON.BSON là một bài tuần tự nhị phân của các tài liệu giống JSON.BSON là viết tắt của nhóm nhị phân JSON JSON, nhưng cũng chứa các tiện ích mở rộng cho phép biểu diễn các loại dữ liệu không phải là một phần của JSON.Ví dụ, BSON có kiểu dữ liệu ngày và loại bindata.a binary serialization of JSON-like documents. BSON stands for “Binary JSON”, but also contains extensions that allow representation of data types that are not part of JSON. For example, BSON has a Date data type and BinData type.

Định dạng nào được sử dụng bởi các tài liệu MongoDB?

MongoDB lưu trữ hồ sơ dữ liệu dưới dạng tài liệu BSON.BSON là một đại diện nhị phân của các tài liệu JSON, mặc dù nó chứa nhiều loại dữ liệu hơn JSON.