データ ファイルの変換
Zen には、Btrieveファイルを新しいバージョンに変換して、ファイルの設定を変更したり、システム キーなどの新しい Zen エンジンの機能を利用できるようにするツールがあります。以下のトピックでは、ツールの概念と変換を行うための各種ツールについて説明します。
Zen v16 リリースには、rbldcli_offline と呼ばれる既存の Rebuild ツールのスタンドアロン コマンド ライン バージョンが含まれています。これは、Zen がインストールされていないシステムで Zen データ ファイルを変換するために使用します。大量のファイルやサイズが非常に大きなファイルをリビルドすると、他のユーザーに対する Zen データベース エンジンのパフォーマンスを低下させる可能性があります。別のシステムでファイルをリビルドできれば、この問題を回避できます。
メモ:  Rebuild ツールは、破損したファイルに対して使用することを目的としていません。データの複製、またはエクスポート、インポート、コピーによって破損したファイルを修復するには、Maintenance ツールを使用した Btrieve データ ファイルの操作を参照してください。ファイルを圧縮してエンジンのパフォーマンスを向上させるためには、データ ファイルの断片化の監視を参照してください。
Rebuild ツールの概念
Rebuild ツールを使用すると、MicroKernel データ ファイルと辞書ファイルに対して以下の操作を行うことができます。
データベースで辞書ファイル(DDF)を使用している場合は、データ ファイルだけでなくこれらもリビルドする必要があります。
データ ファイルのリビルドの背後にある概念を理解するには、以下のトピックをお読みください。
Rebuild ツールの使用についての情報は、以下のトピックを参照してください。
サポートされるプラットフォーム
Rebuild には 2 つの様式があります。1 つはWindows 用の 32 ビット GUI バージョンで、もう 1 つは Linux、Raspbian および Windows 用のコマンド ライン バージョンです。Rebuild ツールの GUI のリファレンスおよび CLI バージョン Rebuild 操作を参照してください。
Linux および Raspbian CLI Rebuild
Rebuild は、Linux および Raspbian では rbldcli というプログラムとして実行されます。デフォルトでは、このプログラムは /usr/local/actianzen/bin にあります。
Windows CLI Rebuild
Rebuild は Windows では rbldcli.exe というプログラムとして実行されます。このプログラムはデフォルトで、Program Files (x86) ディレクトリにインストールされます。
ファイル形式
現在のデータベース エンジンはいくつかの古いデータ形式や辞書ファイル形式と互換性を保っていますが、新しい機能を利用するためにはファイルを変換する必要があります。次の表に、より新しい形式に変換する一般的な理由を挙げます。
コマンド ラインの Rebuild を使用してできたファイル形式は、-f パラメーターによって異なります。-f パラメーターを指定しないと、Rebuild は MicroKernel エンジンの[作成ファイルのバージョン]設定の値を使用します。たとえば、[作成ファイルのバージョン]の値が 9.5 の場合、バージョン 9.0 のファイルに対して Rebuild ツールを実行すると、このファイルは バージョン 9.5 の形式に変換されます。
Rebuild を実行する前に、変換するデータ ファイルをすべてバックアップしておくことをお勧めします。これは、元のファイルと同じ場所にリビルドする場合には特に重要です(この場合リビルドされたファイルは元のファイルを置き換えます)。バックアップ コピーを取っておけば、必要な場合に元のファイルを復元することができます。バックアップを確実に実行するためには、以下のいずれかの操作を行います。
メモ:  Continuous オペレーション モードになっているファイルで Rebuild を実行することはできません。
テンポラリ ファイル
Windows では、Rebuild は TMP システム環境変数で指定されたディレクトリにテンポラリ ファイルを作成します。デフォルトで、Linux および Raspbian では Rebuild は出力ディレクトリ(-b オプションが使用されていない場合はソース ディレクトリ)にテンポラリ ファイルを作成します。このため、テンポラリ ファイル ディレクトリには元のファイルと新しいファイルの両方を格納するために十分なディスク容量が必要です(Rebuild の実行中)。Rebuild GUI バージョンの[出力ディレクトリ]オプションを使用するか、CLI バージョンの -b オプションを使用して、これらのファイルを別のディレクトリに保存するように指定できます。
通常、変換が終了するとテンポラリ ファイルは自動的に削除されます。ただし、停電などの重大な障害が発生した場合は、テンポラリ ファイルが削除されないことがあります。このような場合は、次の表の説明に従ってテンポラリ ファイルを手動で削除する必要があります。
注意:Rebuild 実行可能ファイルである rbldcli を削除しないようにしてください。
Rebuild 処理の最適化
Rebuild はデータベース エンジンに Btrieve 呼び出しを行います。そのため、データベース エンジンの構成設定と処理メモリの容量がリビルド処理のパフォーマンスに影響を与えます。これは特に、サイズの大きなデータ ファイルをリビルドする際の所要時間に関しては顕著です。
一般的に、インデックスを構築するのはデータ ページを構築するよりはるかに時間がかかります。インデックスを多数持つデータ ファイルがある場合、同じファイルでインデックスが少ない場合に比べ、ファイルのリビルドには時間がかかります。
リビルドの処理時間には以下の項目が影響します。
CPU 速度およびディスク速度
CPU(中央処理装置)の速度および物理ストレージ ディスクへのアクセス速度が、リビルドの処理時間に影響します。一般的に、これらの両方の速度が速いほどリビルド処理も速く行われます。ディスク速度は、メモリに全体が入りきらない大きなファイルのリビルドではより重要になります。
ヒント:  ギガバイト範囲のサイズが大きいファイルでは変換に数時間かかる場合があります。複数のデータベース エンジンが使用できる場合、リビルド処理をいくつかのマシンの CPU 間で分担したいと考えるでしょう。たとえば、すべてのファイルの中からいくつかずつを、データベース エンジンがインストールされている各マシンにコピーし、リビルド処理が終わったらファイルをコピーして元の場所に戻します。
メモリ量
Rebuild では、デフォルトの方法ともう 1 つの方法の 2 つの方法を用いてファイルをリビルドすることができます。-m<0 | 2> パラメーターを参照してください。デフォルトの方法(-m2)では、Rebuild は以下の手順を実行します。使用可能なメモリが多いほど、実行が速くなります。
1.
2.
3.
4.
a.
b.
c.
手順 a および b を繰り返し、各レコードのキー値を処理します。
テンポラリ ファイルには、それぞれ個別にソートされた複数のキー値セットが含まれるようになります。
5.
6.
残りの各キーについて、手順 4 および 5 を繰り返します。
この処理中にテンポラリ ファイルのオープンや書き込みに失敗などのエラーが発生した場合、Rebuild はもう 1 つの方法を用いてファイルのビルドを最初からやり直します。
メモリが不足しているためデフォルトの方法を使用できない場合、またはデフォルトの方法で処理中にエラーが発生した場合、Rebuild はもう 1 つの方法(-m0)を使用します。
1.
2.
もう 1 つの方法は、デフォルトの方法に比べて一般的にはるかに時間がかかります。多数のインデックスを持つサイズの大きなファイルがある場合、2 つの方法の差は何時間から何日にまで及ぶことがあります。Rebuild が必ずデフォルトの方法を使用するようにする唯一の方法は、十分な使用可能メモリを確保することです。設定プロパティのいくつかは、利用可能なメモリ量に影響を与えます。
ソート バッファー サイズ
この設定は、ランタイムでインデックスを作成中に MicroKernel がソートのために動的に割り当てる、または割り当てを解除するメモリの最大容量を指定します。
設定がゼロ(デフォルト)の場合、Rebuild はメモリ内のインデックスをリビルドするために必要な最適なメモリ バイト値を計算します。
設定がゼロ以外の値で、その値が Rebuild で必要な計算された最小メモリより大きい場合、Rebuild は小さい方の値を使用します。
最後に、Rebuild は割り当てるべきメモリ量と実際に利用可能な量の 60% とを比較します。そして、その 2 つのうち小さい方を割り当てようとします。メモリ割り当てに失敗した場合、Rebuild は最後に割り当てようとしたメモリ量の 80% の割り当てを試みることを続けます。メモリ割り当てに完全に失敗した場合(これは最小メモリ バイトよりメモリ量が少ないことを意味します)、Rebuild はインデックスのリビルドにもう 1 つの方法を使用します。
MicroKernel の最大メモリ使用量
この設定は、総物理メモリに対して MicroKernel が消費できるメモリの割合を指定します。MicroKernel による L1、L2、およびその他すべてのメモリの使用量が含まれます。リレーショナル エンジンによる使用量は含まれません。
リビルドするサイズの大きなファイルがある場合、[MicroKernel の最大メモリ使用量]のパーセンテージを一時的にデフォルトより小さい値に設定します。リビルド処理が終わったら、再度適切なパーセンテージに設定し直します。
キャッシュ割当サイズ
この設定は、MicroKernel によって割り当てられるレベル 1 キャッシュのサイズを指定します。MicroKernel では、すべてのデータ ファイルへのアクセスにこのキャッシュが使用されます。
この設定は、データベース エンジンがデータ ファイルにアクセスするのにどれだけのメモリが使用できるかを決定します。インデックスを構築する際に使用するものではありません。
キャッシュ割り当てサイズを大きな値に増やしても、インデックスの構築は速くなりません。実際、重要なメモリを占めることにより Rebuild にとっては利用不可能となり、処理を遅くする可能性があります。大きなファイルをリビルドする場合には、キャッシュ値を低い値に抑えます。たとえば、現在の値の 20% で、ただし 5 MB を下回らないようにします。こうすると、できるだけ多くのメモリをインデックスのリビルドに残すことができます。
インデックス ページ サイズ
ファイルのページ サイズも、インデックス構築の速度に影響します。Rebuild がもう 1 つの方法を使用した場合、小さいキー ページを使用するとインデックスの構築に必要な時間は劇的に増加します。Rebuild がデフォルトの方法を使用した場合には、キー ページ サイズはインデックスの構築にはあまり影響を与えません。
Rebuild は、ページ サイズをアプリケーションのパフォーマンスまたはディスク ストレージに対して最適化します。
データ アクセスの速度の観点から、パフォーマンス向けにページ サイズを最適化するために、Rebuild は 4096 バイトのデフォルトページ サイズを使用します。これにより、物理ストレージのページサイズが大きくなり、リビルドの時間は遅くなります。
ディスク ストレージに対するページ サイズの最適化に関する解説は、『Zen Programmer's Guide』のページ サイズの選択 を参照してください。
ログ ファイル
リビルド実行の情報はテキスト ログ ファイルに追加されます。デフォルトの場所は次のとおりです。
ZenCC の[ツール]>[Rebuild]の場合:C:\ProgramData\Actian\Zen\logs\rebuild.log
rbldcli の場合:<現在の作業ディレクトリ>\rbldcli.log
rbldcli_offline の場合:<現在の作業ディレクトリ>\rbldcli_offline.log
コマンド ラインによる実行の場合、-lfile パラメーターを使用することで、ログ ファイルにデフォルトの場所ではなく、別の場所と名前を設定することもできます。
記録される情報は、以下のとおりです。
Rebuild ツールの GUI のリファレンス
このトピックでは、Rebuild ツールの各種パネルについて説明します。
ファイル オプション
ZenCC で[ツール]>[Rebuild]を選択すると、Rebuild ウィザードが起動し、データ ファイルまたは辞書ファイルをリストに追加できるパネルが表示されます。
リビルドするファイルのリストを作成したら、[次へ]をクリックして、[リビルド オプション]パネルに進みます。
リビルド オプション
画像上の各項目の領域をクリックすると、ファイルのリビルド方法の各種設定の詳細が表示されます。オプションを選択したら、[次へ]をクリックして、選択したファイルのリビルドを完了します。
Zen Programmer's Guide』のキー属性を参照してください。
たとえば、ページ サイズが 1024 で、24 個のキーを持つ v5.x ファイルがあるとします。Btrieve v6.0 以降のバージョンでは、ページ サイズが 1024 の場合、23 個までのキーのみをサポートするため、ファイルには、ツールによって新しいページ サイズが自動的に割り当てられ、ログ ファイルに通知メッセージが記述されます。
ディスク スペースの最適化については、『Zen Programmer's Guide』のページ サイズの選択を参照してください。
Rebuild ツールの CLI のリファレンス
Rebuild の GUI ではなくコマンド ライン インターフェイスを使用したい場合は、rbldcli を使用します。この実行可能プログラムは、rbldcli.exe(Windows の場合)および rbldcli(Linux ベースのシステムの場合)です。コマンド プロンプトで rbldcli コマンドを実行するか、または、実行可能なバッチ スクリプトとして実行することができます。rbldcli を実行する前に、Rebuild ツールの概念で説明する概念や設定を理解してください。
このセクションの残り部分では、以下の項目について説明します。
コマンド構文
rbldcli コマンドの構文は以下のとおりです。
rbldcli [-parameter ...] file [file] | @cmdFile
parameter には、このツールで使用する設定を指定します。パラメーターはどのような順序でも使用できます。各パラメーターの前にはハイフン(-)を付けます。ハイフンの後、または、1 文字のパラメーターおよびパラメーター値の後にスペースを入れないでください。
次に、rbldcli コマンド ファイルの例を示します。
–c d:\mydir\*.*<end>
–c –p1024 e:
\dir\*.*<end>
–m0 –k0 d:
\db\*.*<end>
パラメーター
次の表は、rbldcli パラメーターの一覧を示します。これらパラメーターの動作は、Rebuild ツールの GUI のリファレンスでの対応する説明と同じですが、追加の情報を提供している場合があります。
-m<0 | 2>
Rebuild 処理の最適化も参照してください。
インデックス ページ サイズも参照してください。
Zen Programmer's Guide』のページ サイズの選択を参照してください。
Rebuild 処理の最適化を参照してください。
-bdirectoryname
directoryname で指定した場所、または ‑b を省略した場合は元のファイルの場所に対して、ファイルを作成するアクセス権が必要です。
rbldcli が動作するには、ローカル データベース エンジンが実行されている必要があります。directoryname がリモート サーバ上の場所である場合は、データベース エンジンもそのリモート サーバー上で実行されている必要があります
メモ:  スタンドアロン ツール rebldcli_offline.exe には、データベース エンジンは必要ありません。それ以外、機能的には元の rbldcli と同じですが、リビルドされたファイルをリモート サーバー上の場所に出力することはできません。
-knumber
Rebuild 処理の最適化も参照してください。
-lfile
ログ ファイルも参照してください。
rbldcli -f9 file_path\class.mkd
rbldcli -f13 file_path\class.mkd
例:データ ファイルに WZSTRING データ型を使用するインデックス フィールドが含まれています。データ ファイルを 6.x 形式にリビルドする場合、WZSTRING データ型は変換されません。このデータ ファイルを Btrieve 6.15 エンジンで使用することはできません。このエンジンは WZSTRING データ型をサポートしません。
例:データ ファイルに NULL が含まれています。データ ファイルを 7.x ファイル形式にリビルドします。真の NULL は保持されます。Zen 7 エンジンは真のヌルをサポートしないので、このデータ ファイルを Zen 7 エンジンで使用することはできません。
-uiduname
-pwdpword
uname で識別されるユーザーのパスワードを設定します。uname が指定された場合、pword は必ず指定する必要があります。
-dbdbname
Rebuild ツールの使用
以下のトピックでは、Rebuild ツールの GUI バージョンとコマンド ライン バージョンについて説明します。
GUI バージョン Rebuild 操作
GUI Rebuild ウィザードを開始するには
Zen Control Center のメニューから[ツール] > [Rebuild]を選択するか、オペレーティング システムの[スタート]メニューまたはアプリ画面から Rebuild にアクセスします。
ファイルをリビルドするには
1.
Rebuild の開始画面で[次へ]をクリックすると、ファイルの選択画面が表示されます。
2.
ファイルを選択するダイアログ ボックスで[追加]をクリックしてリビルドするデータ ファイルまたは辞書ファイルを選択します。複数のファイルを一度に選択することもできます。
元のファイルと同じディレクトリでファイルをリビルドする場合、元のファイルはリビルド完了後に削除されます。新しいファイルを別のディレクトに置く場合は、元のファイルは削除されません。
3.
目的のファイルを追加したら、[次へ]をクリックします。
4.
5.
次へ]をクリックしてリビルド処理を開始します。
Rebuild は処理に関する情報をレポートします。リビルド処理が完了すると、成功か失敗かが表示され[ログ ファイルを表示する]ボタンが有効になります。
6.
結果を表示するには、[ログ ファイルを表示する]をクリックします。ログ ファイルの内容は、オペレーティング システムのデフォルトのテキスト エディターで表示されます。
Rebuild では、変換を試みたすべてのファイルについてログ ファイルに書き込みます。[エラー時続行]の設定を無効にした場合、ログ ファイルには、エラーが発生した時点までの情報が記録されます。リビルドが失敗した場合、ログ ファイルにはそのエラーの原因を説明するメッセージが記録されます。
7.
CLI バージョン Rebuild 操作
Rebuild コマンド ライン ツールの名前は、Windows の場合は rbldcli.exe、Linux および Raspbian の場合は rbldcli です。以下のトピックでは、コマンド ライン構文と典型的な Rebuild 操作について説明します。
Rebuild を Windows で実行するには
1.
2.
状況により、\bin ディレクトリをプログラム ファイルをインストールしたディレクトリに変更します。その場所が Path システム変数に含まれている場合は、この操作は不要です。
3.
rbldcli [–parameter ...] file
または
rbldcli @command_file
parameterfile、および @command_file は、コマンド構文に定義されています。
使い方の例
以下の例はエラー時も処理を続けます。ページ サイズは 4096 バイトに設定され、リビルドされたファイルはサーバー上の別のディレクトリに保存します。
rbldcli -c -p4096 -bc:\dbtemp c:\datafiles\*.mkd
Rebuild を Linux および Raspbian で実行するには
1.
デフォルトでは、ユーティリティを実行するには zen-svc ユーザーとしてログインする必要があります。zen-svc ユーザーにはパスワードがありません。su コマンドを使用することによって root アカウントでのアクセスのみを行うことができます。zen-svc 以外のアカウントからこのユーティリティを使用するには、まず .bash_profile を変更する必要があります。『Getting Started with Zen』の Linux および Raspbian での Zen のアカウント管理を参照してください。
2.
/usr/local/actianzen/bin ディレクトリに移動します。
3.
rbldcli [–parameter ...] file
または
rbldcli @command_file
parameterfile、および @command_file は、コマンド構文に定義されています。
使い方の例
以下の例はエラー時も処理を続けます。ページ サイズは 4096 バイトに設定され、リビルドされたファイルはサーバー上の別のディレクトリに保存します。
rbldcli -c -p4096 -b/usr/local/actianzen/tmp /usr/local/actianzen/data/Demodata/*.mkd
リビルド中のファイルの進行状況を見るには
Rebuild は、ファイルごとに処理されたレコード数を画面上に表示します。1 度に 50 レコードずつ増加します。さらに、Rebuild はこれらの情報をログ ファイルに書き込みます。ログ ファイルを参照してください。