BSON คืออะไรและแตกต่างจาก JSON อย่างไร


158

ฉันเพิ่งเริ่มต้นด้วย MongoDB และสิ่งหนึ่งที่ฉันสังเกตเห็นคือมันใช้BSONเพื่อเก็บข้อมูลภายใน อย่างไรก็ตามเอกสารไม่ชัดเจนว่า BSON คืออะไรและใช้ใน MongoDB อย่างไร มีใครช่วยอธิบายให้ฉันหน่อยได้ไหม


สวัสดีอีวานอ้างอิงไปยังลิงค์นี้มันมีการเปรียบเทียบเชิงลึกระหว่าง JSON และ BSON การอ้างอิง: educba.com/json-vs-bson
Nuwa

@Nuwa Ivan ไม่ได้ถามคำถามนั่นคือ Akshat
UuDdLrLrSs

คำตอบ:


155

BSONเป็นการเข้ารหัสแบบไบนารีของเอกสารที่เหมือนกับ JSON ที่ MongoDB ใช้เมื่อจัดเก็บเอกสารในคอลเลกชัน เพิ่มการรองรับประเภทข้อมูลเช่นวันที่และไบนารีที่ไม่รองรับใน JSON

ในทางปฏิบัติคุณไม่จำเป็นต้องรู้มากเกี่ยวกับ BSON เมื่อทำงานกับ MongoDB คุณเพียงแค่ต้องใช้ภาษาท้องถิ่นของคุณและประเภทที่ให้มา (เช่น ObjectId) ของไดรเวอร์เมื่อสร้างเอกสารและพวกเขาจะถูกแมปเข้าสู่ ประเภท BSON ที่เหมาะสมโดยไดรเวอร์


2
ดังนั้นถ้า mongoDb จัดเก็บเอกสารเป็น bson ประเภทใดที่จะถูกส่งคืนเมื่อเราค้นหาฐานข้อมูลหรือไม่พวกเขากลับมาเป็น json หรือไม่หรือ bson ถูกส่งคืนตามที่เป็นอยู่
Akshat Jiwan Sharma

13
ไม่ไดรเวอร์ MongoDB สำหรับภาษาของคุณดูแลการแปลงเอกสารเป็นประเภทข้อมูลที่เหมาะสมกับภาษาของคุณ ชนิดข้อมูลเนทิฟถูกใช้มากที่สุด
JohnnyHK

2
นั่นหมายความว่าถ้าฉันดึงข้อมูลจากเอกสารBSONโดยใช้Javascriptฉันจะไม่ได้รับความแตกต่างของประเภทข้อมูลใด ๆ ที่ฉันจะได้รับเมื่อฉันดึงข้อมูลโดยใช้C / C ++นั่นคือตัวเลขจะถือว่าเป็นจำนวนเต็มหากไม่มีทศนิยม
abhisekp

1
@abhisekp ตามคำอธิบายของ JohnnyHK และประสบการณ์ล่าสุดของฉันฉันคิดว่าสิ่งที่คุณพูดนั้นเป็นความจริง
nxmohamad

BSON จะส่งคืนชนิดข้อมูลที่แน่นอนของเขตข้อมูลคอลัมน์หรือไม่ หรือจะคืนค่าเป็นสตริงสำหรับทุกประเภทหรือไม่
mRhNs13

45
  • อะไรBSON ?

    BSON [bee · sahn], ย่อมาจาก Binary JSON เป็นเลขลำดับต่อเนื่องที่เข้ารหัสแบบไบนารีของเอกสารที่เหมือนกับ JSON

  • มันแตกต่างจากJSONอย่างไร

    BSON ได้รับการออกแบบให้มีประสิทธิภาพในอวกาศ แต่ในบางกรณีอาจไม่ได้ประสิทธิภาพมากกว่า JSON ในบางกรณี BSON ใช้พื้นที่มากกว่า JSON เหตุผลนี้เป็นอีกหนึ่งเป้าหมายการออกแบบของ BSON นั่นคือการสำรวจเส้นทางได้ BSON เพิ่มข้อมูล "พิเศษ" ลงในเอกสารเช่นความยาวของสตริงและ subobjects ทำให้การสำรวจเส้นทางเร็วขึ้น

    BSON ยังได้รับการออกแบบให้เข้ารหัสและถอดรหัสได้อย่างรวดเร็ว ตัวอย่างเช่นจำนวนเต็มจะถูกเก็บไว้เป็นจำนวนเต็ม 32 บิต (หรือ 64) ดังนั้นพวกเขาจึงไม่จำเป็นต้องแยกวิเคราะห์จากข้อความ สิ่งนี้ใช้พื้นที่มากกว่า JSON สำหรับจำนวนเต็มขนาดเล็ก แต่เร็วกว่าในการแยกวิเคราะห์

    นอกจากความกะทัดรัดแล้ว BSON ยังเพิ่มประเภทข้อมูลเพิ่มเติมที่ไม่สามารถใช้งานได้ใน JSON โดยเฉพาะชนิดข้อมูลBinDataและDate

