並行クエリフレームワーク
nine は、並行にクエリ呼び出しを行うフレームワークが提供されている。
フレームワークに主要なクラスは 6つあり、抽象ベースクラスが 3つで、残り 3つが具象クラスである。
- Resource
- スレッドが占有する何がしかの資源を表す抽象ベースクラス。
- ResourceWork
- Resource に対して処理を行うワーククラス。並行に実行される。
- Parallelizer
- Resource と ResourceWork, そしてスレッドを管理し、並行実行を制御するクラス。
汎用的な Resource/ResourceWork/ResourceWorkManager が定義され、
一つの接続を扱う具体的な実装として、SingleConnectionResource/SingleConnectionWork/SingleConnectionWorkManager を提供している。
nine は、データベース操作を行う専用の API を提供している。
具体的には以下のような機能を提供している:
- 同期的なDB操作
- DB への接続、クエリの実行と結果取得、プリペアード文、トランザクション、文字列エスケープといった、DB の基本的な操作を提供している。
- 現在のところは PostgreSQL のみであるが、他のデータベースでも同一の API を提供する予定である。
- ワーカーモデルによる並列処理
- 複数の DB接続を並行に実行するフレームワークを実装している。
- ユーザーは DB操作のまとまりを関数として定義するだけで、並列に処理することできる。