私はちょうどMongoDBから始めていますが、気づいたことの1つは、内部でデータを保存するために BSON を使用していることです。ただし、BSONとは何か、MongoDBでどのように使用されるかについてのドキュメントは明確ではありません。誰かが私にそれを説明できますか?
BSON は、MongoDBがコレクションにドキュメントを保存するときに使用するJSONのようなドキュメントのバイナリエンコーディングです。 JSONでサポートされていない日付やバイナリなどのデータ型のサポートを追加します。
実際には、MongoDBを使用する場合、BSONについてあまり知る必要はありません。ドキュメントを作成するときに、言語のネイティブタイプとそのドライバーの提供されたタイプ(ObjectIdなど)を使用するだけで、ドライバーによる適切なBSONタイプ。
BSONとは何ですか?
BSON [bee・sahn]は、バイナリJSONの略で、JSONのようなドキュメントのバイナリエンコードされたシリアル化です。
JSONとどう違うのですか?
BSONは空間で効率的になるように設計されていますが、場合によってはJSONほど効率的ではありません。場合によっては、BSONはJSONよりもさらに多くのスペースを使用します。この理由は、BSON設計のもう1つの目標であるトラバーサビリティです。 BSONは、文字列やサブオブジェクトの長さなどの「追加の」情報をドキュメントに追加します。これにより、走査が高速になります。
BSONは、エンコードとデコードが高速になるように設計されています。たとえば、整数は32(または64)ビット整数として格納されるため、テキストとの間で解析する必要はありません。これは、小さな整数に対してJSONよりも多くのスペースを使用しますが、解析ははるかに高速です。
コンパクト性に加えて、BSONはJSONで利用できない追加のデータ型、特にBinDataおよびDateデータ型を追加します。
from http://bsonspec.org/
MongoDBは、舞台裏でBSONと呼ばれるバイナリエンコード形式でJSONドキュメントを表します。 BSONはJSONモデルを拡張して、追加のデータ型を提供し、異なる言語内でのエンコードとデコードを効率的に行います。
MongoDBはJSONドキュメントをbinary-encoded formatで表すため、BSON behind the scenesと呼びます。
BSONはJSONモデルを拡張して、日付やバイナリなどの追加のデータ型でしたがJSONでサポートは順序付きフィールドも提供します。
異なる言語でのエンコードおよびデコードに効率的であることが必要です。
言い換えれば、BSONは単なるバイナリJSON(さらにいくつかのデータ型、最も重要なのはバイナリバイト配列を持つJSONのスーパーセット)と言うことができます。
JSONのシリアル化形式として使用するMongodbを含むドキュメントの保存とアクセスのためのエンコード形式。簡単に言うと、「BSON」は「JSON」データのバイナリエンコード形式です。
より多くのmongoDBの記事について: https://om9x.com/blog/bson-vs-json/
JSONの上でBSONエンコーディングを使用することにより、MongoDBは、JSONドキュメント内に生の形式で存在する値の上にインデックスを作成する機能を取得します。 NoSQLシステムはインデックスをサポートしていないことが知られているため、これは効率的な分析クエリの実行に役立ちます。