この記事は TiDB Advent Calendar 2023の13日目です。
今回、TiDB Advent Calendarの記事を書くにあたってQiitaアカウントを作りました。Qiita初心者ですので温かい目でご覧ください。
はじめに
これまでのTiDB Advent Calendarの記事ですでに紹介されておりますが、TiDBはオープンソースの分散型SQLデータベースです。
関連するcodeはGitHub上で管理されており、公開されています。
また、codeだけでなくIssuesやPRも見れますので、どのような問題が見つかっていたりだとか修正が入るだとかも見ることが出来ます。
6日目の記事で紹介しておりますようにTiDBは複数のコンポーネントがそれぞれの役割を担って分散データベースを構成しています。
基本的には各コンポーネントごとにGitHub Repositoryがあり、メンテナンスが行われています。
この記事では代表的なRepositoryをいくつかピックアップして紹介いたします。
tikv/tikv
TiDB clusterにおいてStorage部分を担うTiKVのrepositoryです。
TiKVは Cloud Native Computing Foundation (CNCF)のGraduated Projectとなるため、RepositoryはPingCAPの管轄を離れて独立しています。
Key Value Storeとしての基本的な構造、Raftアルゴリズムで分散の仕組みをこちらで実装しています。
tikv/pd
PD(Placement Driver)もtikv配下にrepositoryがあります。
PDはTiKVのデータ分散を担保のために用意されているコンポーネントですので、Clusterの中でもPDとTiKVが密接な関係であることがよくわかります。
pingcap/tidb
SQL解析レイヤーを担うTiDBのrepositoryです。
こちらはまだCNCF Graduated Projectではないため、PingCAP organization配下のrepositoryになります。
(以下、紹介するrepositoryは全てPingCAP organizationにあります)
SQLからKey Value StoreへのAPIに変換するため、ここで実行計画やトランザクション、DDLのメカニズムの実装をこちらで行っています。
また、TiDB clusterのバックアップツールであるBR、TiDB Clusterからデータをエクスポートするためのツールのlightningもこの配下のディレクトリで管理しています。
pingcap/tiflow
PingCAPが提供しているデータ移行用のツールであるDMとTiCDCをこちらで実装しています。
pingcap/tiflash
TiDB clusterのOLAP/HTAPを担うTiFlashを実装しています。
TiKVからリアルタイムでデータ同期する仕組みがこちらで実装されています。
pingcap/tiup
Advent Calanderの3日目の記事と4日目の記事の記事で紹介されたtiupはこちらのrepositoryで実装されています。
これまで紹介したTiKVやTiFlashは独立したコンポーネントとしてbuildを行うことが出来るのですが、そういった手順をほぼ過去のものに葬り去ってしまうくらいtiupは優秀ですので、ぜひ上記記事を参考に触っていただきたいです。
Playgroundの仕組みもこちらで実装されています。
pingcap/docs
PingCAPがHPで公開しているマニュアルなどのドキュメントを管理しているrepositoryも公開されています。
各バージョンのリリースノートなどもこちらで管理されています。
pingcap/ossinsight
PingCAPが提供しているOSSInsightについてもrepositoryを見ることができます。
OSSInsightとは何者なのかについてはこちらのPingCAPの記事を参照ください。
最後に
TiDB Cloud serverlessやtiup playgroundなどこれまで簡単にTiDBに触れる方法を紹介していますが、より深く知ることが出来るのもTiDBの魅力の一つだと思います。
この記事では一つ一つのIssueやPRの紹介はしませんでしたが(機会があればするかも!?)、PingCAPがアクティブに機能改善や新機能を提供しようとしていることも見ていただくことが出来ると思います。
ご覧いただきありがとうございました。