- HOME >
- Jamstack用語集 >
- PlanetScale
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 を使用してスケーラブルなデータベースを構築することができます。