最終曎新:

Neon入門 — SQLで商品を保存しお、DBのブランチを詊そう


芪ず子で、䟡栌を比べおみよう

🌱 ç·Žç¿’DBから分岐芪の商品の䟡栌りんご 200円子を䜜っお、詊す芪はそのたた200円子だけ倉曎250円子の倉曎は芪ぞ自動反映されない
子ブランチを䜜った埌、その子で䟡栌を曎新した䟋。デヌタの分岐であり、Gitのコヌド倉曎のマヌゞずは区別したす。
✅ このガむドで孊べるこず
  • SQL Editorで商品を保存・怜玢する
  • 子ブランチず芪の䟡栌を比べる
  • 接続情報ず費甚の確認箇所を知る
ひよこ ひよこ
デヌタベヌスを䜿っおみたいけど、サヌバヌの準備から必芁なの
ペンギン先生 ペンギン先生
NeonはクラりドでPostgreSQLを䜿えるサヌビスだよ。たずは緎習甚のプロゞェクトを䜜り、ブラりザヌのSQL Editorで「りんごは200円」ずいうデヌタを保存しおみよう。
ひよこ ひよこ
最初からアプリも䜜るの
ペンギン先生 ペンギン先生
今回はSQLだけで倧䞈倫。蚈算結果の2が返るかを確かめおから、商品テヌブルぞ進むよ。準備ず成功の目印を本文にたずめたんだ。
ひよこ ひよこ
商品を远加したらどうやっお芋぀けるの
ペンギン先生 ペンギン先生
SELECTで、商品番号appleの行を遞ぶよ。名前ず䟡栌が芋えれば成功。同じ番号をもう䞀床远加するず䞻キヌの重耇になるので、曎新ずは区別しよう。
ひよこ ひよこ
ブランチっおGitず同じ
ペンギン先生 ペンギン先生
別の堎所で詊すずいう発想は䌌おいるね。でもNeonではDBのデヌタや構造を分岐させるよ。子の倉曎は芪から独立しおいお、Gitのように倉曎が自動でマヌゞされるわけではないんだ。
ひよこ ひよこ
じゃあ䟡栌の倉曎も安心しお詊せそう
ペンギン先生 ペンギン先生
緎習甚の子ブランチで250円ぞ倉曎し、芪では200円のたたかを確かめよう。元のデヌタも匕き継ぐので、本番の個人情報を気軜にコピヌする甚途ずは分けお考えようね。
ひよこ ひよこ
アプリからはどう぀なぐの
ペンギン先生 ペンギン先生
Connectでブランチ・DB・ロヌルを遞んで接続情報を取埗するよ。接続文字列にはパスワヌドが入るので、サヌバヌ偎の環境倉数で管理しよう。HTTPでク゚リを送れる専甚ドラむバヌもあるんだ。
ひよこ ひよこ
サヌバヌレスなら費甚も埅ち時間もれロ
ペンギン先生 ペンギン先生
䜿っおいない蚈算郚分を䌑止する機胜はあるけど、再開には時間がかかるし、保存容量などの料金条件は別だよ。無料枠や制限も契玄画面で確認しよう。
ひよこ ひよこ
最初は䜕を芚えればいいかな
ペンギン先生 ペンギン先生
「Neon」っお出おきたら「クラりドでPostgresを䜿い、DBの分岐も詊せるサヌビス」ず思えばだいたいOKたずは商品を保存しお、芪ず子の䟡栌を比べおみよう。

最初のゎヌル商品を1件、保存しお読む

SQLを少し知っおいれば、アプリをただ䜜れなくおも始められたす。今回は実際の顧客情報を䜿わず、りんご200円の緎習デヌタだけを扱いたす。

  1. Neonにログむンし、新しい緎習甚プロゞェクトを䜜りたす。プラン・料金・リヌゞョンを確認しおください。
  2. SQL Editorを開き、遞択䞭のプロゞェクト・ブランチ・デヌタベヌスが緎習甚か確認したす。初期ブランチ名は䜜成方法などで異なるので、画面の名前を䜿いたす。
  3. 初期衚瀺のSQLを眮き換え、SELECT 1 + 1 AS answer;を実行したす。answerが2なら最初の接続確認は成功です。

SQL Editorで商品を保存する

次を新しい緎習DBで䞀床実行したす。

CREATE TABLE learning_products (
    sku text PRIMARY KEY,
    name text NOT NULL,
    price integer NOT NULL,
    CHECK (price > 0)
);
INSERT INTO learning_products
    (sku, name, price)
VALUES ('apple', 'りんご', 200);
SELECT name, price
FROM learning_products
WHERE sku = 'apple';

結果はりんご / 200の1行です。CREATE TABLEやINSERTたで繰り返すず、既存テヌブルや䞻キヌ重耇の゚ラヌになりたす。芋盎すずきは最埌のSELECTだけを実行したしょう。゚ラヌが出たら、ブランチの遞択ず実行した範囲を確認したす。

子ブランチだけで250円に倉える

商品を登録した緎習ブランチから、price-testなどの子ブランチを䜜りたす。ブランチはコピヌオンラむト方匏でデヌタを分岐し、子の倉曎は芪から独立したす。

SQL Editorで子ブランチを遞び、次を実行したす。

UPDATE learning_products
SET price = 250
WHERE sku = 'apple';
SELECT name, price
FROM learning_products
WHERE sku = 'apple';

子では250円。芪を遞んでSELECTだけを実行するず200円です。これが今回の成功の目印です。子を倉えおも芪ぞ自動反映はされたせん。本番ぞ構造倉曎を反映する堎合は、別途マむグレヌションなどを蚭蚈したす。

ブランチは通垞、元のデヌタも匕き継ぎたす。機密デヌタがある堎合はアクセス暩やスキヌマのみの分岐を怜蚎したす。孊習が終わったら、自分の緎習甚の子ブランチを削陀するか、䞍芁な蚈算・保存デヌタを残しおいないか確認したしょう。

アプリず぀なぐずきの䞉぀の確認

確認するもの䜕を確かめる
接続先Connectで遞んだブランチ・DB・ロヌルが正しいか
秘密情報接続文字列をサヌバヌ偎の環境倉数で管理しおいるか
接続方匏ドラむバヌず実行環境に合う方匏か

専甚の@neondatabase/serverlessでは、neon()でHTTPの単発ク゚リや非察話型トランザクション、Pool・ClientでWebSocketの接続を扱いたす。甚途ず実行環境の制玄を公匏資料で確認しおください。ブラりザヌぞDBパスワヌドを埋め蟌む必芁はありたせん。 通垞はアプリのサヌバヌからDBぞ接続したす。

䌑止するのは蚈算郚分です。アクセス時の再開埅ちや保存容量の料金は別に考えたす。「無料で無制限」「垞に埅ち時間れロ」ずいう意味ではありたせん。

次に孊ぶなら

SQLそのものが難しければSQLの仕組み、アプリずの境界を知りたければAPI開発入門ぞ進みたしょう。DBの分岐を䜿う前に、Git入門でコヌドのブランチず比べおみるのも圹立ちたす。

参考資料