المهارات projection-patterns
📦

projection-patterns

آمن

CQRS プロジェクションとリードモデルの構築

متاح أيضًا من: wshobson

イベントソーシングシステムでのクエリパフォーマンスに苦労していませんか?このスキルでは、イベントストリームから効率的なリードモデルとプロジェクションを構築するための実証済みのパターンを提供します。

يدعم: Claude Codex Code(CC)
🥉 75 برونزي
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "projection-patterns". ユーザーが基本的なプロジェクタテンプレートを要求

النتيجة المتوقعة:

name()、handles()、apply() の抽象メソッドを持つ Python の Projection ベースクラスを提供。チェックポイント管理とバッチ処理を備えた Projector ランナーを含む。データベース操作のための async/await パターンを示す。

استخدام "projection-patterns". ユーザーが注文サマリープロジェクションを必要とする

النتيجة المتوقعة:

OrderCreated、OrderItemAdded、OrderShipped イベントを処理する OrderSummaryProjection クラスを提供。各ハンドラーが特定の列を更新。パラメータ化された SQL クエリとコネクションプーリングを実演。

استخدام "projection-patterns". ユーザーが破損したプロジェクションの再構築を希望

النتيجة المتوقعة:

再構築プロセスを説明:チェックポイントを削除し、オプションでリードモデルテーブルをクリアし、position 0 からプロジェクションを再実行。安全なリプレイのために冪等性の要件を強調。

التدقيق الأمني

آمن
v1 • 2/24/2026

This skill contains documentation and Python code examples for CQRS projection patterns. Static analyzer flagged markdown code blocks as shell commands (false positive). URLs are documentation references, not network calls. No executable code, cryptographic operations, or system access detected. Safe for publication.

2
الملفات التي تم فحصها
538
الأسطر التي تم تحليلها
0
النتائج
1
إجمالي عمليات التدقيق
لا توجد مشكلات أمنية
تم تدقيقه بواسطة: claude

درجة الجودة

38
الهندسة المعمارية
100
قابلية الصيانة
87
المحتوى
50
المجتمع
100
الأمان
100
الامتثال للمواصفات

ماذا يمكنك بناءه

E コマース注文プロジェクション

注文イベントを集約して、リアルタイムステータス更新を含む顧客向けサマリーを作成するリードモデルを構築します。

イベントからの検索インデックス

ドメインイベントと同期して商品カタログを更新し、全文検索を可能にする Elasticsearch プロジェクションを作成します。

分析ダッシュボードデータ

売上合計やユーザーアクティビティなどの日次メトリクスを計算する集約プロジェクションを実装します。

جرّب هذه الموجهات

基本的なプロジェクションセットアップ
注文イベントのリードモデルを構築する必要があります。OrderCreated と OrderUpdated イベントを処理し、チェックポイントを保存し、SQL テーブルを更新する基本的なプロジェクタの作成方法を示してください。
Elasticsearch 統合
商品ドメインイベントを Elasticsearch と同期するプロジェクションを作成してください。ProductCreated、ProductUpdated、ProductDeleted イベントの処理と適切なエラーハンドリングを含めてください。
集約パターン
OrderCompleted イベントから日次売上メトリクスを計算する集約プロジェクションの構築方法を示してください。効率的な更新のための UPSERT ロジックを含めてください。
マルチテーブルトランザクショナルプロジェクション
CustomerOrderPlaced イベントの処理時に複数のテーブルをアトミックに更新するプロジェクションが必要です。トランザクション処理とロールバックのパターンを示してください。

أفضل الممارسات

  • プロジェクションを冪等にする - 副作用なしでイベントを複数回リプレイ可能にする
  • 各イベント後にチェックポイントを保存し、障害後の再開を可能にする
  • 一貫性を維持するためにマルチテーブル更新にはデータベーストランザクションを使用する

تجنب

  • プロジェクションを相互に結合する - 各プロジェクションは独立して分離可能であるべき
  • エラーハンドリングを省略する - 未処理の例外はプロジェクションを停止し、データの遅延を引き起こす
  • イベントを順序通りに処理しない - 常に global_position の順序を尊重する

الأسئلة المتكررة

プロジェクションとリードモデルの違いは何ですか?
プロジェクションはイベントをリードモデルに変換するプロセスです。リードモデルはクエリに最適化された結果のデータ構造(データベーステーブル、キャッシュ、検索インデックス)です。
順序通りに到着しないイベントはどのように処理すればよいですか?
strict な順序を保証するためにイベントストアの global_position を使用してください。先行するイベントが到着する前に届いたイベントは拒否またはバッファリングします。順序を保証するのはメッセージバスではなくイベントストアです。
リードモデルが破損した場合、プロジェクションを再構築できますか?
はい。プロジェクションのチェックポイントを削除し、リードモデルテーブルをクリアしてから、position 0 から再実行します。これにはプロジェクションが冪等であることが必要です。
プロジェクションは同期と非同期のどちらにすべきですか?
スケーラビリティのために非同期処理を使用してください。プロジェクションは通常、書き込みトランザクション内ではなく、イベントストリームから消費するバックグラウンドワーカーとして実行されます。
プロジェクションの障害はどのように処理すればよいですか?
完全なイベントコンテキストとともにエラーをログ記録し、繰り返し発生する障害についてアラートを出し、指数関数的バックオフによるリトライロジックを実装します。有害なイベントのためのデッドレターキューの検討もしてください。
リードモデルにはどのデータベースを使うべきですか?
クエリパターンに基づいて選択してください:リレーショナルクエリには PostgreSQL、全文検索には Elasticsearch、キャッシングには Redis、分析にはカラムナーストア。複数のプロジェクションで異なるデータベースを使用できます。

تفاصيل المطور

بنية الملفات