コンテンツにスキップ
Sutando
Esc
↑↓移動↵開く⌘Jプレビュー

Sutando vs Drizzle:Active Record と SQL ファーストの対決

Sutando と Drizzle は、Node.js の ORM として異なるアプローチを代表しています。Sutando は Active Record パターンで開発速度を重視し、Drizzle は SQL ファーストで最大限の制御を提供します。

Sutando と Drizzle は、Node.js の ORM として異なるアプローチを代表しています。Sutando は Active Record パターンで開発速度を重視し、Drizzle は SQL ファーストで最大限の制御を提供します。

核心的な違い

側面 Sutando Drizzle
パターン Active Record SQL ビルダー
スキーマ モデルクラス スキーマ定義ファイル
クエリ メソッドチェーン SQL ライクな API
リレーション 宣言的メソッド 手動 JOIN
ランタイム ゼロオーバーヘッド ゼロオーバーヘッド
学習曲線 低い(Eloquent ライク) 中程度(SQL 知識が必要)

スキーマ定義

// Sutando: モデルクラスで定義
class User extends Model {
  table = 'users';
  casts = { is_admin: 'boolean' };
  relationPosts() { return this.hasMany(Post, 'user_id'); }
}

// Drizzle: スキーマファイルで定義
import { pgTable, serial, varchar, boolean } from 'drizzle-orm/pg-core';

export const users = pgTable('users', {
  id: serial('id').primaryKey(),
  name: varchar('name').notNull(),
  email: varchar('email').notNull().unique(),
  is_admin: boolean('is_admin').default(false),
});

クエリの比較

基本的なクエリ

// Sutando
const users = await User.query()
  .where('is_admin', true)
  .orderBy('created_at', 'desc')
  .get();

// Drizzle
const result = await db.select()
  .from(users)
  .where(eq(users.is_admin, true))
  .orderBy(desc(users.created_at));

リレーション

// Sutando: ネストされたリレーションを1行で
const users = await User.query()
  .with('posts.comments.author')
  .get();

// Drizzle: 複数の JOIN が必要
const result = await db.select()
  .from(users)
  .leftJoin(posts, eq(users.id, posts.userId))
  .leftJoin(comments, eq(posts.id, comments.postId))
  .leftJoin(authors, eq(comments.authorId, authors.id));

Sutando の利点

1. リレーション管理

Sutando の最大の利点です。Drizzle ではすべてのクエリで明示的な JOIN が必要ですが、Sutando は宣言的なリレーションメソッドで処理します。

2. 組み込みのソフトデリート

// Sutando: deleted_at カラムを追加するだけ
import { Model, compose, SoftDeletes } from 'sutando';

class Post extends compose(Model, SoftDeletes) {
}
await post.delete(); // ソフトデリート
await post.forceDelete(); // 完全削除

Drizzle ではすべてのクエリで手動フィルタリングが必要です。

3. 開発速度

CRUD アプリケーションにおいて、Sutando は大幅に少ないコードで済みます。

Drizzle の利点

1. SQL の完全な制御

複雑なクエリやパフォーマンスが重要な場面で、Drizzle は SQL に近い制御を提供します。

2. エッジ環境でのパフォーマンス

Drizzle は Cloudflare Workers や Vercel Edge などのエッジ環境で非常に軽量に動作します。

3. 型安全性

スキーマから完全な型を生成するため、クエリ結果の型推論が強力です。

どちらを選ぶべきか?

Sutando を選ぶ場合:

  • CRUD 中心のアプリケーション
  • リレーション管理をシンプルにしたい
  • Laravel Eloquent の経験がある
  • 開発速度を重視する

Drizzle を選ぶ場合:

  • SQL の完全な制御が必要
  • エッジ環境でのパフォーマンスが重要
  • 複雑なクエリが多い
  • チームが SQL に精通している

結論

Sutando は開発速度を、Drizzle は制御力を優先します。CRUD アプリなら Sutando、複雑なクエリが中心なら Drizzle が適しています。

Sutando を試す:npm install sutando — ドキュメント

このページは役に立ちましたか?