ที่มา: http://bsonspec.org/


นี่เป็นชนิดเดียวกับชนิดข้อมูล jsonb ซึ่งย่อมาจากข้อมูล JSON แบบไบนารีซึ่งย่อยสลายใน postgresql หรือไม่
PirateApp

13

MongoDB แสดงให้เห็นถึงเอกสาร JSON ในรูปแบบไบนารีเข้ารหัสซึ่งเรียกว่า BSON เบื้องหลัง BSON ขยายรูปแบบ JSON เพื่อให้ประเภทข้อมูลเพิ่มเติมและมีประสิทธิภาพสำหรับการเข้ารหัสและถอดรหัสภายในภาษาต่าง ๆ


12

MongoDB หมายถึงเอกสาร JSONในรูปแบบไบนารีเข้ารหัสเพื่อให้เราเรียกมันว่าBSON เบื้องหลัง

BSON ขยายรุ่น JSON เพื่อให้ประเภทข้อมูลเพิ่มเติมเช่นวันที่และไบนารีซึ่งไม่ได้รับการสนับสนุนใน JSONยังมีฟิลด์ที่สั่งซื้อเพื่อให้มีประสิทธิภาพสำหรับการเข้ารหัสและถอดรหัสภายในภาษาต่าง ๆ 

อีกนัยหนึ่งเราสามารถพูดได้ว่า   BSON นั้นเป็นเพียง JSON แบบไบนารี  (เซ็ตของ JSON ที่มีชนิดข้อมูลเพิ่มเติมบางส่วนซึ่งเป็นอาร์เรย์ไบนารี่ไบนารี่ที่สำคัญที่สุด)

Mongodb ใช้เป็นรูปแบบการทำให้เป็นอันดับของ JSONรวมกับรูปแบบการเข้ารหัสสำหรับการจัดเก็บและการเข้าถึงเอกสารรูปแบบการเข้ารหัสสำหรับการจัดเก็บและการเข้าถึงเอกสารเพียงแค่เราบอกได้ว่า BSON เป็นรูปแบบการเข้ารหัสแบบไบนารีสำหรับข้อมูล JSON

สำหรับบทความ mongoDB เพิ่มเติม: https://om9x.com/blog/bson-vs-json/


ลิงก์ใช้งานไม่ได้
PlsWork

5

โดยใช้การเข้ารหัส BSON ที่ด้านบนของ JSON, MongoDB ได้รับความสามารถในการสร้างดัชนีที่ด้านบนของค่าที่อยู่ภายในเอกสาร JSON ในรูปแบบดิบ สิ่งนี้ช่วยในการรันเคียวรีการวิเคราะห์ที่มีประสิทธิภาพเนื่องจากระบบ NoSQL เป็นที่รู้จักกันว่าไม่มีการสนับสนุนสำหรับดัชนี


1

บทความสั้น ๆ นี้ให้คำอธิบายที่ดีเกี่ยวกับ BSON และ JSON: มันพูดถึงปัญหาบางอย่างกับ JSON ทำไม BSON ถูกประดิษฐ์ขึ้นมาปัญหาอะไรที่แก้ได้เมื่อเทียบกับ JSON และมันมีประโยชน์กับคุณอย่างไร

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

ในกรณีการใช้งานของฉันบทความนั้นบอกฉันว่าการทำให้เป็นอันดับต่อ JSON จะทำงานได้สำหรับฉันและฉันไม่จำเป็นต้องทำให้เป็นอนุกรมกับ BSON

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.