Tsurugi 1.6.0 をリリースしました。

概要

Tsurugi 1.6.0では、試験的機能としてユーザー認証とテーブル権限管理機能が新たに導入されました。
これまでTsurugiでは特定のコンポーネントに対する認証機能を部分的に導入していましたが、Tsurugi 1.6.0 ではこれを汎用的なユーザー認証とテーブル権限管理機能として大幅に拡張しました。

ユーザー認証ではユーザー/パスワードの認証方式をはじめとする複数の認証方式をサポートし、テーブル権限管理機能では GRANT , REVOKE 文による権限設定機能などを提供します。

その他、本バージョンではいくつかの重要な不具合修正や安定性の向上を行っています。
前バージョンを利用するすべてのユーザーは本バージョンへのアップグレードを強く推奨します。

機能追加と改善

機能追加と改善 - Authentication & Authorization

  • 試験的機能としてユーザー認証とテーブル権限管理機能を導入
    • ユーザー認証ではユーザー/パスワードの認証方式をはじめとする複数の認証方式に対応
    • テーブル権限管理機能では管理者、一般ユーザーの区分と GRANT , REVOKE 文による権限設定機能に対応
    • 本バージョンでは、デフォルトの設定では認証・認可機能は無効になっています。
      • ユーザー認証およびテーブル権限管理機能を有効にするには、同梱の認証サービスを起動した上で、構成定義ファイル tsurugi.ini  authentication セクションを編集して Tsurugi データベースを起動してください。
      • 詳細については、以下のドキュメントを参照してください。
  • 各種クライアントの認証機能への対応を追加
    • CLIツール
      • tgctl
        • tgctl コマンドに対する認証オプションの追加、 資格情報ファイルを作成する tgctl credentials サブコマンドの追加、各種サブコマンドの権限管理に対応しました。
        • 詳細については、以下のドキュメントを参照してください。
      • tgsql
        • tgsql に対する認証オプションの正式対応、REPLモード利用時のユーザー情報の表示などに対応
        • 詳細については、以下のドキュメントを参照してください。
      • tgdump
        • tgdump に対する認証オプションの対応
        • 詳細については、以下のドキュメントを参照してください。
    • クライアントライブラリ
      • Tsubakuro/Java
      • Tsubakuro/Rust
      • Iceaxe
      • 各クライアントライブラリでの認証機能の利用方法については、以下のドキュメントを参照してください。
    • 拡張機能
      • Tsurugi MCP Server
        • MCP Server に対する認証オプションの追加
        • 詳細については、以下のドキュメントを参照してください。

機能追加と改善 - SQL

  • 認可機能の導入に伴い GRANT, REVOKE 文に対応
  • DDL実行時の対象テーブル閉塞に対応
    • DML処理中にDDLを実行するとデータベースが不安定な状態になる(TSURUGI-IS-177) という既知の問題に対処するため、テーブル閉塞の制御を追加しました。対象テーブルに対してDML処理とDDL処理のトランザクションが競合する場合にエラーとすることで、データベースの不安定な状態に陥ることを防止します。
    • 上記の対応は、DML と DDLを 異なるトランザクション間 で同時に実行した際の競合についての対処を行っています。
      • DML と DDL を 同一のトランザクション内 で同時に実行した場合については、将来のバージョンで対処を行う予定です

機能追加と改善 - Transaction

  • Tsurugiデータベース起動高速化
    • Tsurugiデータベース起動処理の一部(インデックスのリストア処理)をトランザクションエンジンが並列実行するよう最適化しました。これにより、特に大規模なデータベースにおいて起動時間が短縮されます。
    • 該当処理のトランザクションエンジンの並列処理数は 構成定義ファイル tsurugi.ini  cc セクションの設定値 index_restore_threads によって変更可能です。デフォルト値は 4 です。マシンのCPUコア数が多い場合などではより大きな値を設定することで起動時間の短縮が期待できます。環境に応じて適切な値に変更してください。
  • LTX利用時にscanを伴う更新処理時の性能を改善

機能追加と改善 - Client

  • Tsurugi ODBC Driver インストーラーの提供
    • Windows版インストーラーによるインストール、ODBCデータソースアドミニストレーターからのデータソースの設定などに対応しました。
    • Tsurugi ODBC Driver のインストール手順については、以下のドキュメントを参照してください。

