Transactd Utilities ガイド
ここではTransactd Utilitiesの使用方法について説明します。 インストールについては、Transactd Utilitiesのインストールを参照してください。
目次
Transactd High Availability (THA) マネージャ
Transactd High Availability (THA) マネージャの使用方法は、haMgrリファレンス をご覧ください。THAの仕組みなど詳細情報は高可用運用(THA)をご覧ください。
ベンチマークプログラム
ベンチマークプログラムは、基本的なCRUDオペレーションのベンチマーク(bench_tdclcpp_c_xxx) と、SQLライクな読み取りクエリーのベンチマーク(bench_query_xxx)の2種類あります。
bench_tdclcpp_c_xxxベンチマークプログラムは、コマンドライン引数のprocessNumberを 変えることで複数のインスタンスを同時に実行して計測することができます。 bench_tdclcpp_xxxプログラムのコマンドラインオプションは以下の通りです。
bench_tdclcpp_c_xxx.exe databaseUri processNumber functionNumber
|----------------|--------------------------------------------------------|
| パラメータ | 内容 |
|----------------|--------------------------------------------------------|
| databaseUri | データベースURIを指定します。 |
|----------------|--------------------------------------------------------|
| processNumber | 追加するデータの範囲を0からnで指定します。 |
| | 複数インスタンスによる同時実行の際に異なる番号を指定 |
| | することで、処理するレコードが競合しないようにします。 |
|----------------|--------------------------------------------------------|
| functionNumber | テストする処理を番号で指定します。 |
| | 処理は以下の通りです。 |
| | -1: all function |
| | 0: Insert |
| | 1: Insert in transaction. 20rec x 1000times |
| | 2: Insert by bulkmode. 20rec x 1000times |
| | 3: read each record |
| | 4: read each record with snapshot |
| | 5: read range. 20rec x 1000times |
| | 6: read range with snapshot . 20rec x 1000times |
| | 7: update |
| | 8: update in transaction. 20rec x 1000times |
|----------------|--------------------------------------------------------|
ex)
bench_tdclcpp_c_vc140_64u.exe "tdap://localhost/test?dbfile=test.bdf" 0 -1
bench_query_xxxベンチマークプログラムは、以下のSQLと同等な結果を得る速度を計測 します。
select
`user`.`id`
,`user`.`name`
,`extention`.`comment`
,`groups`.`name` as `group_name`
from
`user` INNER JOIN `extention`
ON `user`.`id` = `extention`.`id`
LEFT JOIN `groups`
ON `user`.`group` = `groups`.`code`
where
`user`.`id` > 0 and `user`.`id` <= 15000;
コマンドラインオプションは以下の通りです。
bench_query_xxx createdb hostname type n
|----------------|--------------------------------------------------------|
| パラメータ | 内容 |
|----------------|--------------------------------------------------------|
| createdb | テスト用データベースを新しく作成するかどうかを 1 または|
| | 0で指定します。デフォルトは1です。 |
|----------------|--------------------------------------------------------|
| hostname | テストを行うホストをIPアドレスまたは名前で指定します。 |
| | デフォルトは localhostです。 |
|----------------|--------------------------------------------------------|
| type | クエリーの内容を番号で指定します。デフォルトは15です。 |
| | 1: userテーブルから15000レコードの取得 |
| | 3: 1の結果にextentionテーブルのcommentフィールドをJOIN |
| | 7: 3の結果にgroupsテーブルのnameをJOIN |
| | 5: 1の結果にgroupsテーブルのnameをJOIN |
| |+8: 繰り返しの実行プログレスを.で表示 |
|----------------|--------------------------------------------------------|
| n | typeで指定したクエリの実行回数を指定します。 |
| | デフォルトは100です。 |
|----------------|--------------------------------------------------------|
ex)
bench_query_vc140_64u 0 localhost 15 100
C++ O/Rマッピングソースコードジェネレータ
ormsrcgen(32|64) はC++ O/Rマッピングのためのソースコードジェネレータです。
C++では動的にクラスを定義することはできないため、ソースコードジェネレータでモデルクラスを生成しコンパイルする形式を採ります。 これを使うとC++で簡単に高速なO/Rマッピングを行うことができます。
構成ファイル
ジェネレータの関連ファイルは source/global/ormsrcgen/templateに格納されています。それぞれのファイルの役割を説明します。
- ormDataClass_template.cpp : C++ モデルクラスのテンプレート
- ormDataClass_template.h : C++ モデルクラスのテンプレート
- ormMapClass_template.cpp : C++ マップクラスのテンプレート
- ormMapClass_template.h : C++ マップクラスのテンプレート
- template.cnf : 設定ファイルのひな形
- fieldNameList_sample.txt : フィールド名変換ファイルのサンプル
このうち、template.cnf
とfieldNameList_sample.txt
を必要に応じて編集します。
コマンドラインオプション
コマンドラインオプションは以下の通りです。
command line options:
-d [ --database_uri ] database uri ex:tdap://hostname/dbname?dbfile=trnasctd_schema
-t [ --table_name ] table name
-c [ --class_name ] class name
-f [ --conf_name ] configuration filename
-d :データベースを指定します。
-t :生成するモデルのテーブルを指定します。生成はテーブルごとに行います。
-c :-tで指定したテーブルに対応するモデルのクラス名を指定します。
-f :その他の設定項目を記述したテキストファイル(configuration file)です。
configuration fileは、多くの場合、テーブルが異なっても共通の内容です。ひな形がsource/global/ormsrcgen/template/template.cnf
として用意されています。これをコピーして内容を編集します。
configuration fileの書式
lang = (language)
生成するコードの言語を指定します。現在のバージョンでは
C++
のみサポートされます。files = (number of file)
1つのモデルのために必要なテンプレートファイルの数を指定します。C++の場合は
2
です。file1 = (file path) file2 = (file path) ... fileN = (file path)
files =
で指定した数のテンプレートファイルのパスを指定します。 デフォルトではfile1 = ormDataClass_template
file2 = ormMapClass_template
となっていますが、実際に使用する際は絶対パスで指定してください。saveDir = (output dir)
生成したソースコードを保存するフォルダを指定します。
setPrefix = (setter prefix)
クラスのメンバ変数に値をセットするアクセスメソッド名のプレフィックスを指定します。 例えば、
setPrefix = set
とした場合、name
というフィールドの値をセットする メンバ関数は以下のようになります。setName(const char* v)
getPrefix = (getter prefix)
setPrefixと同様に値の取得メソッドにつけられるプレフィックスを指定します。
externWord = (extern keyword)
出力されたクラスをDLLやSOなどのライブラリに含めて共有する場合は、class 宣言の後ろに エクスポートのためのキーワードを付加できます。
class $externWord someModel { ... };
fieldRenameList = (alias list file)
通常はテーブルに含まれるフィールド名がそのままクラスのメンバ変数名になります。 異なる名前に変更したい場合は、このfieldRenameListで変換リストの書かれたテキスト ファイルを指定できます。変換リストは以下のように、変換前=変換後の形式で指定します。
customer_id=id customer_name=name
name_space = (namespace of model class)
モデルクラスの名前空間を指定します。
name_space_map = (namespace of map class)
C++の場合、モデルクラスとともに、テーブルとクラスの復元と保存をマッピングする mapクラスも同時に生成されます。 name_space_mapはそのマップクラスの名前空間を指定します。
クエリーエグゼキューター
querystmts(32|64)はXMLファイルに記述されたTransactdクエリーの実行プログラムです。
querystmtsにXMLファイルを渡すとその内容に従ってクエリーを実行し、結果を標準出力 に出力します。XMLファイルは、queryBuilderプログラムにて作成します。queryBuilderは 現在まだリリースされていません。近日中にリリースされる予定です。
バグ報告・要望・質問など
- バグ報告・要望は、github上のIssueトラッカーにお寄せください。Issueトラッカー の利用にはgithubアカウント(無料)が必要です。
- 質問については、ウェブサイトを参照するか、上記のIssueトラッカーにお寄せくだ さい。