ScalarDB 3.18 リリースノート
注記
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このペ ージには、ScalarDB 3.18 のリリースノートのリストが含まれています。
v3.18.0
発売日: 2026年05月01日
まとめ
このリリースには、多くの改善点、セキュリティ問題の修正、およびバグ修正が含まれています。
Community edition
機能強化
AuthAdmin.getRole(roleName)を追加しました。 (#3238)- 操作レベルの属性を追加し、グローバル機構を必要とせずに、操作ごとにクロスパーティションスキャン、フィルタリング、および並べ替えを許可しました。 (#3425)
DistributedTransactionAdmin.hasPrivilege()を追加しました。 (#3432)AuthenticationMethod列挙と認証方法対応のユーザー管理 API をAuthAdminに追加し、OIDC 認証をサポートしました。 (#3433)DistributedTransactionManagerのbeginおよびstartメソッドにattributesパラメータを追加し、トランザクションスコープの属性設定を有効にしました。また、DistributedTransactionManagerの CRUD メソッドは、操作の属性を内部で開始されたトランザクションに渡します。また、Consensus Commit でcc-transaction-isolation属性経由で、トランザクションごとに分離レベルを指定できるようになりました。 (#3466 #3517 #3540)- Google Cloud Spanner を JDBC ストレージとして、PostgreSQL 互換方言経由でサポートを追加しました。 (#3510)
改善点
- Consensus Commit プロトコルでのワンフェーズコミット最適化の適用範囲を拡張しました。これにより、トランザクションが後で更新するレコードのみを読む場合、SERIALIZABLE 分離レベルでもワンフェーズコミットを使用できるようになり、読取-修正-書込ワークロードのパフォーマンスが向上します。 (#3295)
- JDBC アダプターで描画操作のバッチ実行サポートを追加し、複数の描画実行時のパフォーマンスを向上させました。同じ SQL ステートメントを持つ描画はグループ化され、バッチで実行されます。 (#3304)
- JDBC アダプターのコネクションプーリングライブラリを Apache Commons DBCP2 から HikariCP に移行し、パフォーマンスと信頼性を向上させました。 (#3305)
- Consensus Commit トランザクションの動作を変更し、同一トランザクション内で Delete 後に Insert/Upsert/Update 操作を許可するようにしました。以前はこれにより
IllegalArgumentExceptionがスローされていましたが、現在は指定されていない列に null 値を含む新しいレコード挿入として処理されます。 (#3319) - Get/Scan ビルダーに @CheckReturnValue アノテーションを追加しました。 (#3320)
- DynamoDB でセカンダリインデックス列に null 値を設定するサポートを追加しました。null 値が設定されると、属性はアイテムから削除され、レコードはセカンダリインデックススキャンに表示されません。 (#3326)
- TIME (マイクロ秒精度)、TIMESTAMP (ミリ秒精度)、TIMESTAMPTZ (ミリ秒精度) 列の値を挿入または更新する際、範囲外の精度は例外をスローするのではなく切り捨てられるようになりました。 (#3393)
- Consensus Commit のインデックスベース Get、Scan、ScanAll 操作で、インデックス列を別のトランザクションから同時に更新されるレコードが見逃される可能性がある問題を修正しました。ScalarDB は、プライマリキー以外の列のユーザー定義セカンダリインデックスごとに companion before-image セカンダリインデックスを保持し、インデックス読取中に PREPARED/DELETED レコードを復元するために使用します。 (#3419 #3463)
- MySQL Connector/J を MariaDB Connector/J に置き換え、GPLv2 ライセンスの懸念を解決しました。 (#3428)
- JDBC インデックス名が基盤となるデータベースでサポートされている最大識別子長を超える場合、ハッシュを使用して短縮されるようになりました。 (#3481)
- 以前すべてのストレージバックエンドに適用されていた BigInt 値範囲制限 (
-2^53から2^53) を緩和しました。この制限は現在 Cosmos DB とオブジェクトストレージのみに適用されます。他のバックエンド (JDBC、Cassandra、DynamoDB) は BigInt 列の完全な Java long 範囲をサポートするようになりました。 (#3490) - Oracle BIGINT 列型マッピングを NUMBER(16) から NUMBER(19) に変更し、完全な Java long 範囲をサポートするようにしました。 (#3507)
- 非推奨ポリシーを変更し、API と設定に非推奨のマーク付けされたものは 5.0.0 ではなく 4.0.0 で削除されるようになりました。 (#3520)
バグの修正
- オブジェクトストレージアダプターのオプションの問題を修正しました。 (#3237)
- Oracle で
NUMBER(1)データ型を使用する列でテーブルをインポートする場合 (通常は BOOLEAN データに使用)、その列は ScalarDB Schema Loaderoverride-columns-type設定を使用して ScalarDB BOOLEAN にマップできるようになりました。 (#3239) - オブジェクトストレージで許可される最大文字列長を増加させるための修正。 (#3248)
- オブジェクトストレージアダプターのデータサイズ制限のエラーメッセージに表示される上限値を更新しました。 (#3264)
- SERIALIZABLE 分離レベルを使用する場合、Oracle データベースに対して各操作後のスナップショット更新を確保するための明示的なコミットを追加しました。 (#3294)
- セキュリティ問題を修正するため Jackson ライブラリをアップグレードしました: GHSA-72hv-8253-57qq (#3394)
- 列削除がサポートされていない場合でも
dropColumnFromTable()がセカンダリインデックスを削除する問題を修正しました。 (#3450) - セキュリティ問題を修正するため Netty ライブラリをアップグレードしました: CVE-2026-33870 および CVE-2026-33871 (#3452)
- lazy recovery が PREPARED レコードをロールバックした後、インデックスベース Get および Scan 操作が不正確な結果を返す可能性があるバグを修正しました。after-image インデックス値がクエリに一致しても、before-image (復元された) 値が一致しない場合があります。 (#3488)
Enterprise edition
改善点
ScalarDB Cluster
getRole()API とその同等の API を追加し、名前で単一のロールを取得できるようにしました。- 既存のバックアップサイトテーブルでレプリケーションを開始するためのサポートを追加しました。
- ScalarDB Cluster SQL トランザクションで
executeBatchAPI をサポートを追加し、単一の呼び出しで複数の SQL ステートメントをバッチ実行できるようにしました。 - SQL トランザクションのクライアント側最適化 (piggyback_begin および write_buffering) を追加し、クライアントとクラスター間の RPC オーバーヘッド を削減しました。
scalar.db.cluster.node.admin.portプロパティを使用して、admin サービス用に別の gRPC ポートを設定するサポートを追加しました。DistributedTransactionAdmin.hasPrivilege()を追加して、指定されたユーザーがテーブルに対して特定の権限を持っているかどうかを確認できるようにしました。- トランザクション begin/start メソッドで attributes パラメーターのサポートを追加し、分離レベルなどのトランザクションスコープ設定を有効にしました。
- OIDC JWT 認証サポートを追加しました。
CredentialsHolder経由の ThreadLocal ベースのユーザーパスワード認証サポートを追加し、複数のユーザーが単一のTransactionManagerを共有できるようにしました。- プロパティベースの OIDC JWT 認証サポートをクライアント用に追加し、JWT アクセストークンを設定プロパティを介して渡すことができるようにしました。
ScalarDB SQL
Metadata.getRole(roleName)を追加しました。- Spring Data JDBC for ScalarDB で Spring Boot 4 のサポートを追加しました。
- Spring Data JDBC for ScalarDB でカスタムビーン構成用に
AbstractJdbcConfigurationを拡張するサポートを追加しました。 PreparedStatementAPI を変更し、PreparedStatementで直接値を設定する代わりに、BoundStatementを返すbind()メソ ッドを使用するように修正しました。これは重大な変更であり、ユーザーはそれに応じてソースコードを更新する必要があります。executeBatchAPI を追加し、単一の呼び出しで複数のステートメントを実行できるようにしました。 core SQL API、direct-mode、JDBC ドライバーでサポートされています。- SQL ステートメントで X'hex' 構文を使用した BLOB リテラルのサポートを追加しました。
CREATE/ALTER USERおよびSHOW USERSでの AuthenticationMethod のサポートを追加しました。BEGINおよびSTART TRANSACTIONSQL ステートメントでWITH句 (例:BEGIN WITH 'cc-transaction-isolation' = 'SNAPSHOT') を使用してトランザクションスコープ属性を指定するサポートを追加しました。また、プログラマティック属性指定用にSqlSessionにbegin(Map)およびbeginReadOnly(Map)メソッドを追加しました。SqlJdbcDatabaseMetaData.getUserName()を更新し、Metadata.getCurrentUser()経由で認証されたユーザー名を返すようにしました。BEGINおよびSTART TRANSACTIONステートメントのWITH句で ABAC 読取および書込タグを指定するサポートを追加しました。