50億をこえるGitHubのイベントデータを分析するOSS InsightというWebサービスによって、OSSツールの安全性など様々なことが分かります。
このスライドはこのサービスの裏側で使われている技術のキモであるデータベース機能のHTAP、Chat2Query(ChatGPTベースのクエリ生成機能)がどのようにアプリケーション開発をシンプル化・高度化できるかを紹介します。
アーカイブ動画: https://youtu.be/mdxD9lxEjOg
TiDBとChatGPTを使えばアプリはもっとシンプル化できるPingCAP株式会社Japan CTO 林正記(Hayashi Masaki)
View Slide
PingCAPの自己紹介 - NewSQLデータベース TiDBを継続的に開発 - 2015年設立後、TiDBを開発し毎年メジャーアップデートを実施 - CNCFに寄贈し、現在Graduatedステータス - フルマネージド型DBサービス「TiDB Cloud」の展開も強化中 - ワールドワイドでビジネス展開 - 2021年4月に日本支社設立 - MySQL開発MgrのSanny Bains等も入社 - 元日本マイクロソフト社長 平野拓也がアドバイザーとして参画 Sunny Bains ex. InnoDB R&D Mgr 平野 拓也氏 ex. 日本マイクロソフト社長
OSSの活発度が知りたい?OSS insight! GitHub上のイベント情報をうまく使えばグラフィカルに表示すればプロジェクトを理解できるhttps://ossinsight.ioGitHubデータ・アーカイブデータ- GHarchive(1時間ごとに更新)- 46億レコード(現在は50億レコード)・リアルタイムデータ- GitHubイベントAPI- 平均30万レコード/時間
OSS insightの検討事項 1.現在の状況に対するグラフ化- 大量のデータ- (リアルタイムデータに対して)集計含め様々な種類のクエリが来る2.カスタマイズ 標準UIで用意していない可視化対応
データストアの選択 1つのDBで全てをかなえることは難しいRDB(OLTP)RDB(OLAP)NoSQL Hadoop+色々①スケーラビリティ △ △ 〇 〇②複雑な分析クエリ △ 〇 x 〇~△③更新がまあまあある 〇 △ 〇 〇~△
現実解?の構築は結構難しい 更新用にRDBをシャーディングして、ETLパイプラインを構築し、DWHに同期シャーディングしてスケーラビリティ担保Kafka経由でデータを流して、分析クエリに対応よく使うクエリはクエリキャッシュ 勉強することいっぱい…
シンプル化できる? 更新用にRDBをシャーディングして、ETLパイプラインを構築し、DWHに同期①NewSQLでシャーディング不要に- Spanner- TiDB- CockroachDB- YugabyteDB②HTAPでOLTP,OLAPを1つのDBで実現- AlloyDB- SingleStore- TiDB- Snowflake
①NewSQLでシャーディング不要に RDB(ex. MySQL)NoSQL(ex. Cassandra)New SQL(ex. TiDB)CAPの考え方 CA AP CP+HAクエリ SQL API, SQL(CQL) SQL - トランザクション 〇 X 〇 - JOIN 〇 X 〇Readスケーラビリティ〇リードレプリカテーブル再設計◎分散アーキテクチャ◎分散アーキテクチャテーブル再設計不要Writeスケーラビリティ△Writerは単一ボトルネック(要シャーディング)◎分散アーキテクチャ◎分散アーキテクチャ(大きい1テーブル対応可)- NewSQL = 分散アーキテクチャによるスケーラビリティ+ACIDトランザクション ⇒シャーディングに頼らないRDB+スケーラビリティの直接的回答 - 有名プロトコルを互換しているので、RDBのスキルセットを活かせる
②HTAPでOLTP,OLAPを1つのDBで実現 HTAP = OLTP + リアルタイムOLAP分析を1つの基盤でHTAP的なメッセージがマーケットでも増えてきた
②HTAPでOLTP,OLAPを1つのDBで実現 HTAPの実装は、メモリ型・ストア型色々あるTiDB AlloyDBプロトコル MySQL PostgreSQLScalability Read, Write (NewSQL) Readマルチクラウド AWS, GCP(, On-Premise) GCPHTAP実装 ストア(TiFlashにより大容量のカラム化が可能)メモリ内MPP ◎ -データ容量が増えるほどストア型が有利(+ MPPも重要)
シンプル化できる?(再掲) 更新用にRDBをシャーディングして、ETLパイプラインを構築し、DWHに同期①NewSQLでシャーディング不要に- Spanner- TiDB- cockroachDB- YugabyteDB②HTAPでOLTP,OLAPを1つのDBで実現- AlloyDB- SingleStore- TiDB- SnowflakeRDB(OLTP)RDB(OLAP)NoSQL Hadoop+色々NewSQL NewSQL&HTAP①スケーラビリティ △ △ 〇 〇 〇 〇②複雑な分析クエリ △ 〇 x 〇~△ △ 〇③更新がまあまあある 〇 △ 〇 〇~△ 〇 〇
2つを満たしてくれたTiDB NewSQL TiDBは、更新・参照業務と分析業務を1アーキテクチャで実現。TiDBは通常のDBと異なり、2つのエンジンを搭載し、あらゆる業務を1つのプラットフォームで実施可能。また、全てのコンポーネントがリニアにオンラインスケールアウト/インが可能アプリケーションTiKVTiKVTiKVTiKVTiFlash TiFlashTiFlash TiFlash更新・参照用ストレージエンジン…TiKVTiKVTiKVTiKVTiFlash TiFlash PDPD PDTiFlash TiFlash更新、参照分析用ストレージエンジンデータ同期分析処理…全体管理TiDB TiDB … TiDB・更新処理か分析処理かをTiDBで自動判別・適切なエンジンで処理を実施クエリ処理コンポーネントRow-Base Store Column-Base Store
TiDB???
フルマネージド(TiDB Cloud)を活用 ソフトウェアの運用ナレッジは不要。更にMySQLのスキルセットを活かせるのがうれしい- お客様専用のVPC、Compute - デフォルトでマルチAZ構成 - 障害・メンテナンス対応は全てPingCAPが実施 - VPC Peering, Private Link, Public IP経由で接続 - 専用WebコンソールやAPIで操作
TiDB Cloud 無償トライアルhttps://tidbcloud.com/signupServerless TierではTiDB Cloudを現在無償でご利用頂けます。
NewSQLデモ:スケールアウト(&MySQL互換) NewSQL TiDBは、更新・参照業務と分析業務を1アーキテクチャで実現。TiDBは通常のDBと異なり、2つのエンジンを搭載し、あらゆる業務を1つのプラットフォームで実施可能。また、全てのコンポーネントがリニアにオンラインスケールアウト/インが可能アプリケーションTiKVTiKVTiKVTiKVTiFlash TiFlashTiFlash TiFlash更新・参照用ストレージエンジン…TiKVTiKVTiKVTiKVTiFlash TiFlash PDPD PDTiFlash TiFlash更新、参照分析用ストレージエンジンデータ同期分析処理…全体管理TiDB TiDB … TiDB・更新処理か分析処理かをTiDBで自動判別・適切なエンジンで処理を実施クエリ処理コンポーネントRow-Base Store Column-Base Store
HTAPデモ:クエリの実行計画を見てみる
アーキテクチャはこうなった(Before) 更新用にRDBをシャーディングして、ETLパイプラインを構築し、DWHに同期シャーディングしてスケーラビリティ担保Kafka経由でデータを流して、分析クエリに対応よく使うクエリはクエリキャッシュ
アーキテクチャはこうなった(After) 全てTiDBに任せるOLTP, OLAPは全てTiDBで処理
AIを活用したクエリ生成機能 TiDBにChatGPTを統合し、クエリ生成機能(Chat2Query)を実現データ活用の民主化を加速- 自然言語を入れるだけで、非エンジニアでも有効なクエリを作成可能 - 複雑なクエリでもTiDBなら高速に処理
クエリ生成デモ:クエリ生成を体感する 実際のデータからクエリが作成されることを確認する
まとめ・TiDB (NewSQL & HTAP)が持つ1システムでの多機能化によって、今まで複数のシステムを活用して実現していたサービスも1つのDBでできるようになり、全体の運用コスト(+学習コスト)も抑えられる ・もう大容量・高性能・分析みたいな要件は怖くない。 ・AIによるクエリ生成機能を使えば、ユーザーのカスタマイズ性を上げるサービスを作れる
アンケートご協力へのお願いDevelopers Summit 2023PingCAP/TiDBのロゴ入りノベルティを抽選で100名様にプレゼント!回答期限は2/10(金)17:00まで。サーモステンレスマグ 380ml テキスタイルモバイルアクセサリーケース(L)Tシャツ#devsumi2023TiDB
Thank You!https://www.pingcap.com/[email protected]