TiDB Cloudと Cloudflare ワーカーを統合する

Cloudflare ワーカーは、HTTP リクエストやデータベースへの変更などの特定のイベントに応答してコードを実行できるプラットフォームです。 Cloudflare Workers は使いやすく、カスタム API、サーバーレス関数、マイクロサービスなどのさまざまなアプリケーションの構築に使用できます。これは、低レイテンシのパフォーマンスを必要とするアプリケーションや、迅速に拡張する必要があるアプリケーションに特に役立ちます。

ただし、Cloudflare Workers は直接 TCP 接続を行うことができない V8 エンジン上で実行されるため、Cloudflare Workers からTiDB Cloudに接続するのが難しい場合があります。

幸いなことに、Prisma はデータプロキシをサポートします。これは、Cloudflare Workers を使用して、TCP 接続経由で送信されるデータを処理および操作するのに役立ちます。

このドキュメントでは、 TiDB Cloudおよび Prisma Data Proxy を使用して Cloudflare Workers をデプロイする方法を段階的に説明します。

注記:

ローカルにデプロイされた TiDB を Cloudflare Workers に接続する場合は、Cloudflare トンネルをプロキシとして使用する労働者-情報を試すことができます。ただし、worker-tdb は本番での使用はお勧めできません。

あなたが始める前に

この記事の手順を試す前に、次のものを準備する必要があります。

ステップ 1: Wrangler をセットアップする

ラングラーは公式のCloudflare Worker CLIです。これを使用して、ワーカーを生成、構築、プレビュー、公開できます。

  1. Wrangler を認証するには、wrangler ログインを実行します。

    wrangler login
  2. Wrangler を使用してワーカー プロジェクトを作成します。

    wrangler init prisma-tidb-cloudflare
  3. ターミナルでは、プロジェクトに関連する一連の質問が表示されます。すべての質問に対してデフォルト値を選択します。

ステップ 2: Prisma をセットアップする

  1. プロジェクト ディレクトリを入力します。

    cd prisma-tidb-cloudflare
  2. prisma initコマンドを使用して Prisma をセットアップします。

    npx prisma init

    これにより、 prisma/schema.prismaに Prisma スキーマが作成されます。

  3. prisma/schema.prisma内に、TiDB のテーブルに従ってスキーマを追加します。 TiDB にtable1table2あると仮定すると、次のスキーマを追加できます。

    generator client { provider = "prisma-client-js" } datasource db { provider = "mysql" url = env("DATABASE_URL") } model table1 { id Int @id @default(autoincrement()) name String } model table2 { id Int @id @default(autoincrement()) name String }

    このデータ モデルは、ワーカーからの受信リクエストを保存するために使用されます。

ステップ 3: プロジェクトを GitHub にプッシュする

  1. GitHub ではリポジトリを作成する prisma-tidb-cloudflareと名付けました。

  2. リポジトリを作成したら、プロジェクトを GitHub にプッシュできます。

    git remote add origin https://github.com//prisma-tidb-cloudflare git add . git commit -m "initial commit" git push -u origin main

ステップ 4: プロジェクトを Prisma データ プラットフォームにインポートする

Cloudflare Workers では、TCP サポートがないため、データベースに直接アクセスできません。代わりに、上記のように Prisma Data Proxy を使用できます。

  1. 開始するには、 プリズマ データ プラットフォームにサインインし、 [新しいプロジェクト]をクリックします。

  2. 接続文字列にこのパターンを入力しますmysql://USER:PASSWORD@HOST:PORT/DATABASE?sslaccept=strict 。接続情報はTiDB Cloudコンソールにあります。

  3. TiDB Serverless にはどの IP アドレスからでもアクセスできるため、静的 IP は無効のままにしておきます。

  4. TiDB Cloudクラスターの場所に地理的に近いデータ プロキシ リージョンを選択します。次に、 「プロジェクトの作成」をクリックします。

    Configure project settings

  5. リポジトリに入力し、 「開始」ページで「Prisma スキーマをリンク」をクリックします。

  6. [新しい接続文字列の作成]をクリックすると、 prisma://.で始まる新しい接続文字列が取得されます。この接続文字列をコピーして、後で使用できるように保存します。

    Create new connection string

  7. [スキップしてデータ プラットフォームに進む]をクリックして、データ プラットフォームに移動します。

ステップ 5: 環境でデータ プロキシ接続文字列を設定する

  1. データ プロキシ接続文字列をローカル環境.envファイルに追加します。

    DATABASE_URL=prisma://aws-us-east-1.prisma-data.com/?api_key=•••••••••••••••••"
  2. シークレットを使用してデータ プロキシ接続を Cloudflare Workers に追加します。

    wrangler secret put DATABASE_URL
  3. プロンプトに従って、データ プロキシ接続文字列を入力します。

注記:

Cloudflare Workers ダッシュボードからDATABASE_URLシークレットを編集することもできます。

ステップ 6: Prisma クライアントを生成する

データプロキシを介して接続する Prisma クライアントを生成します。

npx prisma generate --data-proxy

ステップ7: Cloudflare Worker機能を開発する

必要に応じてsrc/index.tsを変更する必要があります。

たとえば、URL 変数を使用してさまざまなテーブルをクエリする場合は、次のコードを使用できます。

import { PrismaClient } from '@prisma/client/edge' const prisma = new PrismaClient() addEventListener('fetch', (event) => { event.respondWith(handleEvent(event)) }) async function handleEvent(event: FetchEvent): Promise<Response> { // Get URL parameters const { request } = event const url = new URL(request.url); const table = url.searchParams.get('table'); let limit = url.searchParams.get('limit'); const limitNumber = limit? parseInt(limit): 100; // Get model let model for (const [key, value] of Object.entries(prisma)) { if (typeof value == 'object' && key == table) { model = value break } } if(!model){ return new Response("Table not defined") } // Get data const result = await model.findMany({ take: limitNumber }) return new Response(JSON.stringify({ result })) }

ステップ8: Cloudflareワーカーに公開する

これで、Cloudflare Workers にデプロイする準備ができました。

プロジェクト ディレクトリで、次のコマンドを実行します。

npx wrangler publish

ステップ9: Cloudflareワーカーを試す

  1. Cloudflareダッシュボードに進み、ワーカーを見つけます。ワーカーの URL は概要ページで確認できます。

  2. テーブル名を含む URL にアクセスします: https://{your-worker-url}/?table={table_name} 。対応する TiDB テーブルから結果を取得します。

プロジェクトを更新する

サーバーレス機能を変更する

サーバーレス機能を変更したい場合は、 src/index.ts更新して再度Cloudflare Workersに公開してください。

新しいテーブルを作成する

新しいテーブルを作成してクエリを実行する場合は、次の手順を実行します。

  1. prisma/schema.prismaで新しいモデルを追加します。

  2. 変更をリポジトリにプッシュします。

    git add prisma git commit -m "add new model" git push
  3. Prisma クライアントを再度生成します。

    npx prisma generate --data-proxy
  4. Cloudflare Workerを再度公開します。

    npx wrangler publish

このページは役に立ちましたか?

Playground
新規
登録なしで TiDB の機能をワンストップでインタラクティブに体験できます。
製品
TiDB Cloud
TiDB
価格
PoC お問い合わせ
エコシステム
TiKV
TiFlash
OSS Insight
© 2024 PingCAP. All Rights Reserved.
Privacy Policy.