@gftdcojp/ksqldb-orm
Version:
ksqldb-orm - Server-Side TypeScript ORM for ksqlDB with enterprise security extensions
140 lines (109 loc) • 4.53 kB
Markdown
# ドキュメント
@gftdcojp/ksqldb-orm の詳細ドキュメント集です。
## 📚 ドキュメント一覧
### 🔗 [高レベルクエリビルダー](./query-builder.md)
**推奨レベル: 初心者〜中級者**
Supabaseライクな直感的なAPIでデータ操作を行う高レベルクライアント
**特徴:**
- メソッドチェーン形式のクエリ構築
- TypeScript型安全性
- 自動エラーハンドリング
- ksqlDBの知識なしでも使用可能
**こんな方におすすめ:**
- ksqlDBが初めての方
- 簡潔なコードを書きたい方
- Supabase/Prismaなどに慣れ親しんだ方
- フロントエンド開発者
### ⚡ [低レベルksqlDBクライアント](./ksqldb-client.md)
**推奨レベル: 中級者〜上級者**
ksqlDBの全機能に直接アクセスできる強力なAPI
**特徴:**
- 生SQL実行(DDL/DML)
- リアルタイムストリーミング
- 複雑な集約とウィンドウ関数
- 最大限のパフォーマンス最適化
**こんな方におすすめ:**
- ksqlDBの経験がある方
- 複雑なストリーム処理が必要な方
- パフォーマンスを重視する方
- バックエンド開発者・データエンジニア
## 🤔 どちらを選ぶべき?
### 高レベルAPI を選ぶべき場合
✅ **はじめてksqlDBを使う**
✅ **シンプルなCRUD操作が中心**
✅ **開発速度を重視する**
✅ **型安全性が重要**
✅ **エラーハンドリングを自動化したい**
```typescript
// 5行でデータ取得
const { data } = await dbClient
.from('users')
.eq('status', 'active')
.limit(10)
.execute();
```
### 低レベルAPI を選ぶべき場合
✅ **ksqlDBの高度な機能が必要**
✅ **リアルタイムストリーミング処理**
✅ **複雑な集約・ウィンドウ関数**
✅ **パフォーマンスの最適化が重要**
✅ **カスタムSQL文を実行したい**
```typescript
// リアルタイム異常検知
executePushQuery(
`SELECT user_id, COUNT(*) as transaction_count
FROM transactions WINDOW TUMBLING (SIZE 5 MINUTES)
GROUP BY user_id HAVING COUNT(*) > 100`,
(data) => triggerAlert(data)
);
```
## 📋 使い分けガイド
| 用途 | 高レベルAPI | 低レベルAPI | 備考 |
|------|:----------:|:----------:|------|
| 基本的なCRUD | ✅ | ✅ | 高レベルが簡単 |
| データ検索・フィルタリング | ✅ | ✅ | 高レベルが直感的 |
| ページネーション | ✅ | ✅ | 高レベルで自動化 |
| リアルタイムストリーミング | ❌ | ✅ | 低レベルのみ |
| 複雑なJOIN操作 | ❌ | ✅ | 低レベルのみ |
| ウィンドウ関数 | ❌ | ✅ | 低レベルのみ |
| 集約関数 | ❌ | ✅ | 低レベルのみ |
| スキーマ作成(DDL) | ❌ | ✅ | 低レベルのみ |
| 型安全性 | ✅ | ⚠️ | 高レベルが自動 |
| エラーハンドリング | ✅ | ⚠️ | 高レベルが自動 |
## 🔄 併用パターン
多くの実際のプロジェクトでは、両方のAPIを用途に応じて使い分けます:
```typescript
// 1. 低レベルAPIでスキーマ作成
await executeDDL(`
CREATE STREAM user_events (...)
WITH (kafka_topic='events', value_format='JSON');
`);
// 2. 低レベルAPIでリアルタイム処理
executePushQuery(
`SELECT * FROM user_events EMIT CHANGES;`,
(data) => processEvent(data)
);
// 3. 高レベルAPIで通常のデータ操作
const { data } = await dbClient
.from('users')
.eq('id', userId)
.single();
```
## 📖 学習パス
### 初心者向け
1. [高レベルクエリビルダー](./query-builder.md) - 基本操作を学ぶ
2. メインドキュメント - 環境設定と基本概念
3. [低レベルksqlDBクライアント](./ksqldb-client.md) - 高度な機能を学ぶ
### 経験者向け
1. [低レベルksqlDBクライアント](./ksqldb-client.md) - すぐに高度な機能を活用
2. [高レベルクエリビルダー](./query-builder.md) - 簡潔な書き方を学ぶ
## 🆘 サポート
### 一般的な質問
- GitHub Issues でお気軽にご質問ください
- コミュニティで情報交換しましょう
### パフォーマンス最適化
- [低レベルAPI](./ksqldb-client.md) の最適化セクションを参照
- 具体的な課題があれば Issue でご相談ください
### 型安全性
- [高レベルAPI](./query-builder.md) の型安全性セクションを参照
- TypeScript型生成機能の活用を検討してください