Smalltable、OODB、STM、分散バージョン管理
SmalltableのローカルのSQLiteは、既存のSQLプログラミング手法をそのまま使えてかつDatastoreの特性を生かせるという意味では便利ですが、しかしActionScriptやJavaScriptのオブジェクトをもとにSQL組み立てたりORMしたりするのってそもそも面倒です。なので理想的には、OODBであるObjectStoreのようにクライアント側のオブジェクトをそのままトランザクショナルに永続化して、それを背後でDatastore介して同期したり排他するのがいいのかなぁ〜なんてつらつらつぶやいてたら、私のTLにはマニアックな方々が多くいて反応いただきました。
特に@ashigeruさんからはSTM(Software Transactional Memory)について面白資料をたくさん教えていただき、またSVNや分散バージョン管理との類似性、Log structured storageによる実装といったアイディアもぽんぽんいただきました(@ashigeruさんは打ち手の小槌のような方ですねw)。もったいないのでさっそくまとめました:
12/28追記
皆さんから教えていただいた資料のリンク集:
Neo4j(グラフDB)のロックについて:
- How concurrent is Neo4j, when are locks taken? (via @nsharp_2ch)
- Neo4j - an Embedded, Network Database
STM関連:
- A Qualitative Survey of Modern Software Transactional Memory Systems (via @ashigeru)
- A Flexible Framework for Implementing Software Transactional Memory (via @ashigeru)
- つくってわか(った気にな)るSTM - steps to phantasien (via @ashigeru)
@frsyukiさんがつぶやいてたLSM-Treeっていうのもすごく面白そう(上述のLog structured storageに近い感じ):
- The Log-Structured Merge-Tree (LSM-Tree) (via @frsyuki)
トランザクショナルな分散キャッシュメモリと、Column-orientedでLSM-treeな解析的なデータストアの組み合わせは、なかなかイケてる感。2010年代のデータストアはコレだ…!などと。
12/30追記
Twitter見てたら@ashigeruさんがオブジェクトグラフのDatastore保存についてありがたき預言をつぶやかれていたので、もちろんまとめさせていただきました: