- [[Logical Clock]]の一種。Centralizedなタイムスタンプサービス - インクリメンタルなタイムスタンプ(クロック値)を提供するサーバー - 単一のサーバーの場合もあれば、レプリケーションされている場合もある - 何らかの[[Consensus algorithm]]でクロック値をレプリケーションする方法が主流 - [[TiDB]]では[[Timestamp Oracle]] を[[Raft]]でレプリケーションしている - [[PolarDB-X]]では、[[Paxos]]を使ってレプリケーションしている - [[Timestamp as a Service]]ではコンセンサスプロトコルを使わない。リーダーレスなアプローチが提案されている。 - [[Percolator]] Transaction Modelでよく使われる ## Correctness - TSOは以下のCorrectnessを提供する (セッション$\sigma$は、時刻$Q_\sigma$に開始し、$A_\sigma$に終了する) $ \forall{\sigma, \tau \in \text{Sessions}}: A_{\sigma} \prec Q_{\tau} \Longrightarrow T(\sigma) < T(\tau) $ ## うれしさ - 一般的な[[Logical Clock|論理クロック]]では、プロセス間でメッセージを伝播することで因果関係を伝えていかないといけないが…TSOであれば、クロックサーバーと通信するだけで一貫したクロック値を得られる。例えばプロセス数が数百個とか数千個だと、ありがたそう - [[Real-time Order]]があると言えそう - [参考?](https://pingcap.co.jp/blog/async-commit-the-accelerator-for-transaction-commit-in-tidb-5-0/) 参考 - [https://tikv.org/deep-dive/distributed-transaction/timestamp-oracle/](https://tikv.org/deep-dive/distributed-transaction/timestamp-oracle/)