最近リリースされた DBOS Transact の PostgreSQL ベースの永続実行アプローチについて、開発者コミュニティで活発な議論が行われています。開発者たちがこの軽量な TypeScript ライブラリを検証する中で、スケーラビリティ、実装の課題、実用的な応用について重要な疑問が浮上しています。
スケーラビリティに関する考察
コミュニティの主な関心は、 PostgreSQL の大量ワークロード処理能力に集中しています。議論によると、 DBOS は大規模なデータベースサーバーで1秒あたり10,000ステップ以上を処理でき、ほとんどのユースケースで十分とされています。この閾値を超えるワークロードに対しては、シャーディングやサービスの分割を実装できますが、これは超大規模運用における PostgreSQL ベースのソリューションの自然な制限を示しています。
Postgres を使用する大きな利点は:1. 外部依存関係がないためアーキテクチャがシンプル 2. 実行状態がすべて Postgres サーバー上のテーブルにあるため、完全なコントロールが可能」
主要な技術的特徴:
- 大規模データベースサーバーで1秒間に10,000以上のステップ処理をサポート
- トランザクション管理機能を内蔵
- 自動ワークフロー復旧機能
- 対応ORM: TypeORM 、 Drizzle 、 Knex 、 Prisma
- JSONシリアライズ可能なステップ引数と戻り値が必要
実装における課題
ワークフローのバージョン管理と分散実行の処理が重要な議論点となっています。システムは各ワークフローに元のコードバージョンをタグ付けし、開始時と同じバージョンでワークフローを完了することを推奨しています。分散セットアップでは、同じ PostgreSQL データベースに接続された複数の DBOS インスタンスが自動的に分散タスクキューを形成し、入力ワークロードを共有します。
データの永続性と復旧
コミュニティは、状態の永続性と復旧メカニズムについて重要な質問を提起しています。 DBOS はデコレータを使用して実行状態を管理し、実行状態、入力、完了したステップ、出力を含むワークフロー情報を PostgreSQL テーブルに保存します。このアプローチにより、クラッシュ後の自動復旧が保証されますが、すべてのステップの引数と戻り値が JSON シリアライズ可能である必要があります。
統合に関する考慮事項
開発者たちは、外部システムとの統合とトランザクション管理について懸念を示しています。 DBOS はデータベース操作に常にトランザクションを使用しますが、サードパーティ API との相互作用には慎重な考慮が必要です。システムは Drizzle 、 Knex 、 Prisma などの一般的な ORM をサポートし、データベース操作パターンの柔軟性を提供しています。
これらの議論から、 DBOS Transact は永続実行に対する魅力的なソリューションを提供していますが、開発者は特にスケールと外部システムとの相互作用に関して、特定のユースケースを慎重に検討する必要があることが明らかになっています。
参考:DBOS Transact: A Lightweight Durable Execution Library Built on Postgres