BSON
表示
拡張子 | .bson |
---|---|
MIMEタイプ | none[1] |
種別 | データ交換 |
派生元 | JSON |
国際標準 | no RFC yet |
ウェブサイト | bsonspec |
BSONは主にMongoDBのデータストレージ及びネットワーク転送フォーマットとして利用されている、データ交換フォーマットである。 単純なデータ構造や連想配列(MongoDBではオブジェクトまたはドキュメントと表す)を示すバイナリ構造であり、 名称はJSON由来であり、「バイナリ型JSON」の略語である[2]。
データ型と構文
[編集]フィールド名、型、値の要素順の構造である、型はstring、integer (32ビットまたは64ビット)、double(64ビットのIEEE 754)、date(UNIX時間の1 E-3 s単位整数)、byte array(バイナリデータ配列)、boolean(trueまたはfalse)、null、BSONオブジェクト、BSON配列、正規表現、JavaScriptコードのいずれかである。
型は名目上JSONの上位集合であるが(例えばJSONは「date」と「byte array」を持たない[3])、例外としてJSONが使用可能な「number」が使用できない。
効率
[編集]JSONに比べて、ストレージ容量及びスキャン速度に効率的な設計である。 大容量のデータのスキャンを容易にするため、データ長部が扱われる。 データのプレフィックス長や配列指数によっては、JSONよりも多くの容量を占めることもある[2]。
例
[編集]例文{"hello":"world"} は以下のように格納される:
Bson:
\x16\x00\x00\x00 // total document size
\x02 // 0x02 = type String
hello\x00 // field name
\x06\x00\x00\x00world\x00 // field value (size of value, value, null terminator)
\x00 // 0x00 = type EOO ('end of object')