MongoDBに関するチョットした話。
MongoDBの基礎となるデータ形式はBSONです。BSONは、しばしば Binary JSON と記述されますが、「唐突に MongoDB の話」で触れたように、バイナリーエンコードされたJSONと捉えるのは正確ではありません。http://api.mongodb.org/python/1.9%2B/api/bson/son.html などでは、Binary SON の略記として扱っているようです。
では、SONとは何か? Serialized Ocument Notation だそうです。Ocumentって言葉が出てきますが、辞書にはない単語です。オブジェクトのようなドキュメントのような、そんなデータがたぶんOcumentなんでしょう。単に書き間違えてるのを直さないだけかも? と疑ったりもしますが、、、??
まーともかく、オキュメントという言葉を使うことにすれば、MongoDBのデータは次のように階層化されます。
- データベースはコレクションの集まりである。
- コレクションはオキュメントの集まりである。
- オキュメントはフィールドの集まりであるが、フィールド(項目またはプロパティ)の出現順序は意味を持つ。
オブジェクト・プロパティの出現順序を考慮する点がJSONとの大きな違いです。PythonのMongoDBドライバでは、ライブラリがdict(辞書)のキーを常にソートすることにより、プログラマはプロパティの出現順序を気にしなくていいようにしています。でも、これはあくまでライブラリの機能であることに注意してください。MongoDB/BSONネイティブでは出現順序にセンシティブです。