mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); ?>
デフォルトのConfigrationでは、およそ30MB程度のXMLデータを格納することができます。それ以上のサイズのXMLデータを格納する場合は、各データベースファイルの領域拡張が必要となります。ここでは、格納するXMLデータに対して、どのデータベースファイルをどの程度拡張すればよいかを概算する方法についてVer2.9をベースに説明します。
データベースファイルの使用領域は、実際に格納するXMLデータの特性(ユニークなデータの割合、データ長、タグ構造)に影響を受けるため、ここで算出する値はあくまでも格納するXMLデータの特性を想定した上での概算値となります。実際にデータベースを運用する際は、この概算値を元に、定期的にデータベースファイルの使用率を確認し、データベース領域の微調整とデフラグメンテーションを行う必要があります。
Ver3.0では新機能としてデータベース領域のAutoGrowth機能が追加されますので、予めデータベース領域を確保しておく必要がなくなります。
NeoCore XMS Ver2.9では、以下の16種類のデータベースファイルが用意されています。
各ファイルはNeoDatabase.xmlで指定されているLocationに従ったディレクトリに配置されます。
1.で説明したように、16種類のデータベースファイルはそれぞれ格納されるデータが異なります。このため、どのデータベースファイルをどの程度拡張するべきかは、格納するXMLデータの特性に依存することになります。各データベースファイルの領域拡張に関する一般的な指針は、以下のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
<CD ID="1">
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
</CATALOG>
このXMLドキュメントの特性としては、
の2点が挙げられるので、領域拡張が必要となるファイルは次のように推測できます。
上記のデータベースファイルをどの程度拡張するかを算出するには、格納するXMLデータの一部をNeoCore XMSに格納し、各データベースファイルのサイズと使用率を確認します。
各データベースファイルのサイズと使用率は、NeoCore XMS管理コンソールのStatusタブ>NeoCoreXMS Statusの<Strage-Stats>より確認できます。
まず、格納する1,000,000件の100分の1である10,000件のXMLデータを、NeoCore XMSに格納します。
格納後のDataDictionaryのStatus、<Physical>タグと<Percent-Full>タグの値を確認します。
<Physical>10485760</Physical>
<Percent-Full>3.00</Percent-Full>
10,000件のXMLデータでの使用領域は、次のように計算できます。
10485760(バイト)×0.03=314572.8(バイト)・・・(1)
(1)より、1,000,000件のXMLデータを格納するのに必要な領域は、次のように概算できます。
314572.8(バイト)×(1,000,000/10,000)=30(メガバイト)・・・(2)
(2)より、1,000,000件のXMLデータを格納するには、DataDictionaryのサイズを30MB以上にする必要があることが分かります。これはあくまでも概算値ですので、安全のため25%程度の余裕を持たせて、サイズを決定します。
30(メガバイト)×1.25=37.5(メガバイト)
DataDictionaryのサイズはメガバイト単位の整数値で指定する必要があるので、最終的にパラメータ値を38と決定します。その他のファイル(IndexCoreファイルを除く)についても同様に計算することで、1,000,000件のXMLデータを格納するのに必要な領域を概算することができます。
DataIndexCore、TagIndexCore、TagPlusDataIndexCoreの3ファイルについては、サイズの指定がメガバイト単位ではなく格納できるエントリ数を2の累乗の指数で指定するため、計算方法が異なります。上記3ファイルについては、格納後のStatus、<Total-Quanta>タグと<Allocated>タグの値を確認します。
DataIndexCoreのStatusが以下のようであった場合、
<Total-Quanta>262144</Total-Quanta>
<Allocated>7864</Allocated>
<Tatal-Quanta>の値より、現在のパラメータ値は18であることが分かります。
2^18=262144
<Allocated>の値より、現在7864エントリが格納されていることが分かるので、1,000,000件のXMLデータを格納するのに必要なエントリ数は25%の余裕を含めて次のように概算できます。
7864(エントリ)×(1,000,000/10,000)×1.25=983000(エントリ)
これより、2の累乗の指数を求めると、
2^19<983000<2^20
となるので、DataIndexCoreのパラメータ値は20と決定します。
TagIndexCore、TagPlusDataIndexCoreついても同様に計算することで、1,000,000件のXMLデータを格納するのに必要な領域を概算することができます。
▲このページのTOPへ