概要
このサブセクションでは、ShardingSphere 分散トランザクションの主な機能について説明します。
- ローカル・トランザクション
- 2段階のXAトランザクション
- Seata柔軟なトランザクション
ローカル・トランザクション
- 機能
- サポート
機能
- クロス・ライブラリでないトランザクションの完全サポート。例えば、テーブルの分割のみや、ライブラリは分割するが結果は単一のライブラリでルーティングする場合など。
- 論理例外によるクロス・ライブラリ・トランザクションは完全にサポートされています。例えば、同じトランザクションで2つのライブラリをまたいで更新します。更新が完了すると、NULLポインタがスローされ、両方のライブラリの内容をロールバックできます。
- ネットワークやハードウェアの異常によって発生するクロス・ライブラリ・トランザクションはサポートされていません。たとえば、同じトランザクションで、2つのライブラリにまたがって更新が行われ、更新が完了した後にコミットされず、1つ目のライブラリがダウンし、2つ目のライブラリのデータのみがコミットされたとします。
サポート
- Sharding-JDBCとSharding-Proxyは、ネイティブにローカルトランザクションをサポートします。
二段階トランザクション - XA
- 機能
- 未サポート
機能
- データシャーディング後のクロスデータベースXAトランザクションのサポート
- 2段階コミットにより、操作の原子性と強力なデータ一貫性を確保
- コミット/ロールバック中のトランザクションは、サービスのダウンタイムや再起動後に自動的にリカバリされます。
- SPIメカニズムが主流のXAトランザクションマネージャと統合、デフォルトでAtomikos、オプションでNarayanaとBitronixが利用可能
- XAおよび非XAコネクションプーリングの両方をサポート
- spring-bootとnamespaceへのアクセスの提供。
未サポート
- サービス停止後、他のマシンのコミット/ロールバックからデータを復元
柔軟なトランザクション - SAGA
- 機能
- 未サポート
- サポート
機能
- クロス・ライブラリ・トランザクションの完全サポート
- 失敗したSQLの再試行と最大努力配信のサポート
- 逆引きSQL、更新スナップショットの自動生成、自動補正のサポート
- スナップショットとトランザクションログは、デフォルトではリレーショナルデータベースを使用して永続化されます。
未サポート
- リソースの分離は現在サポートされていません。
- サービス停止後のコミットやロールバックの自動復旧はサポートしていません。
サポート
注記
- 逆引きSQLでは主キーが必要なので、テーブル構造で主キーを定義してください。
- 主キーを自動的に生成する必要がある場合は、ShardingSphereの分散主キーを使用できます。
フレキシビリティ・サービス - SEATA
- 機能
- 依存関係
- 最適化すべきオプション
機能
- ライブラリ間の分散トランザクションの完全サポート
- RC分離レベルのサポート
- 元に戻すスナップショットによるトランザクションのロールバック
- サービス停止後のコミット済みトランザクションの自動回復をサポートします。
依存関係
- ブランチ・トランザクションのオーケストレーションには、Seata-serverの追加サービスを導入する必要があります。
最適化すべきオプション
- ShardingSphereとSeataはSQLの重複解析を行います。