BSON

BSON
ファイル名拡張子
.bson
インターネットメディアの種類application/bson[ 1 ]
フォーマットの種類データ交換
延長からJSON
Webサイトbsonspec.org

BSON/ ˈ b s ə n / ;バイナリJSON[ 2 ]は、JSONを拡張したコンピュータデータ交換フォーマットです。連想配列(名前と値のペアとも呼ばれる)、整数インデックス配列、一連の基本的なスカラー型を含む、単純または複雑なデータ構造を表すバイナリ形式です。BSONは2009年にMongoDBで開発されました。いくつかのスカラーデータ型はMongoDBにとって特に重要であり、このフォーマットはMongoDBデータベースのデータストレージとネットワーク転送フォーマットの両方として使用されていますが、MongoDBの外部でも独立して使用できます。実装はCC++C#DDelphiErlangGoHaskellJavaJavaScriptJuliaLuaOCamlPerlPHPPythonRubyRustScalaSmalltalkSwiftなど、さまざまな言語で利用可能です。[ 3 ]

データ型と構文

BSONには公開仕様があります。[ 4 ] [ 5 ] 構造の最上位要素はBSONオブジェクト型で、1つ以上の要素を含みます。各要素はフィールド名、型、値で構成されます。フィールド名は文字列です。型には以下が含まれます。

  • Unicode文字列(UTF-8エンコードを使用)
  • 32ビット整数
  • 64ビット整数
  • double(64ビットIEEE 754浮動小数点数、NaN/Infを含む)
  • decimal128(128ビットIEEE 754-2008浮動小数点数、2進整数10進数(BID)バリアント)。小数点以下の桁数に敏感な金融データや、34桁の精度を持つ任意精度の数値のキャリアとして適しており、最大値は約10の6145です。
  • UTC の日時( Unix エポックからのミリ秒数を表す符号付き 64 ビット整数)
  • バイト配列(任意のバイナリデータ用)
  • ブール値(trueおよびfalse)
  • ヌル
  • BSONオブジェクト
  • BSON配列
  • JavaScriptコード
  • MD5バイナリデータ
  • 正規表現Perl互換正規表現(「PCRE」)バージョン8.41、UTF-8対応)[ 6 ]

JSONとの重要な違いは、BSONにはJSONにはない型(例えば、datetime、バイト配列、IEEE 754準拠のfloat型)が含まれており、汎用的な「数値」型ではなく、いくつかの数値型に対して型厳密な処理を提供していることです。これらの追加型をテキスト形式で表現する必要がある場合は、MongoDBの拡張JSON形式[ 7 ]を使用できます。

効率

JSONと比較して、BSONはストレージスペースとスキャン速度の両方において効率性が高く設計されています。BSONドキュメント内の大きな要素には、スキャンを容易にするために長さフィールドがプレフィックスとして付加されます。長さプレフィックスと明示的な配列インデックスのため、BSONはJSONよりも多くのスペースを使用する場合があります。[ 2 ]

次のような文書は{"hello": "world"}次のように保存されます。

\x 16 \x 00 \x 00 \x 00 // ドキュメントの合計サイズ\x 02 // 0x02 = 型 String hello\x 00 // フィールド名\x 06 \x 00 \x 00 \x 00 world\x 00 // フィールド値 (値のサイズ、値、ヌル終端文字) \x 00 // 0x00 = 型 EOO ('オブジェクトの終了')

参照

参考文献

  1. ^ 「ASP.NET Web API 2.1 での BSON サポート - ASP.NET 4.x」。Microsoft Docs。2014年 1 月 20 日。2010年 1 月 12 日閲覧
  2. ^ a b「BSON(バイナリJSON)シリアル化」 。 2021年11月23日閲覧
  3. ^ 「BSON実装プロジェクト」 。 2021年11月24日閲覧
  4. ^ 「BSON(バイナリJSON):仕様」 . bsonspec.org . 2021年11月24日閲覧
  5. ^ 「NoSQLとMongoDBの紹介 | NoSQLとは? | InformIT」www.informit.com . 2018年1月17日閲覧
  6. ^ 「regex – MongoDB正規表現を表現するためのツール — PyMongo 3.6.0ドキュメント」api.mongodb.com2016年5月10日時点のオリジナルからアーカイブ。 2018年1月17日閲覧
  7. ^ 「MongoDB Extended JSONドキュメント」 . docs.mongodb.com . 2020年5月3日閲覧