BSONとは何ですか?正確にJSONとはどう違うのですか?


158

私はMongoDBを使い始めたばかりですが、BSONを使用してデータを内部に格納していることに気付きました。ただし、BSONとは何か、MongoDBでBSONがどのように使用されているかについては、ドキュメントが明確ではありません。誰かが私にそれを説明できますか?


こんにちはイヴァン、このリンクを参照してください。JSONとBSONリファレンスの詳細な比較が含まれています:educba.com/json-vs-bson
Nuwa

@Nuwa Ivanは質問をしませんでした、それはAkshat
UuDdLrLrSs

回答:


155

BSONは、MongoDBがドキュメントをコレクションに格納するときに使用するJSONのようなドキュメントのバイナリエンコーディングです。JSONでサポートされていない日付やバイナリなどのデータ型のサポートを追加します。

実際には、MongoDBを操作するときにBSONについて詳しく知る必要はありません。ドキュメントを構築するときに、言語のネイティブタイプとそのドライバーの提供されたタイプ(ObjectIdなど)を使用するだけで、ドキュメントにマップされます。ドライバーによる適切なBSONタイプ。


2
したがって、mongoDbがドキュメントをbsonとして保存する場合、データベースをクエリしたときに返されるタイプは何ですか?それらはjsonとして返されますか?それともbsonはそのまま返されますか?
Akshat Jiwan Sharma 2012

13
いいえ、あなたの言語用のMongoDBドライバーは、ドキュメントをあなたの言語に適したデータ型に変換します。ネイティブデータ型が可能な限り使用されます。
JohnnyHK

2
つまり、JavaScriptを使用してBSONドキュメントからデータを取得した場合、C / C ++を使用して取得した場合とは異なり、データ型に違いはありません。つまり、小数がない場合、数値は整数として扱われますか?
abhisekp 2014年

1
JohnnyHKの説明と私の最近の経験に基づく@abhisekpは、あなたの言ったことは本当だと思います。
nxmohamad 2017年

BSONは列フィールドの正確なデータ型を返しますか?または、すべてのタイプの文字列としてそれを返しますか?
mRhNs13 2018

45
  • BSONは

    BSON [bee・sahn](Binary JSONの略)は、JSONのようなドキュメントをバイナリエンコードしてシリアル化したものです。

  • JSONとどう違うのですか?

    BSONは空間で効率的になるように設計されていますが、場合によってはJSONよりも効率的ではありません。場合によっては、BSONはJSONよりもさらに多くのスペースを使用します。この理由は、BSON設計のもう1つの目標である、通過可能性です。BSONは、文字列やサブオブジェクトの長さなど、いくつかの「追加」情報をドキュメントに追加します。これにより、走査が速くなります。

    BSONは、エンコードとデコードが高速になるようにも設計されています。たとえば、整数は32ビット(または64ビット)の整数として格納されるため、テキストとの間で解析する必要はありません。これは小さな整数の場合、JSONよりも多くのスペースを使用しますが、解析ははるかに高速です。

    コンパクト性に加えて、BSONはJSONで使用できないデータ型、特にBinDataおよびDateデータ型を追加します。

出典:http : //bsonspec.org/


これは、バイナリJSONデータを表すjsonbデータ型と同じで、postgresqlで分解されますか?
PirateApp 2018年

13

MongoDBは、BSONと呼ばれるバイナリエンコード形式でJSON文書を舞台裏で表します。BSONはJSONモデルを拡張して、追加のデータ型を提供し、さまざまな言語でのエンコードおよびデコードを効率的に行います。


12

MongoDBは、JSONドキュメントバイナリエンコード形式で表すため、裏BSONと呼んでいます。

BSONは、JSONモデルを拡張して、JSONでサポートされていない日付やバイナリなどの追加のデータ型を提供します。異なる言語でのエンコードとデコードを効率的に行うために、順序付けされたフィールドも提供します。 

言い換えれば、BSONは単なるバイナリJSON  (いくつかのデータ型を含むJSONのスーパーセット、最も重要なのはバイナリバイト配列)であると言え   ます

JSONのシリアライゼーション形式として使用するMongodbは、ドキュメントの保存とアクセスのためのエンコーディング形式を含みます。単にBSONはJSONデータのバイナリエンコード形式であると言えます。

mongoDB記事の詳細:https ://om9x.com/blog/bson-vs-json/


リンクが壊れている
PlsWork

5

JSON上でBSONエンコーディングを使用することにより、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.