ScalarDB 3.11をリリースしました
先日、ScalarDBの新しいマイナーバージョンであるScalarDB 3.11をリリースしました。3.11では、以下に示すようにScalarDBをより導入しやすくするための機能が多数追加されました。
- 既存のリレーショナルデータベースのテーブルをScalarDBで管理できるようにするためのテーブルインポート
- ScalarDB SQLで任意のWHERE句を実行出来るようにするCross-partition Scan
- 結合演算(JOIN)のサポート等のScalarDB SQLの機能拡張等
これらの機能により、リレーショナルデータベースを利用するアプリケーションをScalarDBベースのアプリケーションに移行することがより容易になりました。その他にも、ScalarDB Clusterでは新たに認証・認可機構等も導入されました。
このエントリではこれらの新機能について紹介いたします。
既存のリレーショナルデータベーステーブルのインポート
ScalarDBは、管理下にある個々のデータベースのトランザクション管理機構に依存せずに独自でトランザクションを管理するために、データベースのレコードに対しメタデータ列を追加して利用します。これまでのScalarDBでは、メタデータ列の値がnullであるレコードを適切に処理することができなかったため、既存データベースのレコードに対してメタデータ列を後から追加したとしてもScalarDBで管理することは出来ませんでした。そのため、ScalarDBでデータベースを管理するには、Schema Loaderツール等を使用してメタデータ列を含むテーブルを新規に作成する必要がありました。
ScalarDB 3.11では、メタデータ列の値がnullである場合はそのレコードをコミット済みとして扱うようになりました。さらにSchema Loaderツールは対象のデータベースがリレーショナルデータベースである場合は、既存のテーブルにnull値のメタデータ列を追加するようになりました。これらの変更により、 既存のデータベースがリレーショナルデータベースである場合は、当該データベースを再構成することなくScalarDB配下で管理できるようになりました。
なお、このインポート機能は既存のテーブルにメタデータ列を追加するだけであり処理時間も短いため、既存のリレーショナルデータベースをScalarDBで管理するための移行もより容易にできるようになりました。
テーブルインポート機能の詳細についてはImporting Existing Tables to ScalarDB by Using ScalarDB Schema Loaderをご参照ください。
Cross-partition Scan(任意のWHERE句の実行)
これまでのScalarDB SQLでは、処理効率の観点からWHERE句の記述において、Partition keyまたはSecondary indexの指定が必須であったり、検索条件にはClustering keyでの範囲指定のみが可能である等の制限があったため、SELECT文で柔軟な条件による検索が出来ませんでした。
ScalarDB 3.11では、ScalarDB管理下のデータベースがリレーショナルデータベースの場合、WHERE句を当該データベースで実行させる(Push downする)ようになりました。これにより、Partition keyやSecondary indexの指定が必須ではなくなり、WHERE句でAND、OR、LIKEを任意に組み合わせることが出来るようにもなったため、ScalarDB SQLでより柔軟なデータ検索が可能となりました。
ただし、ScalarDB管理下のデータベースに適切なインデックスが設定されていなかったり、テーブルサイズが巨大な場合には非効率な処理となってしまうこともあります。そのため、当該機能は適切にインデックスを設定するか、小さいサイズのテーブルで利用するようにしてください。
Cross-partition Scanの詳細についてはScalarDB Java API GuideやScalarDB SQL Grammarをご参照ください。
ScalarDB SQLの機能拡張*
ScalarDB 3.11では、JOIN(結合演算)のサポート等、ScalarDB SQLの機能が拡張されました。
JOIN(結合演算)のサポート
これまでのScalarDBでは、複数のテーブルを結合したい場合、アプリケーション側でそれぞれのテーブルをSELECTし、それぞれのテーブルから結合条件に一致するレコードを抽出する等のJOINに相当する処理の実装が必要でした。
ScalarDB 3.11では、ScalarDB SQLでJOINがサポートされるようになったため、テーブルの結合はScalarDB SQLでJOIN句を記述するだけでよくなりました。これにより、アプリケーション側での実装負荷が下がり開発効率の向上が期待できます。
JOINの詳細についてはScalarDB SQL Grammarをご参照ください。
その他の拡張
その他にも以下のような様々な機能が拡張されました。
- テーブルエイリアスのサポート(SELECT, UPDATE, DELETE)
- 1つのINSERT文で複数レコードの指定が可能
- START TRANSACTION, ABORTコマンドの追加
- UPDATE、DELETEにおける任意のWHERE句のサポート
- UPSERT文の追加
これらの拡張を含むScalarDB SQLの詳細についてはScalarDB SQL Grammerをご参照ください。
ScalarDB Clusterにおける認証・認可機構*
これまでScalarDB自身には認証・認可の仕組みがなかったため、基本的にはどのユーザーもScalarDB管理下のテーブルにアクセスすることができ、任意の操作(SELECT, INSERT, UPDATE, DELETE, 等)が可能でした。そのため、どのユーザーがどのテーブルに対しどんな操作が可能かを細かく制御することができませんでした。
ScalarDB 3.11では、ScalarDB Clusterで認証・認可がサポートされるようになり、ScalarDB Clusterにアクセスするユーザーに対して、名前空間やテーブルに対するアクセス制御や操作権限を管理することが可能となりました。これにより複数の異なるデータベースに対しても統一的な方法でユーザー毎に認証・認可が行えるようになりました。
ScalarDB Clusterにおける認証・認可の詳細については、ドキュメントをご参照ください。
まとめ
多くの新機能や改良点が盛り込まれているScalarDBの新しいバージョン3.11をリリースしました。ここで紹介した新機能を含む3.11のリリース内容についてはリリースノートをご参照ください。ScalarDBについてはドキュメントや過去のブログもあわせてご参照ください。また、ScalarDBの導入をご検討される場合は、是非こちらまでお問い合わせください。
※ ScalarDB SQLおよびScalarDB ClusterはEnterprise Editionの機能であるため、これらを利用するには別途ライセンスの購入が必要となります。