BSON là gì và chính xác nó khác với JSON như thế nào?


158

Tôi mới bắt đầu với MongoDB và một trong những điều mà tôi nhận thấy là nó sử dụng BSON để lưu trữ dữ liệu trong nội bộ. Tuy nhiên, tài liệu không chính xác rõ ràng về BSON là gì và cách sử dụng nó trong MongoDB. Ai đó có thể giải thích cho tôi được không?


Xin chào Ivan, Tham khảo liên kết này, nó chứa một so sánh sâu sắc giữa JSON và BSON Tài liệu tham khảo: learnba.com/json-vs-bson
Nuwa

@Nuwa Ivan không đặt câu hỏi, đó là Akshat
UuDdLrLrSs

Câu trả lời:


155

BSON là mã hóa nhị phân của các tài liệu giống như JSON mà MongoDB sử dụng khi lưu trữ tài liệu trong các bộ sưu tập. Nó thêm hỗ trợ cho các loại dữ liệu như Ngày và nhị phân không được hỗ trợ trong JSON.

Trong thực tế, bạn không cần biết nhiều về BSON khi làm việc với MongoDB, bạn chỉ cần sử dụng các loại ngôn ngữ bản địa và các loại được cung cấp (ví dụ ObjectId) của trình điều khiển của nó khi xây dựng tài liệu và chúng sẽ được ánh xạ vào loại BSON thích hợp của người lái xe.


2
Vì vậy, nếu mongoDb lưu trữ các tài liệu dưới dạng bson thì loại nào được trả về khi chúng ta truy vấn cơ sở dữ liệu? Chúng có được trả về dưới dạng json không? Hoặc bson được trả về như vậy?
Akshat Jiwan Sharma

13
Không, trình điều khiển MongoDB cho ngôn ngữ của bạn đảm nhiệm việc chuyển đổi tài liệu thành các loại dữ liệu phù hợp với ngôn ngữ của bạn. Các loại dữ liệu bản địa được sử dụng càng nhiều càng tốt.
JohnnyHK

2
Điều đó có nghĩa là, nếu tôi truy xuất dữ liệu từ tài liệu BSON bằng Javascript , tôi sẽ không nhận được bất kỳ sự khác biệt nào về kiểu dữ liệu như tôi sẽ nhận được khi tôi truy xuất bằng C / C ++, tức là các số sẽ được coi là số nguyên nếu nó không có số thập phân?
abhisekp

1
@abhisekp dựa trên lời giải thích của JohnnyHK và kinh nghiệm gần đây của tôi, tôi nghĩ những gì bạn nói là đúng.
nxmohamad

BSON sẽ trả về kiểu dữ liệu chính xác của trường cột? Hoặc nó trả về dưới dạng Chuỗi cho tất cả các loại?
mRhNs13

45
  • Có gì BSON ?

    BSON [bee · sahn], viết tắt của Binary JSON, là một tuần tự được mã hóa nhị phân của các tài liệu giống như JSON.

  • Nó khác với JSON như thế nào?

    BSON được thiết kế để có hiệu quả trong không gian, nhưng trong một số trường hợp không hiệu quả hơn JSON. Trong một số trường hợp, BSON sử dụng nhiều không gian hơn JSON. Lý do cho điều này là một mục tiêu thiết kế khác của BSON: tính di chuyển. BSON thêm một số thông tin "phụ" vào tài liệu, như độ dài của chuỗi và các tiểu dự án. Điều này làm cho truyền tải nhanh hơn.

    BSON cũng được thiết kế để nhanh chóng mã hóa và giải mã. Ví dụ: số nguyên được lưu dưới dạng số nguyên 32 (hoặc 64) bit, vì vậy chúng không cần phải được phân tích cú pháp đến và từ văn bản. Điều này sử dụng nhiều không gian hơn JSON cho các số nguyên nhỏ, nhưng phân tích cú pháp nhanh hơn nhiều.

    Ngoài tính gọn nhẹ, BSON còn bổ sung các loại dữ liệu bổ sung không có sẵn trong JSON, đáng chú ý là các loại dữ liệu BinDataDate .

Nguồn: http://bsonspec.org/


cái này có giống với kiểu dữ liệu jsonb, viết tắt của dữ liệu JSON nhị phân, được phân tách trong postgresql không?
PirateApp

13

MongoDB đại diện cho các tài liệu JSON ở định dạng được mã hóa nhị phân được gọi là BSON đằng sau hậu trường. BSON mở rộng mô hình JSON để cung cấp các loại dữ liệu bổ sung và có hiệu quả để mã hóa và giải mã trong các ngôn ngữ khác nhau.


12

MongoDB đại diện cho các tài liệu JSONđịnh dạng được mã hóa nhị phân, vì vậy chúng tôi gọi nó là BSON đằng sau hậu trường .

BSON mở rộng mô hình JSON để cung cấp các loại dữ liệu bổ sung như Ngày và nhị phân không được hỗ trợ trong JSON cũng cung cấp các trường theo thứ tự để nó có hiệu quả để mã hóa và giải mã trong các ngôn ngữ khác nhau. 

Nói cách khác, chúng ta có thể nói   BSON chỉ là JSON nhị phân  (siêu bộ JSON với một số loại dữ liệu hơn, quan trọng nhất là mảng byte nhị phân).

Mongodb sử dụng làm định dạng tuần tự hóa của JSON bao gồm định dạng mã hóa để lưu trữ và truy cập tài liệu . đơn giản chúng ta có thể nói BSON là một định dạng được mã hóa nhị phân cho dữ liệu JSON.

để biết thêm bài viết mongoDB: https://om9x.com/blog/bson-vs-json/


liên kết bị hỏng
PlsWork

5

Bằng cách sử dụng mã hóa BSON trên đầu JSON, MongoDB có khả năng tạo các chỉ mục trên đầu các giá trị nằm trong tài liệu JSON ở định dạng thô. Điều này giúp chạy các truy vấn phân tích hiệu quả vì hệ thống NoQuery được biết đến là không có hỗ trợ cho Chỉ mục.


1

Bài viết tương đối ngắn này đưa ra một lời giải thích khá hay về BSON và JSON: Nó nói về một số vấn đề với JSON, tại sao BSON được phát minh, vấn đề nào nó giải quyết được so với JSON và cách nó có thể mang lại lợi ích cho bạn.

https://www.compose.com/articles/from-json-to-bson-and-back/

Trong trường hợp sử dụng của tôi, bài báo đó đã nói với tôi rằng việc tuần tự hóa thành JSON sẽ hoạt động với tôi và tôi không cần phải tuần tự hóa sang BSON

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.