0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TiDBのチュートリアルをやってみた

Last updated at Posted at 2025-07-08

TiDBとは?

NewSQLの代表的なプロダクトの一つである、オープンソースの分散型SQLデータベースのこと。PingCAPが提供している。
mixi2や、LINE、モンスターハンターワイルズなど様々なサービスで使用されているらしい。

NewSQLとは

RDBMSの信頼性や一貫性と、NoSQLデータベースのスケーラビリティや柔軟性を両立させることを目指したデータベースのこと

分散型SQLデータベースとは

データを複数のノード(サーバー)に保存するデータベースのこと。
柔軟なスケーラビリティ、安定した信頼性、およびOLTPとOLAP混合のクエリ処理の高速化を可能にする。
従来のデータベースはデータの保存と処理を単一ノードサーバーに依存していたらしい。

TiDBの特徴(ざっくり)

水平方向の拡張性

データ量に応じて柔軟にスケールアウトまたはスケールインできる

MySQL互換

既存のMySQLクライアントやドライバーをそのまま利用できる

HTAP(Hybrid Transactional/Analytical Processing)の実現

オンライントランザクション処理(OLTP)データベースとオンライン分析処理(OLAP)データベースの両方を同時に処理するハイブリッドデータベース

  • OLTP: 短く頻繁に発生する読み書き処理(例:ECサイトの注文処理)。TiDBの行指向ストレージエンジンであるTiKVが得意とする
  • OLAP: 大量のデータを集計・分析する処理(例:月次の売上レポート作成)。TiDBの列指向ストレージエンジンであるTiFlashが得意とする

ChatGPT作の比較表

シーン 従来DBだと… 分散型DBなら…
大量のデータ 1台じゃ足りない ノードを増やせばOK
高トラフィック CPUやI/Oが限界 水平スケールで対応
障害対策 単一障害点になる レプリカや自動フェイルオーバーで安心
クラウドネイティブ あまり向いてない 分散前提なので得意

チュートリアルをやってみる

下記サイトから。無料でできる。

データ取得

こんな感じで、データを取得できる。MySQL互換があるので、普通にSQLを書ける。

USE github_sample;
SELECT
  *
FROM
  `github_repos`
ORDER BY
  `stars` DESC
LIMIT
  100;
    

image.png

ベクトル検索機能

SQLでベクトル検索(テキストや画像などのデータを数値ベクトルに変換し、そのベクトル間の類似度に基づいて検索を行う技術)ができる。

USE github_sample;
SELECT *
FROM github_repos
  ORDER BY VEC_COSINE_DISTANCE(embedding, (
  SELECT embedding FROM github_repos WHERE repo_name = 'pingcap/tidb')
)
LIMIT 100;

何をしているか:pingcap/tidb リポジトリと embedding が似ている上位100個のリポジトリを検索している。

VEC_COSINE_DISTANCE(vec1, vec2)

2つのベクトル vec1とvec2 の コサイン類似度 を計算。距離が小さいほど似ている(=類似度が高い)。

チュートリアルは以上で、意外とあっさりだった。

その他ベクトル関数

VEC_L2_DISTANCE(vec1, vec2)

2つのベクトル間のL2距離(ユークリッド距離)を計算します

VEC_NEGATIVE_INNER_PRODUCT(vector1, vector2)

2つのベクトル間の内積の負の値を使用して距離を計算します。


ベクトル検索はTiDBの特徴らしい。

水平スケーリングと分散コンピューティングのために設計されたTiDB Serverlessの堅牢なアーキテクチャは、AIアプリケーションのワークロードを処理するための準備がすでに整っています。TiDBの特徴的なストレージエンジンにベクトルデータ型を革新的に導入し、類似検索インデックスやHNSW (Hierarchical Navigable Small World) のようなアルゴリズムを実装することで、TiDB Serverlessではベクトルデータの効率的な格納、インデックス作成、検索が可能になりました。このアーキテクチャの進化により、テーブルスキャンと計算が最適化され、SQLを通じてベクトルデータと従来のデータ型を直接結合することが可能になりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?