daily reflection

毎日の振り返り

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万くらいだった。案外安い。