|
このセクションでは、構築するファイルおよびキー仕様に基づいて新しいファイルを作成する[ファイル情報エディター]に関する一般的な説明を行います。このエディターでは、既存ファイルの情報をロードできるため、既存データ ファイルのファイル仕様やキー仕様の確認に便利です。また、既存ファイルのファイルやキー仕様に基づいた新規ファイルの作成も可能です(コマンド ライン Maintenance ユーティリティである BUTIL の CLONE コマンドと同様)。
注意
同じディレクトリに、ファイル名が同一で拡張子のみが異なるようなファイルを置かないでください。たとえば、同じディレクトリ内のデータ ファイルの 1 つに Invoice.btr、もう 1 つに Invoice.mkd という名前を付けてはいけません。このような制限が設けられているのは、データベース エンジンがさまざまな機能でファイル名のみを使用し、ファイルの拡張子を無視するためです。ファイルの識別にはファイル名のみが使用されるため、ファイルの拡張子だけが異なるファイルは、データベース エンジンでは同一のものであると認識されます。
ファイル情報エディターを開くには、[オプション|情報エディターの表示]をクリックします。
エディターの上部には、以下のボタンが表示されます。
[ファイル情報エディター]の上部の[データ ファイル情報]領域には、以下のコントロールが含まれます。
オーナー ネーム
|
必要に応じて、既存ファイルのオーナー ネームをテキスト ボックスから指定します。
|
バージョン
|
ファイルの全属性を読み込むことができるデータベース エンジンの最も古いバージョンを表します。たとえば、バージョン 9.5 のBtrieve エンジンでファイルを作成し、バージョン 0.5 特有の属性を使用しなかった場合、Maintenance ユーティリティでは、バージョン 9.0 と表示されます。ファイル形式のバージョンについてはファイル バージョンに関する注意を参照してください。
|
総レコード数
|
ファイルのレコード総数を表します。
|
[ファイル情報エディター]の中央部に[ファイル仕様]領域があります。表 54 はこのボックス内のコントロールの説明です。
コントロール
|
説明
|
範囲
|
デフォルト
|
---|---|---|---|
レコード長
|
ファイルの固定長レコードの論理データ レコード長(バイト単位)を設定します。
レコード長およびオーバーヘッドの説明については、『Pervasive PSQL Programmer's Guide』の「レコード長」セクションを参照してください。このマニュアルは、Pervasive PSQL 開発者リファレンスに含まれています。
|
最低 4 バイト。最大値はファイル バージョンによって異なります。指定されたレコード長が、ページ サイズからオーバヘッドを差し引いた数値を超える場合、データベース エンジンは自動的にそのファイル形式で次に使用可能なページ サイズになるよう試行します。レコード長が、最大ページ サイズからオーバーヘッドを差し引いた数値を超える場合、エンジンはレコードの圧縮をオンにします。
|
100
|
ページ サイズ
|
ファイルの物理ページ サイズ(バイト単位)を設定します。
|
512 - 4096:9.0 より前のファイル バージョの場合(512 バイトの倍数で最大 4096 バイト)
512、1024、1536、2048、2560、3072、3584、4096 または 8192:ファイル バージョンが 9.0 の場合
1024、2048、4096、8192 または 16384:ファイル バージョンが 9.5 以上の場合
|
4,096
|
キー数
|
(キー セグメントと対照して)エディターで現在定義されている識別キーの数を表します。キー リストのキーの数が反映されます。
|
0 - 119
|
0
|
セグメント数
|
エディターで現在定義されているキー セグメントの数を表します。セグメント リストのセグメントの数が反映されます。
|
0 - 119:9.5 より前のファイル バージョンの場合。
0 - 420:9.5 以上のファイル バージョンの場合。
リレーショナル インターフェイスのセグメントの数は、すべてのファイル バージョンにおいて、119 個までです。
|
0
|
リンク可能キー
|
将来のリンク重複キーに予約する 8 バイト プレースホルダーの数を設定します。既存データ ファイルの情報をロードしている場合、そのファイルで現在使用可能なプレースホルダーの数がこの数値に反映されます。元から予約してあるプレースホルダーの数は、ファイルに保存されません。
|
0 - 119
|
3
|
キーオンリー
|
ファイルがキー オンリーかどうかを表します。レコードタ圧縮または可変長レコードを有効にした場合、およびファイルに複数のキーを定義した場合は、この設定は使用できません。
|
オンまたはオフ
|
オフ
|
インデックス バランス
|
ファイルにおけるキー ページ管理のインデックス バランスの使用を設定します。
|
オンまたはオフ
|
オフ
|
プリアロケーション
|
ファイルにおけるプリアロケート ページの使用を設定します。
|
オンまたはオフ
|
オフ
|
ページ数
|
ファイル作成時にプリアロケートするページの数を設定します。[プリアロケーション]がオンの場合にのみ設定できます。既存データ ファイルの情報をロードしている場合、そのファイルの未使用の残りプリアロケート ページ数がこの数値に反映されます。元からプリアロケートしてあるページの数は、ファイルに保存されません。
|
1 - 65,535
|
0
|
レコード圧縮
|
ファイルにおけるレコード圧縮の使用を設定します。キー オンリー ファイル、またはブランク トランケーションを使用するファイルには対応していません。レコードおよびページ圧縮も参照してください。
|
オンまたはオフ
|
オフ
|
ページ圧縮
|
ファイルにおけるページ圧縮の使用を設定します。レコードおよびページ圧縮も参照してください。
|
オンまたはオフ
|
オフ
|
可変長レコード
|
ファイルに、可変長レコードを含むことができるかどうかを設定します。
|
オンまたはオフ
|
オフ
|
ブランク トランケーション
|
ディスク領域を確保するために、ファイルが可変長レコードに対してブランク トランケーションを使用するかどうかを設定します。この設定は、可変長レコード有効時のみ可能です。
|
オンまたはオフ
|
オフ
|
VAT
|
ファイルが、長いレコード内のデータへ高速にアクセスするため、可変長部割り当てテーブルを使用するかどうかを設定します。この設定は、可変長レコード有効時のみ可能です。
|
オンまたはオフ
|
オフ
|
% 空きスペース
|
新規可変ページ作成前に、ファイルの可変ページが確保する未使用スペースの量を設定します。この設定は、[レコード圧縮]または[可変長レコード]がオンの場合にのみ設定できます。
|
5、10、20、30
|
5
|
ダイアログ ボックスの左下部には[キー]グループ ボックスがあります。表 55 はこの領域のコントロールの説明です。これらのコントロールは、現在のキー セグメントだけでなく、[キー]リストで選択されているキーに固有です。これらの設定を変更した場合、指定したキーのすべてのセグメントに対して変更が適用されます。
コントロール
|
説明
|
デフォルト
|
---|---|---|
重複可能
|
キーが、重複する値(リンク重複)を持つことができるかどうかを設定します。
重複キーの操作方法を参照してください。
|
オン
|
変更可能
|
キーの値を、作成後に変更できるかどうかを設定します。キー値の変更を許可してもパフォーマンスには影響しません。キー ページは、実際のキー値が変更された場合にのみ更新され、特定のレコードのキー以外のフィールドが変更されても更新されません。
|
オン
|
繰り返し重複
|
重複キー値を格納するのにデータベース エンジンがくり返し重複の手法を使用するよう指定します。
重複キーの操作方法を参照してください。
|
オフ
|
散布キー(ヌル キー)
|
散布キーには、ファイル内にあるレコード数よりも少ない数のキー値が含まれます。インデックスから除外するキー値を指定するには、この次にある 2 つのコントロールを参照してください。この設定は、ヌル可能なセグメントが含まれるキーの場合のみ可能です。
|
オフ
|
全セグメント(ヌル)
|
レコードのすべてのキー セグメントにヌル値が含まれる場合に、そのレコードをインデックスに含まれないよう設定します。この設定は、散布キー(ヌル キー)有効時のみ可能です。キー フラグ 0x0008 に相当します。セグメントがヌルとして評価されるかどうかは、そのフィールドのヌル インジケーター セグメントだけを基に判断されます。そのフィールドの内容は評価されません。
|
オフ
|
一部セグメント
(マニュアル) |
1 つまたは複数のキー セグメントにヌル値が含まれる場合に、そのレコードをインデックスに含めないよう指定します。この設定は、散布キー(ヌル キー)有効時のみ可能です。キー フラグ 0x0200 に相当します。セグメントがヌルとして評価されるかどうかは、そのフィールドのヌル インジケーター セグメントだけを基に判断されます。そのフィールドの内容は評価されません。
|
オフ
|
ACS 情報
|
キーのオルタネート コレーティング シーケンス(ACS)を設定します。この設定は、キーのセグメントに対する[ACS を使用する]チェック ボックスがオンの場合にのみ使用できます。
|
オフ
|
ユニーク値
|
ファイルにある重複しないキー値の数を表します。これは、既存データ ファイルの情報をロードしている場合のみ表示されます。
|
適用外
|
ダイアログ ボックス中央下部の[キー]リストには、ファイルに定義されているキー番号が表示されます。バージョン 6.x 以降のファイルでは、このキー番号が連続した数値である必要はありません。Maintenance ユーティリティでは、選択されたキーの仕様が、ダイアログ ボックス左下部の[キー]ボックスに表示されます。
また、ダイアログ ボックス中央下部の[セグメント]リストには、[キー]リストで選択されたキーに定義されている、キー セグメント番号が表示されます。Maintenance ユーティリティでは、選択されたセグメントの仕様が、ダイアログ ボックス右下部の[セグメント]ボックスに表示されます。
また、[キー]と[セグメント]リストには、以下のボタンが表示されます。
挿入
|
新しいキーまたはセグメントを定義します。
|
削除
|
選択されたキーまたはセグメントの仕様を削除します。
|
圧縮
|
キーの番号を再割り当てします。このボタンは、キー仕様を削除することによって生じたキー番号の不連続をなくすことができます。
|
これらのボタンは、作成するファイルのキー仕様を設定するもので、既存ファイルのキーに対して使用することはできません。既存ファイルのインデックスを作成または削除する場合は、インデックスの作業を参照してください。
ダイアログ ボックスの右下部には[キー セグメント]グループ ボックスがあります。表 56 はこの領域のコントロールの説明です。これらのコントロールは、[セグメント]リストで選択されているセグメントに固有のものです。
複数のレコードが、インデックス キーに同一の重複した値を持つことができます。重複キー値を持つレコードを記憶しておく 2 つの方法は、リンク重複および繰り返し重複と呼びます。
リンク重複の手法では連鎖技術を使用し、グループ内の各レコードをポインターを使用して隣のレコードと連結します。同一インデックス ページ上の各エントリは 1 組のレコード ポインターを持ち、キー値が重複しているレコードの連鎖の最初と最後のリンクを示します。このため、各キー ページのエントリは繰り返し重複インデックスより 4 バイト長くなります。さらに、データ ページの各レコードでは、リンク重複インデックスごとに 8 バイトのオーバーヘッドが必要です。この 8 バイトは、連鎖中の次のレコードと前のレコードを指す 2 つのレコード ポインターです。
最初のレコード ポインターは、最初に、または最も古い時期に格納されたレコードのアドレスを保持します。2 番目のポインターは最近または最後に格納されたレコードのアドレスを保持します。最初のレコードが書き込まれた後でほかのレコードが追加される前には、キー ページ エントリ上の両方のポインターに最初のレコードのアドレスが保持されています。その後にレコードが追加されると、2 番目のポインターが追加された各レコードを指すように変更されます。このことにより、最後のレコードのレコード ポインターが、レコードの追加時にデータ ページ内に構築される前のレコードの連鎖のリンクとして使用されること、および前のレコードの検索に使用されることが可能になります。
繰り返し重複の手法では、各重複キー値はインデックス ページとデータ ページ上のレコード内の両方に格納されます。各キー値には、レコード ポインターが 2 つではなく 1 つだけあります。この手法ではデータ レコードの連鎖が不要で、レコードごとの 8 バイトのオーバーヘッドを節約します。キー値が重複レコードごとに繰り返されるため、インデックスのサイズが大きくなるという影響があります。
リンク重複および繰り返し重複の手法は、以下の基準によって比較することができます。
リンク重複インデックスは、データが追加された順序で重複を取得します。繰り返し重複インデックスは、データがファイル内に存在する順序で重複を取得します。ファイル内での位置は制御できないため、順序はランダムであると考える必要があります。
リンク重複インデックスでは、各重複キー値の最初の出現で 12 バイト余分に必要になります。これには、各レコードについての 8 バイトとキー ページ エントリとしての 4 バイトが含まれます。ただし、重複レコードはキー ページでこれ以外の余計な空間を必要とせず、レコードごとに 8 バイトが追加されるだけです。したがって、キー値ごとの重複の数が増加してキー値のサイズが増加しても、リンク重複インデックスはキー ページが使用するストレージ空間を著しく節約することができます。ただし、重複キーを持つレコードがほとんどファイルに格納されていないか、キー長が非常に短い、またはその両方に該当する場合は、使用するストレージ空間は増加します。
次の図で、リンク重複インデックスの使用によって節約されるストレージ空間の量を例示します。リンク重複インデックスは、キー値ごとの重複レコード数が少ない場合にはより多くの空間を必要とするので注意してください。しかし、キー値ごとの重複レコード数が増えるにつれ、リンク重複インデックスが必要とするページ数は少なくなり、ストレージ空間を著しく節約します。
インデックス検索に関わるページが少ない場合、ディスクから読み込むページ数が少なくなるため、結果として速いパフォーマンスが得られます。リンク重複手法は一般的に少しの物理ストレージ空間しか使用しないため、速いパフォーマンスが得られます。繰り返し重複手法は、重複のあるキー数が少ない場合にのみパフォーマンスでの利点があります。
データベース エンジンは、複数の並行トランザクションが同一ファイルに対し同時にアクティブである場合に、ページ レベルの並行性を提供します。これは、キー ページへのほとんどの変更と、データ ページへのすべての変更に適用されます。並行性とは、同一ページが別個のトランザクションからの複数の保留中の変更を同時に持つことができることを意味します。また、これらのトランザクションはどのような順序でもコミットすることができます。繰り返し重複インデックスはこの並行性を最もよく利用しています。
リンク重複インデックスでは、繰り返し重複には存在しない並行性の制限が追加されます。新しい重複データが作成された場合、そのレコードはリストの最後で別のレコードにリンクされます。このレコードのリンクにより、1 つではなく 2 つのレコードがロックされることになります。すべての重複データはリンク レコードの連鎖の最後に追加されるため、重複は一度に 1 つしか追加できません。
このようなレコード ロックの衝突により、通常、ほかのクライアントは最初のトランザクションがコミットされるまで待機状態になります。並行動作が行われる環境では、すべての新規レコードが同じ重複値を使用する場合、並行性は事実上一度に 1 トランザクションというレベルまで低減します。さらに、トランザクションが大きいかまたは長く継続する場合、この連続状態がパフォーマンスに非常に大きく影響します。
並行環境で更新されるデータベースに繰り返し重複インデックスを使用した場合、パフォーマンスは一般的に向上します。したがって、リンク重複手法を使用せざるを得ない理由がある場合を除き、並行環境で更新されるデータベースには繰り返し重複インデックスを使用してください。
ファイル情報エディターを使用して次の作業を行うことができます。
既存ファイルから情報をロードした場合、既存ファイルを編集するわけではありません。既存ファイルに関する情報のコピーのみがロードされます。一般的に、ファイル情報エディターでほかの作業をする前にファイルをロードしますが、これは必須ではありません。
既存データ ファイルからファイル情報エディターに情報をロードするには
ファイル情報エディターで、現在の情報または入力した新しい情報に基づいた新規ファイルを作成することができます。
ファイル情報エディターの現在の情報に基づいて新規ファイルを作成するには
コントロール
|
説明
|
デフォルト
|
---|---|---|
ファイル名
|
ファイルの名前とパスを指定します。デフォルトでは、データ ファイルの拡張子は .mkd になっています。
|
適用外
|
ファイルの種類
|
作成するファイルの種類を指定します。ディスクリプション ファイルを作成する場合は、[インデックス オンリー]オプションを使用して、BUTIL ユーティリティで既存データ ファイルへのインデックス追加に使用できるディスクリプション ファイルを作成できます。詳細は、インデックスの作成を参照してください。
|
MicroKernel 互換
|
システム データ
|
ファイルにシステム データを含むかどうかを設定します。[エンジン設定を使用]を選択した場合は、[システム データ]設定オプションの設定が適用されます。[システム データなし]を選択した場合、エンジンの設定にかかわらず、システム データは作成されません。[システム データを強要]を選択した場合は、エンジンの設定にかかわらず、システム データが作成されます。
この設定は、ファイルの種類が[MicroKernel 互換]の場合にのみ有効になります。 |
エンジン設定を使用
|
コメントは、ディスクリプション ファイルを作成したときに、その先頭に出力されます。たとえば、コメント「これは私のファイルです」はディスクリプション ファイルの先頭に /* これは私のファイルです*/
と表示されます。ディスクリプション ファイル作成後にコメントを追加する場合は、コメントを追加してファイルを作成し直す必要があります。
ディスクリプション ファイルにコメントを追加するには
未使用スペースを除去することにより Btrieve データ ファイルのコンパクト化を行うことができ、通常ファイルのサイズを小さくすることができます。この処理は、コマンドライン Maintenance ユーティリティ(Btrieve データ ファイルをコンパクト化するにはを参照)を使用して実行することもできます。
Btrieve ファイルをコンパクト化するには
オルタネート コレーティング シーケンス(ACS)を使用して、文字型のキー(STRING、LSTRING および ZSTRING)を標準 ASCII コレーティング シーケンスとは異なる順序でソートすることができます。1 つまたは複数の ACS を使用して、次のようにキーをソートすることができます。
ファイルには、キーごとに異なる ACS を持つことができますが、1 つのキーには 1 つの ACS のみです。したがって、キーがセグメント化されている場合、各セグメントはそのキーに指定された ACS を使用するか、または ACS をまったく使用しないかのいずれかになります。あるファイルに、一部のセグメントにだけ ACS が指定されているキーがある場合、Btrieve は指定されたセグメントのみ、ACS を使用してソートします。
ISR テーブルは ISO の標準ロケール テーブルに基づいており、Pervasive PSQL によって提供されます。ISR テーブルは Pervasive PSQL のデータベース エンジンと一緒にインストールされた COLLATE.CFG ファイルに格納されています。複数のデータ ファイルが 1 つの ISR を共有できます。
キーのオルタネート コレーティング シーケンスを設定するには
|