2012-01-04
POJOをBSON形式でシリアライズする
久々に更新。これまでBSONを操作する為に調べた事項のまとめ。
個人的には簡潔さでebsonを推したい。ByteBufferで動的にcapacityを変更できれば良いのだけれども。探してみたところ、以下のようなものはある。
https://github.com/sardine/mina-ja/wiki/IoBuffer
ただ、ByteBufferについては、bufferなのだから固定でしょ、という意見が多数。
FileStoredMap
monganezで、primitive typeをencodeしようとすると、POJOのようにencodeされてしまう件の対応。primitive typeを扱えるようにした、というよりも、primitive typeであれば何も変換せず指定された値を返すだけの実装を追加。
BSONでシリアライズ/デシリアライズできるようになり、get/putは動くようになった。但し既に登録済みのkeyに対して新しい値をバインドするところが未実装。removeを先に実装するつもり。
インデックス空間の取り方が非常に大雑把なので、インデックスファイルはhashによるmappingではなくB+Treeで作り直す必要があるなぁ。
Cuckoo Hashing
ハッシュ衝突時の振る舞いについて。FileStoredMapはチェイン法(つまり衝突したらそこからはO(n))。このCuckoo Hashingは実装が簡単なので、時間があれば試してみたい。コメントを読むと、Ioで使われているらしい。
書籍とKindle
先日「ビジネス書は買わない」と記載した翌日に2冊購入。心惹かれるタイトルだったのでつい…。
Kindle4の値段をチェックしたところ、大体1万くらいだった。案外安い。