goo blog サービス終了のお知らせ 

ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Tsurugiのトランザクション分離レベルはSERIALIZABLE

2023-12-08 00:00:00 | PG(RDBMS)

Tsurugi Advent Calendar 2023の8日目です。

Tsurugiのトランザクション分離レベルはSERIALIZABLEです。
他のRDBMSではトランザクション分離レベルが変更できるものもありますが、TsurugiはSERIALIZABLEのみです。
また、他のRDBMSではsnapshot isolationのことをSERIALIZABLEと言っているものもあるようですが、Tsurugiは真のSERIALIZABLE、だそうです。

SERIALIZABLEは、2つのトランザクションT1とT2を並列に実行したときに、T1→T2またはT2→T1の順に実行した結果のいずれかと同じ結果になる、というものです。
実行したトランザクションがこの条件を満たせない場合(トランザクションの処理内容が他のトランザクションと競合した場合)、SQL実行時やコミット時にシリアライゼーションエラーとなります。
このためTsurugiでは、selectのみのトランザクションであっても、必ず最後にコミットして、コミットが成功すること(シリアライゼーションエラーにならないこと)を確認しなければなりません。

シリアライゼーションエラーが発生した場合は、アプリケーション側でそのトランザクションを先頭から再実行する必要があります。
(再実行することによって、SERIALIZABLEの条件が満たされてトランザクションが成功する想定です(場合によっては、何度も再実行する必要があるかもしれません^^;))


Tsurugiの認証方法

2023-12-07 00:00:00 | PG(RDBMS)

Tsurugi Advent Calendar 2023の7日目です。

普通のDBでは、接続する際にユーザーIDやパスワード等を入力して認証を行います。

しかし現在のTsurugiでは、認証は実装されていません。何を指定しても接続できます。

ユーザーIDやパスワードを入力する仕組みは用意されていますが、実質的には使われません。
また、ユーザーIDやパスワードを登録する仕組みもまだありません。


Tsurugiのエンドポイント

2023-12-06 00:00:00 | PG(RDBMS)

Tsurugi Advent Calendar 2023の6日目です。

TsurugiのDBに接続するには、エンドポイントというものを指定します。

エンドポイントは接続先と接続方法をURIで表します。

接続方法にはIPC接続とTCP接続があります。
IPC接続はLinuxの共有メモリーを使う方法で、Tsurugiサーバーと同じマシン上でしか使えませんが最も高速です。「ipc:tsurugi」のような形のURIです。
TCP接続はTCP/IPで通信する方法で、「tcp://localhost:12345」のような形のURIです。


Tsurugi SQLコンソール

2023-12-05 00:00:00 | PG(RDBMS)

Tsurugi Advent Calendar 2023の5日目です。

TsurugiでSQLを実行するCLIツール(REPL)として、Tsurugi SQLコンソール(tgsql)というものがあります。

tgsqlはJavaで作られていて、JLine3という対話型ツール(REPL)を作るライブラリーを利用しています。
JLineはJShellにも使われているライブラリーで、キー入力や入力履歴などはほとんどデフォルトのまま使用できてとても便利です。

ただ、tgsql自体はまだ未完成な部分も多いです。
データ型の表示とか…。(例えばSQLのintやbigintがINT4やINT8という内部形式のまま表示される)
こういったものはTsurugi本体やライブラリーが対応していない為で、今後改善されていくものと思います。


Tsurugiサーバーの起動停止方法

2023-12-04 00:00:00 | PG(RDBMS)

Tsurugi Advent Calendar 2023の4日目です。

Tsurugiサーバー(TsurugiのDB)(tsurugidbプロセス)を起動・停止するには、tgctlコマンドを使用します。

起動の場合は「tgctl start --conf 構成定義ファイル」、停止の場合は「tgctl shutdown --conf 構成定義ファイル」となります。

構成定義ファイルはTsurugiサーバの設定を記述したファイルです。
構成定義ファイルには永続化情報を書き込むディレクトリーやエンドポイントの設定等を記述します。これを元にプロセスの情報を決めるので、起動時に指定するのはもちろん、停止時にも同じファイルを指定する必要があります。
(したがって、起動してから停止するまでに構成定義ファイルを書き換えると、場合によっては正常に停止できなくなる可能性があると思います)

構成定義ファイルを複数用意して別々にtgctl startを実行すれば、同時に複数のTsurugiサーバーを起動させることが出来るでしょう。普通はやらないと思いますが^^;