🛠️

【DataSpider】DB_Rebuildライブラリ

2022/06/07に公開

最初に

この記事ではDataSpiderのライブラリとなる[DB_Rebuild]ライブラリについて解説します。

ライブラリ群の全体の話についてはこちらの本記事に記載しています。
https://zenn.dev/ryosanbimania/articles/5e361f5f9dc570

ライブラリの特徴

本ライブラリはデータベースがDr.Sumに限定されているものです。Dr.Sumはテーブルを再構築(Rebuild)しなければならないタイミングがあります。
ぼくとしてはそのタイミングで再構築をかけるよりも、夜間に毎回かければOKかなと思っています。
https://cs.wingarc.com/manual/drsum/5.6/ja/UUID-4369b72d-37ef-8d1e-0a59-292cc8fb8f02.html

Dr.Sumには再構築コマンドを呼び出すだけでデータベースの再構築がおこなえる機能があります。
今回はその再構築コマンドを呼び出すバッチを作成し、DataSpiderからパラメーターを渡して、再構築を実行する仕組みを作成します。
https://cs.wingarc.com/manual/drsum/5.6/ja/UUID-21a146af-8957-2de3-255b-ff634d76caaa.html

ライブラリの詳細

引き渡し変数

DB_Rebuildライブラリで必要な変数はこちら。

親スクリプトから渡してほしい変数はこちらの1つです。
 ・DB名
です。
親スクリプトからはDB名を持たせればOKです。

親スクリプトからの変数の渡し方はこちら。

親スクリプトからは自身の変数である
 ・DB名
を渡します。

処理の流れ


[DB_Rebuild]ライブラリはコンポーネントが5つですがTry-Catch文がほとんどで、実際はバッチコマンドを処理しているだけですので1つですね。

バッチファイルを用意する

まずはバッチファイルを用意して、DataSpiderの入っているサーバに配置しましょう。

バッチファイルの中身はこちらです。

@echo off

cd C:\drsum56\AdminTools\cmd\JPN

rem データベースのリビルド
dwtab_rebuild "localhost" 6001 %1 %2 %3 "" 1 0 0

exit /b

cdはDr.Sumのバッチファイルが格納されているファイルを指します。
今回はdwdb_rebuild.batをキックします。

dwtab_rebuild "localhost" 6001 %1 %2 %3 "" 1 0 0

dwdb_rebuildのあとにパラメータを渡しています。
%1〜%3はDataSpiderから渡すパラメーターです。

ReBuildコンポーネント

バッチファイルが設置できたら、DataSpider側に戻りましょう。
外部アプリケーション起動処理コンポーネントを用意します。

起動コマンドは先ほど置いたバッチファイルの場所を指します。

そして起動引数がバッチファイルの %1〜%3 に対応します。

バッチ DataSpider
%1 ${DS User ID}
%2 ${DS Password}
%3 ${DB名}

これでOKです。
Dr.Sumのユーザー名やパスワードはDataSpiderの中で保持しています。
(グローバルにした方がいいんだろうけど、とりあえずはスクリプト変数に保持しています)

[DB_Rebuild]ライブラリは以上で終了です。

再構築のタイミング

データベース再構築をするタイミングについて記載します。

一番スマートなのは夜間処理が終わったタイミングで最後に再構築です。
夜間処理でDELETEした後にINSERTするテーブルがあればそこが最適でしょう。
ただし[毎日再構築する必要がないテーブル]がほとんどです。Dr.Sumを10年以上触っていますが、毎日再構築をしなければならないテーブルはまだ見たことがありません。
そのレアケースを外すと、夜間処理の前にBackUpと一緒にかけてしまうのがベターかなと思います。

そのため、ぼくはMaintenanceスクリプトを夜間処理の前に動かしています。

最後に

DB_Rebildライブラリについては以上となります。

他のライブラリについてもこちらで解説していますので、ぜひご覧になってください。
https://zenn.dev/ryosanbimania/articles/5e361f5f9dc570

Discussion