IBM FileNet P8, バージョン 5.2.1            

データベース・エンジンによる差異

多くの場合、オブジェクト・ストアの構築に使用するデータベース・エンジン (IBM® DB2®、Microsoft SQL Server、または Oracle) を意識する必要はありませんが、各データベース・エンジンが空の文字列やデータベース・テーブルを扱う方法について、相違点がいくつかあります。

空の文字列

各種のデータベース・エンジンは、空の文字列 (長さが 0 の文字列) を次のように扱います。

  • DB2: 長さが 0 の文字列オブジェクト。
  • SQL Server: 長さが 0 の文字列オブジェクト。
  • Oracle: Null。Oracle では空の文字列が null として扱われるため、文字列値プロパティー (単一値と複数値の両方) に空の文字列 ("") を設定しないようにします。これらのプロパティーの中には、ドキュメントの DocumentTitle プロパティーや文字列型選択リストの選択アイテムの ChoiceStringValue プロパティーも含まれます。Oracle データベースを使用しているに、このようなプロパティー値に空の文字列を設定すると、「null 値を使用できない (A null value cannot be used)」例外が頻繁に発生することがあります。さらに、プロパティー値が null かどうかを明確にテストせずに、1 つ以上の空の文字列をプロパティー値に持つオブジェクトを照会すると、予期しない結果が返されることがあります。予期しない結果や例外の発生を防止するため、Oracle データベースを使用する場合、空の文字列は使用しないでください。

データベース・テーブル

