【どりずるおーあーえむ】

Drizzle ORM とは?

最終更新:
💡 TypeScriptでSQLに近いDB操作を書く

TypeScriptでデータベースのスキーマとクエリを扱うORM。SQLに近いAPIとリレーショナルな問い合わせAPIを備える。実行環境への対応は、データベースに接続するドライバーにも依存する。

📌 このページのポイント
クエリと接続、構造変更の役割 TypeScriptスキーマ・クエリDrizzle ORMSQLを組み立てる接続ドライバー実行環境に対応DB例:usersからデータを取得するスキーマ変更Drizzle Kit:生成・適用ファイルの変更だけではDBへ反映されない
上は問い合わせの流れを示す。橙のドライバーはDBと実行環境に対応するものを選ぶ。下はスキーマ変更の管理。Drizzle Kitのgenerateは変更用SQLを生成し、migrateでDBへ適用する方法がある。
ひよこ ひよこ
DrizzleはSQLをどう書くの?
ペンギン先生 ペンギン先生
SQLに近い構成のAPIがあるよ。たとえばdb.select().from(users)のように、どの表からデータを取るかをTypeScriptのコードで書ける。関連するデータをまとめて取得するリレーショナルなAPIもあるんだ。
ひよこ ひよこ
型安全というのは何を助けてくれる?
ペンギン先生 ペンギン先生
TypeScriptのスキーマ定義をクエリの型に利用できるよ。列や返り値をコードの中で扱いやすくする仕組みなんだ。スキーマの定義と、実際のDBの構造を合わせる作業も必要になるね。
ひよこ ひよこ
Edgeならどの接続でも動く?
ペンギン先生 ペンギン先生
接続に使うドライバーが実行環境に対応している必要があるよ。EdgeではNode.jsのAPIをすべて使えるとは限らない。公式チュートリアルはHTTPやWebSocketなどの対応ドライバーを選ぶ構成を説明していて、Drizzleを使うだけで任意の接続が動くわけではないんだ。
ひよこ ひよこ
スキーマを書き換えたらDBも変わる?
ペンギン先生 ペンギン先生
TypeScriptのファイルを書き換えただけでは、DBに変更が適用されないよ。Drizzle Kitのgenerateで変更用のSQLファイルを作り、migrateで未適用の変更をDBに適用する、という方法があるんだ。
ひよこ ひよこ
必ずその手順を使うの?
ペンギン先生 ペンギン先生
他の方法も選べるよ。既存DBからTypeScriptのスキーマを取り込むpullや、変更を直接反映するDrizzle Kitのpush、外部の移行ツールを使う方法もある。クエリを書くORMと、DB構造の変更を管理する処理を区別すると分かりやすいね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Drizzle ORM」って出てきたら「TypeScriptでスキーマとクエリを扱うORM」と思えばだいたいOK!
📖 おまけ:英語の意味
「Drizzle ORM」 = Drizzleという名前のORM
💬 Drizzleは英語で「霧雨」、ORMはオブジェクトとデータベースの対応付けを扱う仕組みの略だよ。ここではTypeScriptからDBを扱うライブラリ名として使われているんだ。

参考資料

← 用語集にもどる