Crux
Bitemporal ?
transaction timeとvaild timeの二つを扱うことでconsistencyを維持しながら値のバージョン管理ができるモデル
tx timeは文字通り実際のトランザクションがコミットされた時間
監視やログ取得のために必要
valid timeはユーザが指定できる時間(デフォルトはtx time)で、そのデータが有効な時間的始点
MVCCはあくまでtx timeによるバージョンを意識するけど、それに加えてCruxではvalid timeによるバージョン管理を行ってくれるイメージ
Bitemporalであることの嬉しさの例
ある時点で有効なグラフ構造を抽出できる
過去に値を挿入できる
地理的分散したupstream群からレプリケーションする際、ローカルのtx timeとvalid timeが分かれてないと困る
その他技術的なトランザクション処理の時系列と別に目的に応じた時系列を与えると嬉しい事例に有効
avashe.iconしかし他のGraphDBでもできるだろうし、第一級として扱うメリットがどれだけあるかは知らん
vaild timeも意識したGraph用のindexを作っていて、Datalogで検索できる Crux自体へはHTTPでもクエリ投げられるっぽいけど、公式の言語はClojureっぽい avashe.icon分散システムとしての仕組みをぶん投げていて、k8sなどに乗せてね!ログはお手持ちのkafkaに繋げて!と書いてある辺り時代を感じる
https://www.youtube.com/watch?v=3Stja6YUB94