ScalarDB 3.8をリリースしました
先日、ScalarDBの新しいマイナーバージョンとしてScalarDB 3.8.0をリリースしました!本リリースには、複数のマイクロサービスを跨るトランザクションの管理を容易にするScalarDB ClusterやScalarDB GraphQLのクエリの拡張、そしてSpring Data JDBC対応が含まれています。
本記事では、それぞれ、ScalarDB Cluster、Spring Data JDBC対応、そしてScalarDB GraphQLのクエリの拡張について説明します。
ScalarDB Cluster
これまでScalarDBにおいては、マイクロサービスでのトランザクション管理を容易に行うためのインターフェースを提供してきました。しかし、一つのトランザクション内においてマイクロサービス間で複数のインタラクションを行う場合、マイクロサービス側でトランザクションの送信先の管理を行う必要があり、アプリケーション開発者の負担が大きいという課題がありました。ScalarDB Clusterはこの課題を解決するために設計・開発されました。具体的には、ScalarDB Clusterは複数のScalarDBの機能を持ったサーバで構成され、さらにそれらのサーバはルーティングの機能を持っており、必ずトランザクションを処理すべきサーバに対してトランザクションのリクエストを送信します。これにより、マイクロサービスにおいてはトランザクションの送信先を管理する必要がなくなり、各サービスはどのサーバと通信しても正しく機能することが保証されるようになりました。この機能拡張により、ScalarDBを用いたマイクロサービスにおけるトランザクション管理がさらに容易になりました。
ScalarDB Clusterの詳細についてはこちらをご覧ください。
Spring Data JDBC対応
本リリースでは、Spring Frameworkにおけるデータベース抽象化レイヤであるSpring Data JDBCへのサポート機構が追加され、ScalarDBアプリケーションの開発をSpring Dataインターフェースを用いて行うことが可能となりました。これにより、ScalarDBの導入がさらに容易になりました。
下記のように、Spring Data JDBCのAPIを用いてScalarDBを操作することができます。
ScalarDBのSpring Data JDBC対応の詳細についてはこちらをご覧ください。
ScalarDB GraphQLのクエリの拡張
本リリースより、ScalarDB GraphQLでは、パーティションをまたがったデータのScanを行うことができるScanAllクエリと、セカンダリインデックスを用いたGet/Scanクエリを実行することができるようになりました。
ScanAllクエリに関しては、例えば bank というテーブルがあった場合に、以下のようなクエリを発行することによってbankテーブルのすべてのデータを取得することができます。
また、以下のようにlimitを指定して取得件数を制限することもできます。
そして、セカンダリインデックスを用いたGet/Scanクエリに関しては、以下のようにクエリを発行することで実現できます。
ScalarDB GraphQLについては、こちらのブログ記事やこちらのドキュメントもご覧ください。
まとめ
本記事では、先日リリースしたScalar DB 3.8.0の説明をしました。本リリースでは、主に、複数のマイクロサービスを跨るトランザクションの管理を容易にするScalarDB Clusterの追加や、Spring Data JDBC対応、そしてScalarDB GraphQLのクエリの拡張を行いましたが、本記事ではそれらについて紹介しました。