GORMを使用してTiDBに接続する
TiDB は MySQL 互換データベースであり、GORMGolang用の人気のあるオープンソース ORM フレームワークです。 GORM はAUTO_RANDOMやTiDBをデフォルトのデータベースオプションとしてサポートデータベースオプションとしてサポートなどの TiDB 機能に対応しています。
このチュートリアルでは、TiDBとGORMを使用して以下のタスクを実行する方法を学ぶことができます。
- 環境をセットアップしてください。
- GORMを使用してTiDBに接続します。
- アプリケーションをビルドして実行します。オプションで、基本的な CRUD 操作用のサンプルコードスニペットを見つけることができます。
前提条件
このチュートリアルを完了するには、以下が必要です。
TiDBクラスタをお持ちでない場合は、以下の手順で作成できます。
- (推奨) TiDB Cloud Starterインスタンスを作成する。
- ローカルテスト用のTiDB Self-Managedクラスタをデプロイまたは本番のTiDB Self-Managedクラスタをデプロイ
TiDBに接続するには、サンプルアプリを実行してください。
このセクションでは、サンプルアプリケーションコードを実行してTiDBに接続する方法を説明します。
ステップ1:サンプルアプリのリポジトリをクローンする
サンプルコードリポジトリをクローンするには、ターミナルウィンドウで以下のコマンドを実行してください。
git clone https://github.com/tidb-samples/tidb-golang-gorm-quickstart.git
cd tidb-golang-gorm-quickstart
ステップ2:接続情報を設定する
選択したTiDBのデプロイオプションに応じて、TiDBに接続してください。
My TiDBページに移動し、対象のTiDB Cloud StarterまたはEssentialインスタンスの名前をクリックして、概要ページに移動します。
右上隅のConnectをクリックしてください。接続ダイアログが表示されます。
接続ダイアログの設定がご使用のオペレーティング環境と一致していることを確認してください。
Connection Typeは
Publicに設定されています。Branchは
mainに設定されています。Connect Withは
Generalに設定されています。お使いの環境に合ったOperating Systemを選択してください。
Generate Passwordをクリックすると、ランダムなパスワードが生成されます。
.env.exampleをコピーして.envに名前を変更するには、次のコマンドを実行します。cp .env.example .env対応する接続文字列
.envファイルにコピー&ペーストしてください。例は以下のとおりです。TIDB_HOST='{host}' # e.g. gateway01.ap-northeast-1.prod.aws.tidbcloud.com TIDB_PORT='4000' TIDB_USER='{user}' # e.g. xxxxxx.root TIDB_PASSWORD='{password}' TIDB_DB_NAME='test' USE_SSL='true'必ずプレースホルダー
{}を、接続ダイアログから取得した接続パラメータに置き換えてください。TiDB Cloud Starter は安全な接続を必要とします。そのため、
USE_SSLの値をtrueに設定する必要があります。.envファイルを保存します。
My TiDBページに移動し、対象のTiDB Cloud Premiumインスタンスの名前をクリックして概要ページに移動します。
左側のナビゲーションペインで、 Settings > Networkingをクリックします。
Networkingページで、Public EndpointのEnableをクリックし、次にAdd IP Addressをクリックします。
クライアントのIPアドレスがアクセスリストに追加されていることを確認してください。
左側のナビゲーションペインでOverviewをクリックすると、インスタンスの概要ページに戻ります。
右上隅のConnectをクリックしてください。接続ダイアログが表示されます。
接続ダイアログで、 Connection TypeドロップダウンリストからPublicを選択します。
- 公開エンドポイントがまだ有効化中であることを示すメッセージが表示された場合は、処理が完了するまでお待ちください。
- まだパスワードを設定していない場合は、ダイアログのSet Root Passwordをクリックしてください。
- サーバー証明書を確認する必要がある場合、または接続に失敗して認証局(CA)証明書が必要な場合は、 CA certをクリックしてダウンロードしてください。
- Public接続タイプに加えて、 TiDB Cloud Premium はPrivate Endpoint接続をサポートします。詳細については、 AWS PrivateLink経由でTiDB Cloud Premiumに接続しますを参照してください。
.env.exampleをコピーして.envに名前を変更するには、次のコマンドを実行します。cp .env.example .env対応する接続文字列
.envファイルにコピー&ペーストしてください。例は以下のとおりです。TIDB_HOST='{host}' # e.g. tidb.xxxx.clusters.tidb-cloud.com TIDB_PORT='4000' TIDB_USER='{user}' # e.g. root TIDB_PASSWORD='{password}' TIDB_DB_NAME='test' USE_SSL='false'必ずプレースホルダー
{}を、接続ダイアログから取得した接続パラメータに置き換えてください。.envファイルを保存します。
My TiDBページに移動し、対象のTiDB Cloud Dedicatedクラスタの名前をクリックして概要ページに移動します。
右上隅のConnectをクリックしてください。接続ダイアログが表示されます。
接続ダイアログで、 Connection TypeドロップダウンリストからPublicを選択し、 CA certをクリックしてCA証明書をダウンロードします。
IP アクセス リストを設定していない場合は、最初の接続の前に、 Configure IP Access Listをクリックするか、IP アクセス リストを設定するの手順に従って設定します。
TiDB Cloud Dedicated は、Public接続タイプに加えて、Private EndpointおよびVPC Peering接続タイプもサポートしています。詳細については、 TiDB Cloud Dedicatedクラスタに接続しますを参照してください。
.env.exampleをコピーして.envに名前を変更するには、次のコマンドを実行します。cp .env.example .env対応する接続文字列
.envファイルにコピー&ペーストしてください。例は以下のとおりです。TIDB_HOST='{host}' # e.g. tidb.xxxx.clusters.tidb-cloud.com TIDB_PORT='4000' TIDB_USER='{user}' # e.g. root TIDB_PASSWORD='{password}' TIDB_DB_NAME='test' USE_SSL='false'必ずプレースホルダー
{}を、接続ダイアログから取得した接続パラメータに置き換えてください。.envファイルを保存します。
.env.exampleをコピーして.envに名前を変更するには、次のコマンドを実行します。cp .env.example .env対応する接続文字列
.envファイルにコピー&ペーストしてください。例は以下のとおりです。TIDB_HOST='{host}' TIDB_PORT='4000' TIDB_USER='root' TIDB_PASSWORD='{password}' TIDB_DB_NAME='test' USE_SSL='false'プレースホルダー
{}を接続パラメータに置き換え、USE_SSLfalseに設定してください。TiDB をローカルで実行している場合、デフォルトのホスト アドレスは127.0.0.1で、パスワードは空です。.envファイルを保存します。
ステップ3:コードを実行して結果を確認する
サンプルコードを実行するには、以下のコマンドを実行してください。
makeExpected-Output.txtをチェックして、出力が一致するかどうかを確認してください。
サンプルコードスニペット
以下のサンプルコードスニペットを参考に、独自のアプリケーション開発を完成させてください。
完全なサンプルコードと実行方法については、 tidb-samples/tidb-golang-gorm-quickstartリポジトリを参照してください。
TiDBに接続する
func createDB() *gorm.DB {
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&tls=%s",
${tidb_user}, ${tidb_password}, ${tidb_host}, ${tidb_port}, ${tidb_db_name}, ${use_ssl})
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
})
if err != nil {
panic(err)
}
return db
}
この機能を使用する場合は、 ${tidb_host} 、 ${tidb_port} 、 ${tidb_user} 、 ${tidb_password} 、および${tidb_db_name} TiDBの実際の値に置き換える必要があります。TiDB Cloud Starterはセキュアな接続を必要とします。そのため、 ${use_ssl}の値をtrueに設定する必要があります。
データを挿入する
db.Create(&Player{ID: "id", Coins: 1, Goods: 1})
詳細については、データを挿入するを参照してください。
クエリデータ
var queryPlayer Player
db.Find(&queryPlayer, "id = ?", "id")
詳細については、 クエリデータを参照してください。
データの更新
db.Save(&Player{ID: "id", Coins: 100, Goods: 1})
詳細については、データの更新を参照してください。
データを削除する
db.Delete(&Player{ID: "id"})
詳細については、データを削除するを参照してください。
次のステップ
- GORM の使用法の詳細についてはGORMのドキュメントとGORMのドキュメントにあるTiDBのセクションご覧ください。
- 開発者ガイド の データを挿入する、データの更新、データを削除する、単一表の読み取り、トランザクション、SQLパフォーマンス最適化 などの章を参考に、TiDB アプリケーション開発のベストプラクティスを学びます。
- プロフェッショナルなTiDB開発者向けコースコースを通じて学習し、試験に合格するとTiDB認定資格を取得します。
お困りですか?
- Discordor Slackコミュニティに質問してください。
- TiDB Cloudのサポートチケットを送信してください
- TiDB Self-Managedのサポートチケットを送信してください