PlanetScaleのチュートリアル(Hands-On)

## PlanetScaleとは
2021年11月頃から注目されているサーバレスDB。YoutubeのDBで利用されている[Vitess](https://vitess.io/)の開発者が参画し、PlanetScaleを開発。現在、シリーズCのフェーズとなり１億500万ドル(約120億円)を調達し、開発が進んでいる。

![スクリーンショット 2022-05-02 21.44.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/1948829c-898f-efce-c329-ac7113b2dfd1.png)

## 結局何がいいの？？
実際に触ってみた感想。

https://twitter.com/kkfactory0705/status/1521120605957136384

### 1. データ状態をブランチ管理可能
PlanetScaleの最大の目玉機能。データ状態がブランチ管理できる。RDSやFireStore等色々なDBのSaaSは登場していたが、ブランチでver管理できるのは初！！(恐らく)ブランチ管理できると開発で下記メリットが得られる。
・１インスタンスでブランチを複数作成することで、同時テストが可能になる。
・開発→本番へのスキーマ変更、データ移行が容易にできる。
・テストのデータ状態をブランチ管理でき、テストの再現が容易にできる。

### 2. MySQL8.0よりパフォーマンスが高く、ノンブロッキングでスキーマ変更可能
Youtubeで利用されたDB「Vitess」の設計思想を取り入れ、水平スケーリングを可能にさせた。また、ノンブロッキングでマイグレーション可能なため、DBを止めずに本番適用が可能となる。

### ３. 無料枠でも機能が充実。
RDBでは珍しく、１０GBまで無料利用できる。AWSのRDBは安いプランでも月２０００円程かかるので、個人開発で利用したい人には嬉しい特典！！

## Hands-Onスタート
### PlanetScaleのSignUp
公式リファレンスの[QuickStart](https://docs.planetscale.com/tutorials/planetscale-quick-start-guide)に沿って実施していく！！

[PlanetScale](https://techcrunch.com/2021/11/16/planetscale-raises-50m-series-c-as-its-enterprise-database-service-hits-general-availability/)からユーザを作成する。

### DB作成
下記画面のようにぽちぽちしていけばDBは作成できます！！！
今回はTokyoリージョンにkkfactoryというDBを作る。
![スクリーンショット 2022-05-02 21.55.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/c3969335-7fd0-a677-851f-0fecf13e85a8.png)
![スクリーンショット 2022-05-02 21.55.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/d4e012c9-58b7-05a2-a023-3aa9f9e2144c.png)
![スクリーンショット 2022-05-02 21.55.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/f74bb3c3-d013-f00e-9278-96628bd10858.png)
![スクリーンショット 2022-05-02 21.56.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/fd7363c6-f104-6b16-1503-4242cee4a0d1.png)
![スクリーンショット 2022-05-02 21.56.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/cdba586f-2046-0741-f9c1-18f18238b320.png)

### TBL作成、データ挿入
1. Tablesを押す！！(右上にあるアイコン！！)
![スクリーンショット 2022-05-02 22.04.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/fbd44277-3fcd-2317-91c8-433506ccea4e.png)

2. Consoleタブで２種類のTBLを作成する。
![スクリーンショット 2022-05-02 22.07.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/3d0557d3-7ae5-1e09-3a4f-67bf658b91e0.png)

```sql:DDL(categories, products)
CREATE TABLE categories (
  id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name varchar(255) NOT NULL
);

CREATE TABLE products (
  id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name varchar(255) NOT NULL,
  image_url varchar(255),
  category_id INT,
  KEY category_id_idx (category_id)
);
```
3.レコード追加。
![スクリーンショット 2022-05-02 22.12.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/d6c9f0fd-b936-819f-b130-bf8e07d97e77.png)

```sql:Insert
INSERT INTO categories (name)　VALUES  ('Office supplies');

INSERT INTO products (name, image_url, category_id)　VALUES  ('Ballpoint pen', 'https://example.com/500x500', '1');
```

4.TBLデータの確認
![スクリーンショット 2022-05-02 22.14.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/de76e5f8-a2a2-001f-5300-7a473437db75.png)

```sql:SELECT文
SELECT * FROM products;

SELECT * FROM categories;
```

### 番外編(CLIを利用して上記と同じことをやるには？？？)
PlanetScale CLIが提供されています。下記より、ダウンロードしコマンドを実行することでできるようになります！！！

https://github.com/planetscale/cli#installation

```sql:ログインコマンド
pscale auth login
```

```sql:kkfactoryDBのmainブランチにアクセスする。
pscale shell　kkfactory main
```


### 参考
https://techcrunch.com/2021/11/16/planetscale-raises-50m-series-c-as-its-enterprise-database-service-hits-general-availability/