ロゴテキスト ロゴ

    RDBを利用したい人におすすめ!PlanetScaleを使ってみた

    RDBを利用したい人におすすめ!PlanetScaleを使ってみた

    RDBを使ったサービスを作りたい。

    でもAWSやGCPだといくらかかるか分からないし、Herokuは無料だと使わないとDB止まってしまうし。。



    そんな中で手軽にRDBのMySQLを使えるサービスが「PlanetScale です!




    この記事を書く2週間ぐらい前まで私は知らなかったサービスだったのですが、

    Slack,Figma,GitHubなどなど、名だたる企業がPlanetScaleを利用しています!



    まさにノリにノッている企業なんですね。

    YouTubeで最初に開発されたMySQL用のオープンソースのデータベースクラスタリングシステムVitessを提供するPlanetScaleは米国時間6月23日、Insight Partnersが率いるシリーズBのラウンドで3000万ドル(約33億円)を調達したことを発表した。その他にもa16zとSignalFireが参加している。Crunchbaseによると、これで同社の調達総額は5500万ドル(約61億円)になる。


    データベースクラスタリングのPlanetScaleはシンプルで使いやすい開発者体験を実現 | TechCrunch Japan


    RDBにブランチという概念を持ち込んだり次世代感がすごいなぁ、というのが私の最初の印象で

    2022/01/29現在無料で試せるという事もあり使ってみました。




    少し触ってみた感想としては、


    UI/UX共に非常に洗練されていて使いやすく分かりやすい。

    RDBが必要な場面で個人・企業問わず選択肢の1つになる。


    と感じました!



    個人的にすごくおすすめ!仕事で使ってみたいなぁ🙂


    検証した環境

    1 pscale 0.89.0


    PlanetScaleとは

    PlanetScaleのトップページ

    トップページにデカデカと書いてあるように、

    The MySQL-compatible serverless database platform.

    自分でサーバを用意せずにMySQLを利用出来るサービスです。




    これだけであれば昨今のサービスによくあるじゃん、という感じがしますが、

    内部的に利用されているVitess(ヴィテス)というオープンソースがすごい!


    VitessとMySQLは、オープンソースで使えるシステムです。PlanetScaleは、Kubernetesオペレータを提供し、Vitessのデプロイ、モニターおよび管理を行うソフトウェアです。


    元YouTubeのVitessデータベース開発者が手がける高性能Vitess、PlanetScale – TECHBLITZより引用



    名だたる企業が使ってる実績はもちろん

    YouTubeのDBを支えていた技術がVitess、でありその技術を使ったサービスがPlanetScale、といえばその威力が伝わると思います。


    Vitessに関しては以下のページがわかりやすかったです

    Vitess とは?動作確認や機能、特徴などを解説 | OSSサポートのOpenStandia™【NRI】



    料金について

    PlanetScaleの金額

    月のストレージ容量、読み書き数、コネクション数などに応じて無料プランが使えます。


    とりあえずRDBを試したい!という状況であれば十分無料プランでも使えそう

    しかも無料でも噂のブランチを3つまで使えます。



    さらに無料プランの場合クレジットカード登録いりません!

    「何か操作ミスったらお金がかかっちゃうんじゃないか?」という不安は持たなくて済むのはありがたいですね ☺️



    可用性はどうなんだろ?

    と思って調べてみたのですが特に明記されているページが見つかりませんでした。


    ただ、以下のページに高可用性・安全性が高い事が記されていて、

    VitessのPlanetScale


    何より、YouTube・Slackといった超一流サービスを支えているというのが安心して使える証拠かなと感じました。



    無料プランの注意点としては、


    Limit one database per organizationと書かれているので、

    実質無料プランはデータベースが1つしか作れないと考えた方がいいでしょう。



    「まずは試しにDBを作ってみて…」と適当なデータベースを作ると泣きを見る事になりそうなので注意です!




    PlanetScaleを始めてみる

    「Get Started」から始めます。

    GitHubで手軽に登録出来るので私はそちらで登録してみます

    PlanetScaleの新規登録ページ



    認証用メールがGitHubに登録しているメールアドレス宛に届き、

    後はメールに来たリンクを踏めば認証は完了!

    認証用のメールについて


    早速利用出来るようになります!

    認証用のメールについて


    サービスが利用出来るまで登録慣れている人であれば1分もかからず出来ます



    PlanetScaleを使ってみる

    せっかくGUIもCLIも用意されているのでどちらも使ってみます。



    DBのcreateはせっかくなのでGUIから

    GUI上からDBのcreateが出来る

    AWSやGCPのようにリージョンが選択出来ます。

    Asia Pacific Tokyoが選択出来るのは嬉しいですね




    上記で「create database」を実行すると

    作成したDBの利用状況を確認出来る

    作成したデータベースの利用状況を確認出来るダッシュボード画面が表示されます。




    更に最初に作成されるmainブランチを選択すると、タブに「Console」という項目があり、

    web上のconsoleからmysqlのコマンドを叩く事も出来る

    web上でコマンドを実行する事まで可能。


    Beta版とはいえいたれりつくせり感がすごい…!!



    CLIを使ってみる

    pscaleというコマンドが公式から提供されています。

    せっかくなのでこちらも使ってみます。

    公式で提供されているpscaleコマンド



    導入方法は公式を参考に。


    Macの場合Homebrewで簡単に導入出来ます

    $ brew install planetscale/tap/pscale
    # mysqlの操作を行うため mysql-client も
    $ brew install mysql-client
     
    # インストール出来た事の確認
    $ pscale version
    pscale version 0.89.0 (build date: 2022-01-24T18:17:47Z commit: 6405542)


    接続する

    まずCLIから接続出来るように認証を行います

    $ pscale auth login
     
    Confirmation Code: ABCDEFGHI
     
    If something goes wrong, copy and paste this URL into your browser: https://auth.planetscale.com/oauth/device?user_code=ABCDEFGHI

    ブラウザが立ち上がり、Confirmation Codeを入力します。



    が、自分で入力する必要なくブラウザ上で自動入力してくれます!

    ブラウザ上で認証を行う

    新規登録時もそうだった点としてPlanetScaleはUIはもちろんUXも非常に洗練されています!




    DBの操作をする

    DBに接続して操作してみます。

    sample_dbというDBがある前提で書いていきます




    データベースの一覧を確認

    # DBの一覧を確認
    $ pscale db ls
    NAME       CREATED AT   UPDATED AT   NOTES
    ---------- ------------ ------------ -------
    sample_db  2 days ago   2 days ago



    テーブルを作ってみます

    # PlanetScaleで作成したDBに接続する
    $ pscale shell sample_db main
    sample_db/main>
     
    # 試しにテーブルを作成してみる
    sample_db/main> CREATE TABLE `users` (
        ->   `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
        ->   `email` varchar(255) NOT NULL,
        ->   `first_name` varchar(255),
        ->   `last_name` varchar(255)
        -> );
    sample_db/main> show TABLES;
    +---------------------+
    | Tables_in_sample_db |
    +---------------------+
    | users               |
    +---------------------+

    簡単。。🤤

    ここまで非常にスムーズに出来ました。


    アプリケーションからの接続

    ここも考えられています!



    コマンドで特定のDBのブランチに対して

    user名・パスワードの組み合わせを発行する事が出来ます。

    # pscale password create <DATABASE_NAME> <BRANCH_NAME> <PASSWORD_NAME>
    $ pscale password create sample_db main production-password
    Password production-password was successfully created in sample_db/main.
    Please save the values below as they will not be shown again
     
    NAME                  BRANCH   USERNAME       ACCESS HOST URL                          ROLE     ROLE DESCRIPTION   PASSWORD
    --------------------- -------- -------------- ---------------------------------------- -------- ------------------ -------------------------------------------------------
    production-password   main     abcdefg   hogehoge.ap-northeast-2.psdb.cloud   writer   Can Read & Write   pscale_pw_xxxxxxxx


    公式に以下のように書かれているため、

    • host: The value for “ACCESS HOST URL” in the above step
    • port: 3306
    • user: The value for “USERNAME” in the above step
    • password: The value for “PLAIN TEXT” in the above step
    • database: <DATABASE_NAME>

    これらの情報を使うことで接続が出来ます。




    私はDBのGUIクライアントアプリとしてTablePlusを使っていて先ほどの設定の場合以下のようになります

    TablePlusでPlanetScaleに接続する



    接続すると、先ほど作成したusersテーブルも無事見られました!

    接続後にテーブルが存在している事を確認
    プロフィールの背景画像 プロフィール画像
    Yuki Takara
    都内でフリーランスのエンジニアをやってます。フロントとアプリ開発メインに幅広くやってます。