Vitess: Introduction, New Features and the Vinted User Story

www.youtube.com

関心のあるところだけ抜粋。

Introduction

  • 4 つのキーワード:
    • Keyspace は MySQL のデータベースに相当する。論理的なデータベースを表すので、実際は複数に horizontal sharding された物理データベースで構成される。
    • Shard は Keyspace の subset。Keyspace は複数の Shard で構成できる。1 Shard は 1 primary と 0 ~ n の replica で構成される。
    • VSchema は特定のテーブルをどう horizontal sharding するかを定義する。
    • VIndex は VSchema 内で利用されるもので、MySQL のインデックスに相当する。

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
    • Basic CTE support for SELECTs
    • MySQL syntax extension: VEXPLAIN
    • DELETES with JOIN
  • Performance and Reliability
    • Connection pooling がより効率的になった。以前はまず pool が full になるまで新規接続を確立していたが、新規接続はコストがかかるのでなるべく行わない挙動に変わった。

Upcoming (v20+)

  • More CTE support