ORM(オブジェクト関係マッピング)
プログラミング言語のオブジェクトとデータベースのテーブルを対応付け、SQLを書かずにDBを操作できるようにするライブラリ。Prisma・TypeORM・Sequelize等が代表的。
ORM(Object-Relational Mapping)とは?
ORM(Object-Relational Mapping)は、リレーショナルデータベースのテーブルとプログラミング言語のクラス/オブジェクトを対応付ける技術・ライブラリです。SQLを直接書かずに、プログラミング言語のコードでデータベース操作ができます。
SQLとORMの比較
生SQL:
SELECT * FROM users WHERE age > 20 ORDER BY name;
Prisma(ORM):
const users = await prisma.user.findMany({
where: { age: { gt: 20 } },
orderBy: { name: 'asc' }
});
主なORMライブラリ
| ライブラリ | 言語 | 特徴 |
|---|---|---|
| Prisma | TypeScript/Node.js | 型安全・スキーマファースト・人気急上昇 |
| TypeORM | TypeScript/Node.js | デコレーター方式・Java経験者に親しみやすい |
| Sequelize | Node.js | 老舗・豊富な実績 |
| SQLAlchemy | Python | Pythonの標準的ORM |
| Hibernate | Java | エンタープライズJavaの定番 |
| ActiveRecord | Ruby | Rails標準 |
ORMのメリット・デメリット
| メリット | デメリット |
|---|---|
| SQL知識が浅くても開発できる | 複雑なクエリで回り道が必要 |
| DB種類の切り替えが容易 | パフォーマンスが生SQLより劣る場合 |
| マイグレーション管理が容易 | 「N+1問題」に注意が必要 |
まとめ
ORMは開発速度を上げる強力なツールですが、複雑なクエリや高パフォーマンスが必要な場合は生SQLと組み合わせるのが現実的なアプローチです。
関連する用語 (データベース)
全23件を見るACID特性(トランザクション4要件)
データベーストランザクションの信頼性を保証する4つの特性。原子性(Atomicity)・一貫性(Consistency)・独立性(Isolation)・永続性(Durability)の頭文字をとった概念。
データベースマイグレーション
データベースのスキーマ(テーブル構造)変更をバージョン管理し、順序立てて適用する仕組み。Prisma Migrate・Flyway・Liquibaseが代表的なツール。
MongoDB(モンゴDB)
ドキュメント型NoSQLデータベースの代表格。JSONに似たBSON形式でデータを格納し、スキーマレスで柔軟なデータ管理と水平スケーリングを実現する。Node.jsとの親和性が高い。
Redis(リモートディクショナリサーバー)
インメモリ型のキーバリューストア。超高速な読み書きを実現し、キャッシュ・セッション管理・リアルタイム処理に広く使われるOSSデータベース。
PostgreSQL(ポストグレSQL)
オープンソースのリレーショナルデータベース。ACID準拠・豊富な機能・強力なSQL拡張・JSONサポートを持ち、企業向けから個人プロジェクトまで幅広く使われる高信頼性DBMSの代表格。
シャーディング(データベース水平分割)
データを複数のサーバー(シャード)に水平分割して分散させるDBスケーリング手法。1台のサーバーに収まらない大規模データの処理に使われる。モンゴDBやCassandraが得意とする。