バグ修正

バグ修正 - SQL

  • 無効となったトランザクションを利用してDDLを実行できてしまう
  • 小数部が0の値をdecimalにキャストするとスケール情報が失われる

バグ修正 - Endpoint

  • 想定外の状況で "SQL-02037: The number of transactions exceeded the limit." が発生することがある

バグ修正 - Transaction

  • Tsurugiデータベースが不正に終了された場合などでトランザクションログが破損していた場合に、その後のデータベース起動によって稀にデータベースが不整合な状態となることがある

アップグレードについて

クライアント互換性リスト

Tsurugi 1.6.0 では 以下のクライアントに対応しています。
Tsurugi のアップグレードに併せて、必要に応じて各クライアントをアップグレードしてください。

ClientVersion
Tsubakuro/Java1.11.0
Iceaxe1.11.0
Tanzawa1.11.0
Tsubakuro/Rust0.5.0
Tsurugi MCP Server0.3.0

トランザクションログのフォーマット変更

本バージョンではトランザクションログのフォーマットバージョンが Version 6 に変更されています。バージョン 1.5.0 で利用していたトランザクションログを利用してバージョン 1.6.0 を起動すると、トランザクションログのフォーマットバージョンが自動でアップデートされます。

これにより、バージョン 1.6.0 で起動したトランザクションログはバージョン 1.5.0 では利用できなくなります。また、バージョン 1.6.0 以降で作成したバックアップを バージョン 1.5.0 で復元することもできなくなりますのでご注意ください。

認証機能に関する非互換の変更

バージョン 1.6.0 では、認証機能に関する機能にいくつかの重要な変更が加えられました。
バージョン 1.5.0 以前の認証機能については特定コンポーネントとの連携に限定したものであり、それ単体としては公開機能ではありませんでしたが、非互換な変更が多く加えられたため、以下に主な変更点を示します。

  • 認証サーバ(Jetty)のJavaバージョンの変更
    • Tsurugi 1.6 からインストーラーで導入される Jetty が Jetty 11 から Jetty 12 へアップグレードされたことに伴い、認証サーバは Java 17 以上が必須になりました。
    • 従来サポートしていた Java 11 はサポートされなくなりました。
  • Jetty のJAAS設定ファイルの変更
    • Jetty 12 へのアップグレードに伴い、JAAS設定ファイルのフォーマットが変更されました。過去バージョンのTsurugiインストーラーで導入されたJettyのJAAS設定ファイルは、Jetty 12 では使用できません。
    • Tsurugi 1.6 では、新しいフォーマットのJAAS設定ファイルが提供されます。既存の設定ファイルを使用している場合は、新しいフォーマットに合わせて設定を更新する必要があります。
    • 詳しくは、以下のドキュメントを参照してください。
  • 環境変数 TSURUGI_JWT_SECRET_KEY の廃止
    • 認証サービスの設定に使用されていた環境変数 TSURUGI_JWT_SECRET_KEY は廃止されました。代わりにpem形式のkeyファイルを配置し、このファイルパスを harinoki.properties の設定項目 tsurugi.jwt.private_key_file で設定するよう変更になりました。
    • 詳しくは、以下のドキュメントを参照してください。
  • 資格情報ファイルのフォーマット変更
    • tgsql  --credentials オプションで指定する資格情報ファイルのフォーマットが従来のJSON形式から、暗号化されたkeyファイル形式に変更されました。
    • これに伴い、デフォルトの資格情報ファイルの拡張子も以下の通り変更されました。
      • credentials.json -> credentials.key
    • 暗号化ファイルは tgctl credentials コマンドから生成することができます。詳しくは、以下のドキュメントを参照してください。
  • 認証サービスと認証サーバのログ統合
    • 認証サービスと認証サーバのログが統合され、認証サービスのログはJettyのログの一部として出力されるようになりました。
    • 認証サービスのログ設定はTsurugiインストールディレクトリ配下の var/auth/resources/jetty-logging.properties によって変更できます。

アップグレード手順

旧バージョンからのアップグレード手順については、以下のドキュメントを参照してください。

その他

本バージョンにおける変更内容の一覧は、以下のChangelogを参照してください。

本バージョンに対する既知の問題、および本バージョンにて修正された問題の補足情報については、以下のリンクを参照してください。