blog

ShardingSphere 4.x 分散トランザクション・サポート機能

クロス・ライブラリでないトランザクションの完全サポート (例: テーブルの分割のみ、ライブラリは分割するが結果は単一ライブラリでルーティング) 論理的例外によるクロスデータベース・トランザクションを完...

May 19, 2020 · 2 min. read
シェア

概要

このサブセクションでは、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の重複解析を行います。
Read next

Flutter Packaging Script ワンクリックでDandelionにアップロードする

最近flutterが熱いので、サードパーティのプラットフォームにパッケージとアップロードするには?2つのタンポポプラットフォームを選択し、pythonスクリプトを記述します。

May 19, 2020 · 6 min read