各種のデータベース・エンジンにより使用されるデータベース・テーブルには、次のような構成上の差異があります。

  • テーブルの行サイズの制限:
    • DB2: 行サイズの制限は、定義されているテーブル領域のページ・サイズによって次のように変わります。
      • テーブル領域のページ・サイズが 8 KB の場合: 行サイズの制限は 8101 バイト。
      • テーブル領域のページ・サイズが 16 KB の場合: 行サイズの制限は 16293 バイト。
      • テーブル領域のページ・サイズが 32 KB の場合: 行サイズの制限は 32677 バイト。

      DB2 の場合、列をテーブルに追加する際には、行サイズの制限が適用され、既存の各列の最大サイズの合計に、新規列の最大サイズを加えたものが、表スペースのページ・サイズから定義される行サイズの制限値を下回る場合のみ、列の追加が許可されます。Content Platform Engine は、テーブルを共有するクラスのファミリー内の任意のクラスに、個別の新しいプロパティーが追加されるたびに、テーブルに列を追加します。例えば、Document クラスのすべてのサブクラスは DocVersion テーブルを共有します。このため、行サイズの制限は、ファミリー内のクラスのクラス定義で定義された別個のプロパティー (システムとカスタムの両方) の合計数に適用されます。多くのクラスには既にかなりの数のシステム・プロパティーが設定されているため、テーブル領域のページ・サイズを 32 KB に設定することをお勧めします。

      注: 変更の始まりDB2 for Linux, UNIX and Windows バージョン 10.1 以前および DB2 for z/OS® では、テーブルの行サイズの制限は 32 KB です。32 KB の行サイズ制限に対処するために、Content Platform Engine は、オブジェクト・ストアで有効にすることができるテーブル・オーバーフロー・サポート機能を提供します。これにより、基本の DB2 テーブルの 32 KB の行サイズ制限を超過した場合に、オーバーフロー・テーブルが作成されます。この機能は、新規の列の長さと既存の列の長さの合計が 32 KB (オーバーヘッドを減算する) を超えたとき、新規クラス・プロパティーの列をオーバーフロー・テーブルに追加します。このサポートを有効にすると、DB2 照会による影響が出る可能性があります。
      変更の始まりDB2 for Linux, UNIX and Windows バージョン 10.5 以降はデフォルトで拡張行サイズをサポートしているので、オブジェクト・ストアでテーブル・オーバーフロー・サポートを有効にする必要はありません。しかし、DB2 for Linux, UNIX and Windows バージョン 10.5 より前のリリースからバージョン 10.5 以降にアップグレードされたデータベースの場合、以下のコマンドを実行して、拡張行サイズ・サポートを有効にしなければなりません。
      UPDATE DATABASE CONFIGURATION FOR dbName USING EXTENDED_ROW_SZ ENAB
      変更の終わり
      変更の終わり
    • SQL Server: 行サイズの制限は 8060 バイトです。行サイズの制限は、指定された行で実際に使用されているデータに基づくため、これは、特定のクラスからインスタンス化されたオブジェクトに設定できる null 以外のプロパティー値の数 (およびそれらの値のサイズ) を制限します。
    • Oracle: 行サイズの制限は定義されていません。
  • LocalizedString テーブル (LocalizedString オブジェクトの LocalizedText プロパティーの値を格納):
    • SQL Server: LocalizedText プロパティーの理論的な最大長は Unicode で 4000 文字分ですが、実際の最大長は、SQL Server データベース・テーブルの長さ制限により、3980 文字から 3995 文字の間になります。LocalizedString テーブルには、固定長の列に加えて、可変長の Unicode データを格納する列が 2 つあります。1 つは LocaleName プロパティーの値を格納する locale_name、もう 1 つは LocalizedText プロパティーの値を格納する text です。SQL Server には行あたり 8060 バイトのみが許容され、テーブル内の固定長の列が記憶領域の 68 バイトを必要とするため、locale_name と text の両方の列を合計したサイズは、7992 バイト (Unicode で 3996 文字分) を超えることはできません。したがって、LocalizedText プロパティーに許容される具体的な長さは、LocaleName プロパティーの長さ (Unicode で 16 文字以内) に応じて決まります。例えば、あるオブジェクトの LocaleName プロパティーが 10 文字であれば、LocalizedText プロパティーには 3986 文字 (3996 - 10) まで保持できます。
    • Oracle: LocalizedText プロパティーに許容される最大長は 1333 文字です。
  • 短い文字列型のテーブル列 (UsesLongColumn property = false) には、データベースの種類に応じて、次の特性があります。
    • DB2
      • データ型: vargraphic
      • 最大文字長: 4000
      • 照会: 一般的な演算子 (>、< など) を使用して照会可能。プロパティーに対して CBR 索引付けが有効な場合、CONTAINS などの全文検索関数を使用した照会も可能。
      • 索引処理: 文字列型の列をデータベース構成で決定されるサイズまで、データベース索引で指定可能。照会応答速度が向上される。
      • 有効サイズ: 行サイズの制限値から、文字列値の文字数の 2 倍のバイト数を使用。
    • SQL Server
      • データ型: nvarchar
      • 最大文字長: 4000
      • 照会: 一般的な演算子 (>、< など) を使用して照会可能。プロパティーに対して CBR 索引付けが有効な場合、CONTAINS などの全文検索関数を使用して列の照会も可能。
      • 索引処理: 900 バイトまでの文字列型の列 (サイズ) を、データベース索引で指定可能。照会応答速度が向上される。
      • 有効サイズ: 行サイズの制限値から、文字列値の文字数の 2 倍のバイト数を使用。
    • Oracle
      • データ型: varchar2
      • 最大文字長: 1333
      • 照会: 一般的な演算子 (>、< など) を使用して照会可能。プロパティーに対して CBR 索引付けが有効な場合、CONTAINS などの全文検索関数を使用した照会も可能。
      • 索引処理: 文字列型の列をデータベース構成で決定されるサイズまで、データベース索引で指定可能。照会応答速度が向上される。
  • 長い文字列型のテーブル列 (UsesLongColumn property = true) には、データベースの種類に応じて、次の特性があります。
    • DB2
      • データ型: dbclob
      • 最大文字長: 536,870,912
      • 照会: 演算子は LIKE と IS (NOT) NULL のみを使用して照会可能。プロパティーに対して CBR 索引付けが有効な場合、CONTAINS などの全文検索関数を使用した照会も可能。
      • 索引処理: データベース索引での指定不可。
      • 有効サイズ: 各ラージ・オブジェクト (LOB) 値は、テーブル・レコードの外部の別個のデータベース・ストアに格納。テーブル行には各 LOB ごとに LOB 記述子があり、外部に格納された LOB データ・アクセス用の制御情報が含まれます。LOB 列の最大サイズは、列内の LOB 記述子の最大サイズを決定するため、単一の行に配置できる列の数にも影響を及ぼします。列の最大サイズによって、行の LOB 記述子に使われる容量は、およそ 60 バイトから 300 バイトの間になります。
    • SQL Server
      • データ型: ntext
      • 最大文字長: 1,073,741,823
      • 照会: 演算子は LIKE と IS (NOT) NULL のみを使用して照会可能。プロパティーに対して CBR 索引付けが有効な場合、CONTAINS などの全文検索関数を使用した照会も可能。
      • 索引処理: データベース索引での指定不可。
      • 有効サイズ: 文字列値の長さに関係なく、行サイズの制限値から 4 バイトのみを使用。したがって、文字列値プロパティーが限られた照会要件で済む場合、特に最大長が長い列を必要としなくても、長データベース列として格納する方が記憶領域の点でメリットがあります。
    • Oracle
      • データ型: clob
      • 最大文字長: 1,073,741,823
      • 照会: 演算子は LIKE と IS (NOT) NULL のみを使用して照会可能。プロパティーに対して CBR 索引付けが有効な場合、CONTAINS などの全文検索関数を使用した照会も可能。
      • 索引処理: データベース索引での指定不可。
  • データベースのラージ・オブジェクト (LOB) の列サイズは、行内に格納するデータ量 (インライン・サイズと呼びます) の構成に影響されます。バイナリー LOB (BLOB) および文字 LOB (CLOB) データは、テーブル内に残りの列と一緒にインラインで格納されることもあれば、データベース内で別の LOB 格納場所 (別のテーブル領域内に指定される場合もあります) に行外で格納されることもあります。LOB 列のデータは、データがその列のデータベース・インライン・サイズを超える場合、行外の LOB 格納場所に格納されます。
    • Oracle では、デフォルトのインライン・サイズは 4000 バイトです。
    • DB2 9.7 以上では、LOB は LOB 記述子サイズを上限に自動的にインライン格納されます。
    • SQL Server では、一部の Content Engine 列は、オブジェクト・ストアの作成時にインライン・サイズを使用して指定されます。

    インライン・サイズの設定は、データベースのリリース・バージョンと Content Platform Engine のリリース・バージョンの両方によって変わります。

    文字列データ型は、常にインラインに格納されます。ただし、それらが長い文字列型のテーブル列として定義されるユーザー定義プロパティーに対応する場合は例外です。これらの列の値は、データベース・リリースにおけるインライン格納の動作次第で、プライマリー行の外部、すなわち行外の別の LOB 格納場所に格納されます。

  • Content Engine 倍精度 (float64) データ型として指定されている数値データのデータベース・テーブルへの格納方法は、データベースのタイプによって異なります。
    • DB2: 数値データは DB2 倍精度 (8 バイト) データ型として格納されます。この数値の範囲は -1.7976931348623158E+308 から -2.2250738585072014E-308、0、2.2250738585072014E-308 から 1.7976931348623158E+308 です。
    • SQL Server: 数値データは、SQL Server 浮動小数点 (8 バイト) データ型 (15 桁の精度) として格納されます。この数値の範囲は、- 1.79E+308 から -2.23E-308、0、2.23E-308 から 1.79E+308 です。
    • Oracle: 数値データは Oracle NUMBER データ型 (38 桁の精度) として格納されます。この数値は、正数、負数、または 0 です。この数値の範囲は 1 x 10E-130 から 9.99...9 x 10E125 です。


最終更新日: 2015 年 10 月
database_engine_differences.htm

© Copyright IBM Corp. 2015.