ScalarDB 3.9をリリースしました
先日、ScalarDBの新しいマイナーバージョンであるScalarDB 3.9をリリースしました。3.9では、以下の新機能や拡張が追加されました。
- ScalarDBにおける分析クエリをサポートするScalarDB Analytics with PostgreSQLの提供
- 各種サーバーのScalarDB Clusterへの統合
- ScalarDB GraphQLおよびSpring Data JDBC for ScalarDBにおける二相コミットインターフェースのサポート
- ScalarDBのサポート対象データベースにSQLiteを追加
このエントリでは、これらの新機能や拡張について紹介いたします。
ScalarDB Analytics with PostgreSQLによる分析クエリサポート
ScalarDBは複数の異なるデータベースにまたがるACIDトランザクションを実現する汎用的なトランザクションマネージャであり、多数のシンプルなトランザクションを処理するようなワークロードを主な対象としています。一方で、結合処理や集約処理を必要とする複雑な分析処理をするためには、アプリケーション側で結合処理や集約処理を実装する必要があり、アドホックな分析処理には適していませんでした。
ScalarDB 3.9で新たに提供するScalarDB Analytics with PostgreSQLは、ScalarDBが管理する複数の異なるデータベース上のデータに対して、PostgreSQLの外部データラッパー(FDW)を用いて統合的・横断的に分析クエリを実行することが可能となります。これにより、ユーザーは分析処理毎にアプリケーションロジックを実装する必要がなくなるため、アドホックな分析も容易に実行できるようになります。
ScalarDB Analytics with PostgreSQLのより詳しい情報についてはこちらのドキュメントやブログエントリをご参照ください。
各種サーバーのScalarDB Clusterへの統合
複数のScalarDBコンテナを利用する場合、ScalarDB Clusterを利用することでアプリケーション開発者は、各トランザクションをどのScalarDBコンテナで処理させるべきかを意識する必要がなくなりました。ただし、GraphQLインターフェースやSQLインターフェースを使用する場合は、ScalarDB Clusterとは別にScalarDB GraphQLやScalarDB SQLのコンテナをそれぞれ用意する必要があり、システム構築やデプロイが煩雑になってしまうという課題がありました。
ScalarDB 3.9では、ScalarDB ClusterのノードにScalarDB GraphQLとScalarDB SQLが統合されたため、ScalarDB Clusterのノード数分のコンテナをデプロイするだけでよく、デプロイがよりシンプルになりコンテナの管理も容易になりました。
ScalarDB Clusterに関するより詳細な情報についてはこちらのドキュメントをご参照ください。
GraphQLおよびSpring Data JDBC for ScalarDBにおける二相コミットインターフェースのサポート
ScalarDBは、複数のマイクロサービスにまたがるACIDトランザクションを実現するために二相コミット¹ インターフェース(Two-phase commit (2PC) interface)を提供していますが、GraphQLインターフェースであるScalarDB GraphQLおよびSpring Data JDBCのサポート機構であるSpring Data JDBC for ScalarDBでは二相コミットインターフェースはサポートされていませんでした。そのため、ScalarDB GraphQLやSpring Data JDBC for ScalarDBを利用してマイクロサービス間にまたがるACIDトランザクションを実現しようとすると、アプリケーション自身で二相コミットを実装する等の対応が必要となり、デバッグやテスト等を含めた実装コストが高くなってしまうという課題がありました。
ScalarDB 3.9では、ScalarDB GraphQLおよびSpring Data JDBC for ScalarDBにおいても二相コミットインターフェースを提供するようになり、これらを利用して構築されたマイクロサービス間にまたがるACIDトランザクションが容易に実現できるようになりました。
ScalarDB GraphQLによる二相コミットトランザクションを実行するためには、QueryまたはMutationに@twoPhaseCommit
ディレクティブを付与します。
ScalarDB GraphQLによる二相コミットトランザクションの詳細についてはこちらのドキュメントをご参照ください。
また、Spring Data JDBC for ScalarDBにおける二相コミットインターフェースでは二種類のAPIが提供されています。
- Primitive 2PC API
- High-level 2PC API
Primitive 2PC APIは、ScalarDBの二相コミットインターフェースを呼び出せるように対応した原始的なAPIであり、二相コミットトランザクションの処理を細かく柔軟に制御できる一方、ユーザーはどのAPIをいつ呼び出すべきか考慮する必要があります。一方、High-level 2PC APIは、一般的なユースケースを対象にした、使い勝手の良い抽象度の高いAPIであり、開発者はいつcommitやrollbackを実施すれば良いのかを意識する必要がありません。
Spring Data JDBC for ScalarDBにおける二相コミットインターフェースに関するより詳細な情報については、こちらのドキュメントやブログエントリをご参照ください。
SQLiteのサポート
ScalarDBがサポートするデータベースとしてSQLiteを新たに追加しました。SQLiteは組み込みアプリケーションや⼩規模なプロジェクトにおいて適したデータベースとして利⽤されていることから、ScalarDBはさらに幅広いユースケースに対応可能となりました。ScalarDB 3.9におけるサポート対象のデータベースは以下になります。
- Apache Cassandra
- Azure Cosmos DB for NoSQL
- Amazon DynamoDB
- MySQL
- PostgreSQL
- Oracle Database
- Microsoft SQL Server
- Amazon Aurora (MySQL/PostgreSQL)
- SQLite (New)
まとめ
多くの新機能や改良点が盛り込まれているScalarDBの新しいバージョン3.9をリリースしました。ScalarDBについてはドキュメントや過去のブログもあわせてご参照ください。また、ScalarDBの導入をご検討される場合は、是非こちらまでお問い合わせください。
[1]: 複数のデータベースが関与するトランザクションの原子性(Atomicity)と持続性(Durability)を保証するためのコミットプロトコル