個人アプリで低コストで使えるSQLサービスないかなぁと
探していたところ、Planet Scaleにいきついたので、試してみました!
結構、使ってる人がいそうだったのと、ChatGPT先生がオススメしてくださったので笑
とりあえず、使ってみるか〜って感じで、本記事はそのメモです。
概要
PlanetScaleは、MySQLと互換性のあるスケーラブルな
クラウドネイティブデータベースプラットフォーム。
特徴:
- スケーラビリティ:
自動シャーディングとリアルタイムでのスケールアップ・ダウンをサポート。 - 分散SQL:
分散アーキテクチャにより高可用性と耐障害性を実現。 - ブランチ:
データベースのバージョン管理機能を提供し、
複数の環境でのテストやデプロイメントを簡単に行える。 - Vitess:
Googleが開発したVitessをベースに構築されており、
大規模なトラフィックに対応。 - セキュリティ:
強固なセキュリティ対策を提供し、データの安全性を保障。
このようにPlanetScaleは、
大規模なWebアプリケーションや
高いパフォーマンスが要求される環境に適した選択肢となる。
PlanetScaleを試してみる
サインアップ
- PlanetScaleのウェブサイトにアクセスする
- 新規アカウントを作成する(Sign up for Free)
個人なので無料でいいでしょう!
Eメールアドレスとパスワードを入れるだけ〜
※Githubでもサインアップできます - 登録したEメールアドレスに確認メールがくるので
Verifyボタンを押すと、Topページへ。登録簡単!
無料利用枠も↓だけあれば十分そう
- 5GBのストレージ
- 10 億行の読み取り/月
- 1,000 万行の書き込み/月
- 1 つの製品版ブランチ
- 1 開発ブランチ
データベースの作成
- 新しいデータベースの作成します。
Create a new databaseを選びましょう - DB名を入れて、Tokyoリージョンにして、
Hobbyプランを選択
※RegionにAWSか、GCPかって出てきていた
裏ではこれらが動いているのだろう - この下でクレジットカード登録して、Create Databaseを押下
※詐欺を防ぐためだそう
Hobbyプランなら料金は発生しないとのこと
なんか言語か、Frameworkを選択するとか出てきたので、
とりあえずGolangを選択(Goでやるつもり)
※右上のボタンで後でやることもできる
その下でDBのパスワードを設定する
自環境からの接続
どうやら、言語やFrameworkを選択しておくと
DBの接続をチュートリアルしてくれるらしい!何と親切!
折角なので、Golangでやってみる
- go get -u github.com/go-sql-driver/mysql
- go get -u github.com/joho/godotenv
- .envファイル作成、接続文字列を転記
- なんとサンプルコードまで提供してくれる!
※コードをここに書いていいか微妙なのでスキップしておきます
→ガイドも充実!普通にサンプルコードありました - ソースコードをコピペして、go run main.goで実行
テーブルを列挙するコードだったが、まだテーブル作成していないので
Databaseを列挙するコードに変更した。無事、DB名が取得できた!
Planet Scale的に
DBのMigrationには以下をオススメとのこと
他に詳細なGolang連携の情報はコチラ
※Gorm使うらしい、人気あるな〜
Go application using GORMを試してみる
Sampleを実行
このURLのGormのSampleも試してみました。
※環境はGithubのCodespaces
CLIやWebConsoleの記載もあったのでついでに試してます。
- 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
- git clone https://github.com/planetscale/golang-example.git
でサンプルをダウンロード - cd golang-example
- cp .env.example .env
- .envに接続文字列を記載
- go run . でWebサーバが立ち上がる
- http://[codespaceのURL]:8080/seedアクセスすると、
マイグレショーンが実施される
Migrations and Seeding of database completeと出ればOK - APIがいくつか用意されているので試す。
“/seed”, “/products”,”/products/{id}”, “/categories”, “/categories/{id}”
例えば、”/products”を実行すると、
きちんとデータがマイグレショーンされていることが確認できる。
PlanetScale CLIを試してみる
- pscale auth loginでログイン
Webブラウザベースでサクッとログインできる
どういう仕組みだ?これ?
WebサイトでPlanetScaleにログイン済みだったからサクッと通ったのかな? - pscale shell <db_name> <branch_name>で接続
- InsertとSelectしてみる。MySqlのうようにクエリ実行できる
PlanetScale Dashboard Consoleを試してみる
- Planet Scaleのサイトに戻り、ブランチを作成
※ProductionではConsoleを開けないと言われたので - Open web consoleをクリック
- INSERTとSelectしてみる
※データは引き継がれない模様。スキーマだけかな。
下記のように上手くレコード作成と取得ができた!
まとめ
本記事では、
PlanetScaleを試す際の基本的な操作方法を説明しました。
記事を書きながら実施したので、1時間くらいかかりましたが、
試す作業だけをやれば30分もあればできそうでした。
これだけ早くDBを使える環境にでき、かつ低コストな
Planet Scaleは素晴らしいサービスだと思います!
これから使ってみて、また追記などもしようと思います。
皆様の参考になれば幸いです!