関心のあるところだけ抜粋。
Introduction
- 4 つのキーワード:
- Keyspace は MySQL のデータベースに相当する。論理的なデータベースを表すので、実際は複数に horizontal sharding された物理データベースで構成される。
- [補足] Vertical split (partitioning) する場合は別の Keyspace を立てることになる
- Shard は Keyspace の subset。Keyspace は複数の Shard で構成できる。1 Shard は 1 primary と 0 ~ n の replica で構成される。
- VSchema は特定のテーブルをどう horizontal sharding するかを定義する。
- VIndex は VSchema 内で利用されるもので、MySQL のインデックスに相当する。
- Keyspace は MySQL のデータベースに相当する。論理的なデータベースを表すので、実際は複数に horizontal sharding された物理データベースで構成される。
Vinted User Story
- Vinted は 8000 万ユーザーいる中古ファッションマーケット
- Vitess を導入している。トラフィックは 2.2 Million QPS、38 TB data、5K VStreams
- Why Vitess?
- いくつかあるが、Throttling API はその一つ。バッチで db に負荷のかかる処理をするときに、負荷が上がりすぎたら処理を止めるようなコードが書ける。
- もともとは application 側でシャーディングしていた
- latency overhead は 2ms くらいで優秀という評価
New Features (v18, v19)
- Query Serving
- Performance and Reliability
- Connection pooling がより効率的になった。以前はまず pool が full になるまで新規接続を確立していたが、新規接続はコストがかかるのでなるべく行わない挙動に変わった。
Upcoming (v20+)
- More CTE support