PlanetScale

プラネットスケール

PlanetScale を分かりやすく

PlanetScale は、世界中の開発者が使える分散型データベースプラットフォームです。

わかりやすくいうとデータベースです。

PlanetScale は、クラウドネイティブな設計で、MySQL の代替として使用することができます。スケーラビリティ、信頼性、パフォーマンスに優れたデータベースの構築を簡単に実現することができます。

PlanetScale の特徴

PlanetScale の最大の特徴は、MySQL 互換のインターフェースを持つことです。これにより、既存の MySQL アプリケーションを PlanetScale DB に移行することが容易になります。

PlanetScale には、以下のような特徴があります。

  • MySQL と互換性がある
  • 水平方向にスケーリング可能
  • ACID トランザクションのサポート
  • シャーディングの自動化
  • クラウドベースの運用と監視

PlanetScale の使い方

PlanetScale を使用するには、まずはアカウントを作成し、API キーを取得する必要があります。API キーを取得したら、Node.js で PlanetScale を操作するためのライブラリである planetscale をインストールします。インストールするには、以下のコマンドを実行します。

npm install --save planetscale

次に、PlanetScale DB に接続するためのクライアントを作成します。以下のように、必要な情報を設定して、クライアントを作成します。

import { createClient } from '@planetscale/client'

const client = createClient({
  secret: '<YOUR_API_KEY>',
  organization: '<YOUR_ORGANIZATION>',
  workspace: '<YOUR_WORKSPACE>',
})

上記のコードでは、API キー、組織名、ワークスペース名を指定して、PlanetScale DB に接続するためのクライアントを作成しています。

クライアントを作成したら、PlanetScale DB のデータを取得することができます。以下のように、get メソッドを使用して、データを取得することができます。

const data = await client.query('SELECT * FROM <YOUR_TABLE>')

上記のコードでは、指定したテーブルのデータを取得しています。取得したデータは、data 変数に格納されます。

また、PlanetScale DB にデータを挿入することもできます。以下のように、insert メソッドを使用して、データを挿入することができます。

await client.query('INSERT INTO <YOUR_TABLE> (id, name) VALUES (?, ?)', [1, 'John Doe'])

上記のコードでは、指定したテーブルにデータを挿入しています。

PlanetScale のプラン

PlanetScale を使用するには、PlanetScale のアカウントを作成し、プランを選択します。プランには、無料の Developer プランと有料の Team、Business、Enterprise プランがあります。

次に、PlanetScale コンソールを使用して、データベースを作成し、データを挿入します。PlanetScale は MySQL と互換性があるため、MySQL クライアントを使用してデータベースにアクセスすることができます。

サンプルコード

以下は、Next.js と TypeScript で PlanetScale を使用するサンプルコードです。

import { useState, useEffect } from 'react'
import { createClient } from '@planetscale/client'

const client = createClient({
  database: 'database-name',
  accessKeyId: 'xxxxxxxxxx',
  accessKeySecret: 'xxxxxxxxxx',
})

type Data = {
  id: number
  name: string
}

export default function Example() {
  const [data, setData] = useState<Data[]>([])

  useEffect(() => {
    async function fetchData() {
      const query = `SELECT * FROM table_name`
      const { rows } = await client.query(query)
      setData(rows)
    }
    fetchData()
  }, [])

  return (
    <div>
      {data.map((item) => (
        <div key={item.id}>{item.name}</div>
      ))}
    </div>
  )
}

PlanetScale DB と呼ばれる同社のデータベースは、世界中のユーザーから高い評価を受けています。PlanetScale DB は MySQL 互換のインターフェースを持ち、クラウド上で標準的な SQL を使用してスケーラブルなデータベースを構築することができます。