SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2023 セッションレポート(AD)

ChatGPTとも連携! 複雑な要件でもこのデータベースだけでOK、人気急上昇中のTiDBとは?

【9-A-2】TiDBとChatGPTを使えばアプリはもっとシンプル化できる

  • このエントリーをはてなブックマークに追加

高頻度で更新され、OLTPとOLAPの両方が求められるときにどうすべきか

 それでは「更新用にRDBをシャーディングして、ETLパイプラインを構築し、DWHに同期」というところを新たな技術を利用することでシンプルにできないかと考える。具体的には、①NewSQLでシャーディング不要とするということと、②HTAPでOLTPとOLAPを1つのデータベースで実現するという2つのアプローチを考えてみる。

①NewSQLでシャーディング不要とする

 NewSQLとは、MySQLのような分散アーキテクチャでスケーラビリティを保ちつつ、分散トランザクションができるような仕組みもあり、シャーディングに頼らずスケーラビリティを獲得できるようになっている。またNewSQLでは有名プロトコルと互換性があるため、MySQLやPostgreSQLのようなスキルを活かすことができる。

 該当するデータベースにはSpanner、TiDB、CockroachDB、YugabyteDBなどがある。

①NewSQLでシャーディング不要とする
①NewSQLでシャーディング不要とする

②HTAPでOLTPとOLAPを1つのデータベースで実現する

 HTAPとは、OLTPとリアルタイムOLAP分析を1つの基盤でできるようにしたもの。OLTPとOLAPを両立させようとする試みはこれまで幾度となくあったものの、現実的には適材適所で使い分けることが多かった。なぜならOLTPは行型(ローベース)、OLAPは列型(カラムベース)でデータ配置や構造が異なるためだ。

 そこでOLTPとOLAPを1つのデータベースで実現しようとしているのがHTAPとなる。目的は同じでも行と列をどう持つのか、その実装方法にはメモリ型とストア型の2種類がある。メモリ型となるのがAlloyDBで、メモリ内に持つので容量に制限が生まれてしまう。データ容量が増えるほど、ストア型が有利となる。ストア型となるTiDBはTiFlashにより大容量のデータのカラム化が可能となる。

 該当するデータベースにはAlloyDB、SingleStore、TiDB、Snowflakeなどがある。

②HTAPでOLTPとOLAPを1つのデータベースで実現する
②HTAPでOLTPとOLAPを1つのデータベースで実現する

 これら①と②の両方とも、該当するのがTiDBだ。NewSQLであり、HTAPでもあるデータベースとなる。

 ではTiDBはどうしてNewSQLとHTAP、更新・参照と分析を両立させることができるのだろうか。林氏によると「TiDBは2つのエンジンを搭載し、あらゆる業務を1つのプラットフォームで実施可能。また全てのコンポーネントがリニアにオンラインスケールアウト・インが可能」となる。

2つを満たしてくれたTiDB
2つを満たしてくれたTiDB

 TiDBのアーキテクチャの大きな特徴はストレージエンジンを2つ持つことができるところだ。更新・参照用(OLTP)のストレージエンジンにTiKVがある。こちらはローベースのストアになっている。また分析用(OLAP)ストレージエンジンにはTiFlashがある。こちらはカラムベースのストアだ。

 アプリケーションからTiDB(データベース)に何らかのリクエストが届くと、クエリ処理コンポーネントが更新処理か分析処理が自動判別し、適切なエンジンに処理を実施させる。そしてTiKVで更新されたデータは、分析用のTiFlashへと同期されるようになっている。こうした仕組みで、これまで両立できなかったことを両立できている。

 当初、PingCAPで開発されたTiKVは、後にCNCF(Cloud Native Computing Foundation)へと寄贈され、今では「Graduated」ステータスになっている。GitHubでは3万2000以上のスターがつくほど人気だ。また林氏は「実はこのTiDBはMySQL互換ということもあり、性能問題を抱えたMySQLの受け皿になっている側面もあります」と話す。

デモで紹介! NewSQLのスケールアウト、HTAPの実行計画

 林氏は2種類のデモを実施した。1つめはNewSQLとしてのデモとして、スケールアウトを実施して見せた。GUIの管理画面を開くと、現在の構成が確認できる。例えばTiDBが何台、TiKVやTiFlashが何台あるという具合だ。もし性能が足りなくなれば、管理画面から必要な台数を増やせばいい。オンラインでスケールアウトが実行できて、とても手軽だ。

 2つめはHTAPデモとして、クエリの実行計画を確認する。サンプルでは、Webサイトでレポートを表示するようになっていて、それが24時間、1週間、1か月と期間を選ぶことができる。対象となるデータは50億ほどあり、比較的処理が重くなるクエリを走らせる。まずは24時間を選んで実行し、explainの画面を見ると「Row」と表示され、ローベースのTiKVで処理しているのが分かる。続いて、レポートの期間を1週間に変更して処理を実行する。SQL文は同じだがデータ量は増えている。画面を見ると「Column」と表示され、オプティマイザーがカラムベースのTiFlashで処理を始めたことが分かる。

 こうしてTiDBではOLTPもOLAPも、オプティマイザーが判断するのでTiDBだけで処理できるようになっている。そのため複数のデータベースを組み合わせて、複雑な構成にすることはない。アプリケーションの構成はとてもシンプルになる。

アーキテクチャはこうなった(After)
アーキテクチャはこうなった(After)

次のページ
フルマネージド型「TiDB Cloud」も利用可能

関連リンク

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2023 セッションレポート連載記事一覧

もっと読む

この記事の著者

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17415 2023/03/17 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング