データベース PR

クラウド時代のデータベース: PlanetScaleを試してみた!

planet-scale-database
記事内に商品プロモーションを含む場合があります

個人アプリで低コストで使えるSQLサービスないかなぁと
探していたところ、Planet Scaleにいきついたので、試してみました!
結構、使ってる人がいそうだったのと、ChatGPT先生がオススメしてくださったので笑
とりあえず、使ってみるか〜って感じで、本記事はそのメモです。

2024年の4月8日(月)にHobby(無料)プランが廃止されるそうです
なんてこった!経営が苦しいんですかねぇ。
他への移行も検討してようかと思ってます。
機能面は良いので、コストが見合えばそのままにすることもあり得ます〜。
https://planetscale.com/blog/planetscale-forever

概要

PlanetScaleは、MySQLと互換性のあるスケーラブルな
クラウドネイティブデータベースプラットフォーム。

特徴:

  • スケーラビリティ:
    自動シャーディングとリアルタイムでのスケールアップ・ダウンをサポート。
  • 分散SQL:
    分散アーキテクチャにより高可用性と耐障害性を実現。
  • ブランチ:
    データベースのバージョン管理機能を提供し、
    複数の環境でのテストやデプロイメントを簡単に行える。
  • Vitess:
    Googleが開発したVitessをベースに構築されており、
    大規模なトラフィックに対応。
  • セキュリティ:
    強固なセキュリティ対策を提供し、データの安全性を保障。

このようにPlanetScaleは、
大規模なWebアプリケーションや
高いパフォーマンスが要求される環境に適した選択肢となる。

PlanetScaleを試してみる

サインアップ

2024年の4月8日(月)にHobby(無料)プランが廃止されるそうです
Scalerプランもなくなって少し試しづらくなったかもしれません
https://planetscale.com/blog/planetscale-forever

  1. PlanetScaleのウェブサイトにアクセスする
  2. 新規アカウントを作成する(Sign up for Free)
    個人なので無料でいいでしょう!
    Eメールアドレスとパスワードを入れるだけ〜
    ※Githubでもサインアップできます
  3. 登録したEメールアドレスに確認メールがくるので
    Verifyボタンを押すと、Topページへ。登録簡単!

無料利用枠も↓だけあれば十分そう

  • 5GBのストレージ
  • 10 億行の読み取り/月
  • 1,000 万行の書き込み/月
  • 1 つの製品版ブランチ
  • 1 開発ブランチ
planet scale price
planet scale top

データベースの作成

  1. 新しいデータベースの作成します。
    Create a new databaseを選びましょう
  2. DB名を入れて、Tokyoリージョンにして、
    Hobbyプランを選択
    ※RegionにAWSか、GCPかって出てきていた
     裏ではこれらが動いているのだろう
  3. この下でクレジットカード登録して、Create Databaseを押下
    ※詐欺を防ぐためだそう
     Hobbyプランなら料金は発生しないとのこと
create database

なんか言語か、Frameworkを選択するとか出てきたので、
とりあえずGolangを選択(Goでやるつもり)
※右上のボタンで後でやることもできる
その下でDBのパスワードを設定する

select language or framework

自環境からの接続

どうやら、言語やFrameworkを選択しておくと
DBの接続をチュートリアルしてくれるらしい!何と親切!

折角なので、Golangでやってみる

  1. go get -u github.com/go-sql-driver/mysql
  2. go get -u github.com/joho/godotenv
  3. .envファイル作成、接続文字列を転記
  4. なんとサンプルコードまで提供してくれる!
    ※コードをここに書いていいか微妙なのでスキップしておきます
     →ガイドも充実!普通にサンプルコードありました
  5. ソースコードをコピペして、go run main.goで実行
    テーブルを列挙するコードだったが、まだテーブル作成していないので
    Databaseを列挙するコードに変更した。無事、DB名が取得できた!

Planet Scale的に
DBのMigrationには以下をオススメとのこと

他に詳細なGolang連携の情報はコチラ
※Gorm使うらしい、人気あるな〜

Go application using GORMを試してみる

Sampleを実行

このURLのGormのSampleも試してみました。
※環境はGithubのCodespaces
CLIやWebConsoleの記載もあったのでついでに試してます。

  1. Planet ScaleのCLIをインストール
    mysqlも必要なようなので入れる(エラーになった)
     sudo apt update & sudo apt-get install mysql-client
    • wget https://github.com/planetscale/cli/releases/download/v0.176.0/pscale_0.176.0_linux_amd64.deb
    • sudo dpkg -i pscale_0.176.0_linux_amd64.deb
    • pscale –version
  2. git clone https://github.com/planetscale/golang-example.git
    でサンプルをダウンロード
  3. cd golang-example
  4. cp .env.example .env
  5. .envに接続文字列を記載
  6. go run . でWebサーバが立ち上がる
  7. http://[codespaceのURL]:8080/seedアクセスすると、
    マイグレショーンが実施される
    Migrations and Seeding of database completeと出ればOK
  8. APIがいくつか用意されているので試す。
    “/seed”, “/products”,”/products/{id}”, “/categories”, “/categories/{id}”

例えば、”/products”を実行すると、
きちんとデータがマイグレショーンされていることが確認できる。

sample-products

PlanetScale CLIを試してみる

  1. pscale auth loginでログイン
    Webブラウザベースでサクッとログインできる
    どういう仕組みだ?これ?
    WebサイトでPlanetScaleにログイン済みだったからサクッと通ったのかな?
  2. pscale shell <db_name> <branch_name>で接続
  3. InsertとSelectしてみる。MySqlのうようにクエリ実行できる
sample-insert-select

PlanetScale Dashboard Consoleを試してみる

  1. Planet Scaleのサイトに戻り、ブランチを作成
    ※ProductionではConsoleを開けないと言われたので
  2. Open web consoleをクリック
  3. INSERTとSelectしてみる
    ※データは引き継がれない模様。スキーマだけかな。
dev-branch

下記のように上手くレコード作成と取得ができた!

console-insert-select

まとめ

本記事では、
PlanetScaleを試す際の基本的な操作方法を説明しました。
記事を書きながら実施したので、1時間くらいかかりましたが、
試す作業だけをやれば30分もあればできそうでした。
これだけ早くDBを使える環境にでき、かつ低コストな
Planet Scaleは素晴らしいサービスだと思います!
これから使ってみて、また追記などもしようと思います。

皆様の参考になれば幸いです!