(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-26
(54)【発明の名称】データベースのエンティティのメンバーに関連付けられたデータを格納する方法
(51)【国際特許分類】
G06F 16/28 20190101AFI20240719BHJP
【FI】
G06F16/28
【審査請求】有
【予備審査請求】有
(21)【出願番号】P 2024505528
(86)(22)【出願日】2021-07-29
(85)【翻訳文提出日】2024-01-29
(86)【国際出願番号】 IB2021056919
(87)【国際公開番号】W WO2023007225
(87)【国際公開日】2023-02-02
(81)【指定国・地域】
(71)【出願人】
【識別番号】524038233
【氏名又は名称】ナツカ エスエー
【氏名又は名称原語表記】NATZKA SA
(71)【出願人】
【識別番号】524038244
【氏名又は名称】ロージ フランコ
【氏名又は名称原語表記】ROSI, Franco
(74)【代理人】
【識別番号】100176072
【氏名又は名称】小林 功
(72)【発明者】
【氏名】ロージ フランコ
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA03
(57)【要約】
データをデータ構造に編成し、それらの構造内のデータにアクセスするための方法について説明する。表形式の構造から始めて、各行を第1および第2のマクロ番号として符号化し、構成構造に格納する。プリマッピングをデータ構造から取り込み、第2のマクロ番号を、数Kの第2の番号を有するセグメントiを有するプリマッピング構造に繰り返しなしで格納する。第1のマクロ番号から第2のマクロ番号への参照関数も、K個のビットを有するビットマップを介して実装され、ビットマップiは、構成構造内の第1のマクロ番号が第2のマクロ番号も含む行にあり、第2のマクロ番号がプレマッピング構造内のセグメントi内にある場合にのみ、第1のマクロ番号に対して割り当てられる。また、上記構造に格納されているデータにアクセスする方法についても説明する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
構造(CONF、PRE、MAP)にデータを格納し、前記構造(CONF、PRE、MAP)内のデータへのアクセスを編成するために電子的方法により実施する方法であって、
データベース表の行と列に最初に格納されたデータは、行ごとに、前記行内の第1のサブセットのメンバーと、前記行内の第2のサブセットのメンバーとに編成され、
前記行内の前記第1のサブセットのメンバーは第1のマクロ番号(M1)として符号化され、前記行内の前記第2のサブセットのメンバーは第2のマクロ番号(M2)として符号化され、
値(VAL)として定義されている前記行のメンバーは符号化されず、
前記第1のマクロ番号(M1)と前記第2のマクロ番号(M2)とは、前記第1のマクロ番号(M1)、前記第2のマクロ番号(M2)、および前記値(VAL)が関連付けて格納されている構成構造(CONF)に格納され、
前記構成構造(CONF)は、データプリマッピングを実行するために使用され、
前記第2のマクロ番号(M2)は、繰り返しなしでプリマッピング構造(PRE)に格納され、前記プリマッピング構造(PRE)はセグメントSi(i =0、…、n)に分割され、各セグメントSiは設定数Kの第2のマクロ番号(M2)を含み、
前記第1のマクロ番号(M1)のそれぞれはビットマップ(MAP)を指すことができ、各ビットマップ(MAP)は、前記第2のマクロ番号(M2)の前記セグメントSi内の前記設定数Kの第2のマクロ番号(M2)に対応する設定数Kのビットを含み、
前記ビットマップ(MAP)は、前記構成構造CONF内の前記第1のマクロ番号(M1)に関連付けられた前記第2のマクロ番号(M2)の前記セグメントSi内の位置を追跡するために使用され、
ビットマップ(MAPi)は、前記構造(CONF)内の第1のマクロ番号(M1)が前記第2のマクロ番号(M2)に関連付けて格納され、前記第2のマクロ番号(M2)が前記プリマッピング構造(PRE)のセグメントi内にある場合にのみ、前記第1のマクロ番号(M1)によって指されるように割り当てられ、この場合、前記ビットマップ(MAPi)の位置k(k = 0、…、 K)の前記ビットは、前記第1のマクロ番号(M1)に関連付けられた前記第2のマクロ番号(M2)のセグメントSi内の位置kを示すように設定され、前記第1のマクロ番号(M1)と前記第2のマクロ番号(M2)とに関連付けられた前記値(VAL)は、前記ビットマップ(MAPi)に関連付けて格納され、
前記値(VAL)は前記ビットマップ(MAPi)に格納される、方法。
【請求項2】
前記第1のマクロ番号(M1)と前記第2のマクロ番号(M2)とが、前記構成構造(CONF)に格納され、前記第1のマクロ番号(M1)、前記第2のマクロ番号(M2)、および前記値(VAL)は、前記構成構造(CONF)の同じ行で、前記行の別々の列にある、請求項1に記載の方法。
【請求項3】
前記ビットマップ(MAPi)は、前記構造(CONF)内の前記第1のマクロ番号(M1)が、前記第2のマクロ番号(M2)も含む行にある場合にのみ、前記第1のマクロ番号(M1)によって指されるように割り当てられている、請求項1に記載の方法。
【請求項4】
前記ビットマップ(MAPi)内の前記値(VAL)が連続して格納され、K個の設定位置に記憶領域を提供または割り当てる必要がない、請求項1に記載の方法。
【請求項5】
請求項1から4により編成されたデータ構造をクエリする方法であって、
第2のマクロ番号(M2)内で符号化されたメンバー(SUB2)と、第1のマクロ番号(M1)内で符号化されたメンバー(SUB1)とに関連付けられた前記値(VAL)を決定するフェーズと、
前記構造(PRE)内の前記第2のマクロ番号(M2)内の前記メンバー(SUB2)を検索し、前記メンバー(SUB2)を含む前記第2のマクロ番号(M2)を含むすべてのセグメントSiを特定するフェーズと、
決定されたセグメントのインデックスiを介して、前記メンバー(SUB1)を含む前記第1のマクロ番号(M1)が指す前記ビットマップ(MAPi)のみにアクセスするフェーズと、
クエリ結果に従って、前記ビットマップ(MAPi)内の前記値(VAL)を読み込むフェーズと、を含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベース内で定義されたエンティティの複数のメンバーに各値が関連付けられたデータを格納する方法に関する。
【0002】
また、本発明は格納されたデータにアクセスする方法に関する。
【0003】
さらに、本発明は、電子的な、特にコンピュータ化された手段によって前述のデータを格納し、アクセスするためのシステムに関する。
【背景技術】
【0004】
データベース内の各エンティティのメンバーに関連付けられたデータを格納するための方法が既に知られている。例えば、データベースが表で構成されるリレーショナルデータベースである場合がある。各表は多数の行を格納するように設定されており、各行は一意のIDに関連付けられる。また、各表Aには、1つ以上の列が含まれ、それぞれが特定のエンティティに関連付けられている。
【0005】
例を挙げて、理解しやすくするために、データベース内に単純な表Aを考えてみる。この表には、3つの列が含まれてよく、それぞれ、「月」、「顧客」、および「商品」のエンティティに関連付けられている。
【0006】
この例に限定されるものではなく、データベース内の表Bでは、より多くの列が入力され、「月(Month)」、「法人アカウント(Corporate Account)」、「企業(Company)」、「コストセンター(Cost Center)」、「管理(Controlling)」、「アクティビティ(Activity)」、「商品(Product)」、「宛先(Destination)」、「発送元(Source)」、「シナリオ(Scenario)」、「バージョン(Version)」、「ライン品目(Line Item)」のエンティティが含まれている場合がある。従って、この2つ目の例では、表Bには12のエンティティが含まれている。
【0007】
表Aまたは表B内の行は、ある列のエンティティごとにメンバーを格納するように設定されている。つまり、表Aの行には、例えば、id1などのIDが格納され、「1月」、「顧客A」、「商品100」というメンバーが含まれる。次の例のように、当然ながら表Aには多数の行を格納することができる。
【0008】
表A
id1、「1月(January)」、「顧客(Customer)A」、「商品(Product)100」、10
id2、「1月」、「顧客B」、「商品101」、12
id3、「1月」、「顧客A」、「商品102」、20
id4、「1月」、「顧客A」、「商品103」、22
id5、「1月」、「顧客B」、「商品100」、21
id6、「2月」、「顧客A」、「商品100」、20
id7、「2月」、「顧客A」、「商品101」、10
id8、「1月」、「顧客A」、「商品106」、20
【0009】
「商品」の後の上記の数値が、例えば、表Aの4番目の列に格納され、顧客Xが特定の月に購入した商品の数量を表している。idxは各行の一意のIDを表しており、簡略化のために数字ではなく英数字のみで表示されている。
【0010】
引き続き例を挙げると、表Bには次のような行(IDから始まる各行)を含めることができる。
【0011】
Id1、「1月(January)」、「法人アカウント(Corporate Account)1」、「企業(Company)A」、「コストセンター(Cost Center)1」、「CTR1の管理(ControllingCTR1)」、「アクティビティ(Activity)ACT1」、「商品(Product)100」、「宛先(Destination)DEST1」、「発送元(Source)SRC」、「シナリオ(Scenario)SNR」、「バージョン(Version)1.0」、「ラインアイテム(Line Item)LINE1」、10
【0012】
Id2、「1月」、「法人アカウント1」、「企業A」、「コストセンター2」、「CTR1の制御」、「アクティビティACT1」、「商品200」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン1.0」、「ラインアイテムLINE1」、12
【0013】
Id3、「1月」、「法人アカウント2」、「企業A」、「コストセンター3」、「CTR1の制御」、「アクティビティACT1」、「商品200」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン2.0」、「ラインアイテムLINE1」、20
【0014】
Id4、「1月」、「法人アカウント2」、「企業A」、「コストセンター3」、「CTR1の制御」、「アクティビティACT1」、「商品200」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン2.0」、「ラインアイテムLINE2」、50
【0015】
Id5、「1月」、「法人アカウント1」、「企業A」、「コストセンター3」、「CTR2の制御」、「アクティビティACT1」、「商品100」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン2.0」、「ラインアイテムLINE2」、30
【0016】
Id6、「2月」、「法人アカウント1」、「企業A」、「コストセンター3」、「CTR2の制御」、「アクティビティACT1」、「商品100」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン1.0」、「ラインアイテムLINE2」、70
【0017】
Id7、「2月」、「法人アカウント1」、「企業A」、「コストセンター3」、「CTR2の制御」、「アクティビティACT1」、「商品200」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン1.0」、「ラインアイテムLINE2」、25
【0018】
Id8、「2月」、「法人アカウント1」、「企業A」、「コストセンター3」、「CTR2の制御」、「アクティビティACT1」、「商品200」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン2.0」、「ラインアイテムLINE2」、7
【0019】
上記のデータ構造は、取引システムにおいても通常発生するように、ある行へのアクセスが必要な場合に非常に効率的となる。しかし、1つの行だけでなく複数の行へのアクセスが必要なビジネスインテリジェンスシステムの場合と同様に、バルククエリを必要とするアプリケーションにおいては多くの欠点がある。前述のデータ構造および対応する管理システムもまた、支障をきたす。なぜなら、その正しい運用は、新しい記録(行)を格納した結果として、その表のインデックスが再作成されることに依存するからである。
【0020】
致命的な状況の例としては、表Bが、上記の8つの行の前後、またはその間に配置された数十億行(またはそれ以上)を含んでおり、表Bにクエリを実行することに、単に1つの行またはサブセットの行を抽出することが含まれる場合である。例えば、クエリを実行して、単純な表Aでは、顧客Aが1月に購入した商品100の個数を確認することを、あるいは、より複雑な表Bでは、シナリオSNRにおける、宛先DEST1と発送元SRCを使用して、A社が商品Aのバージョン2.0を購入した個数を確認することを、問い合わせることができる。
【0021】
上記の例では、このクエリは応答時間が長くなり、高いハードウェアリリソースが必要であり、これは決して無視できるものではない。
【0022】
本発明の根本的な技術的課題は、これまでの既知のシステムや方法に影響を与えてきた問題を基本的に克服し、記憶領域と時間、応答時間の面において、より効率的なデータ格納方法およびデータアクセス方法を考案することである。
【発明の概要】
【0023】
詳述せずに要約すると(説明は後述する)、本発明の背後にある考えは、リレーショナルシステムに典型的に見られる既知の表形式の構造から始めて、各行を第1および第2のマクロ番号として符号化し、これらのマクロ番号を構成構造(CONF)に格納するデータ編成方法を作成することである。次に、構成構造からプリマッピングを取り込み、第2のマクロ番号を、セグメントSiを有するプリマッピング構造(PRE)に繰り返しなしで格納する。各セグメントSiは、数Kの第2のマクロ番号を有する。第1のマクロ番号は、K個のビットを有するビットマップMAPを介して第2のマクロ番号を指す。これにより、構成構造(CONF)内の第1のマクロ番号が第2のマクロ番号と関連して格納されている場合にのみ、ビットマップMAPiが第1のマクロ番号に割り当てられる。第2のマクロ番号は、プリマッピング構造(PRE)のセグメントSiにある。
【0024】
前述のように、この方法については、特に構成フェーズとプリマッピングフェーズに関連して、以下で詳しく説明する。
【0025】
リレーショナルシステム内の表の行と列に格納されたデータは、本発明の方法に従って、ある行内の第1のサブセットのメンバーとその行内の第2のサブセットのメンバーとに編成される。
【0026】
その行内の第1のサブセットのメンバーは第1のマクロ番号M1として符号化され、その行内の第2のサブセットのメンバーは第2のマクロ番号M2として符号化される。
【0027】
その行内にあるメンバーは符号化されず、値VALとして以下に示される。
【0028】
第1のマクロ番号M1と第2のマクロ番号M2とは、構成構造とも呼ばれる行構造CONFに格納される。各行には、第1のマクロ番号M1、第2のマクロ番号M2、および値VALが含まれる。
【0029】
構成構造CONFは、(第1のマクロ番号と第2のマクロ番号の)データプリマッピングに以下のとおり使用される。
【0030】
第2のマクロ番号M2は、繰り返しなしでプリマッピング構造PREに格納される。プリマッピング構造PREはセグメントSi(i=0、…、n)に分割され、各セグメントは設定数K(例えば2400)の第2のマクロ番号M2を含む。
【0031】
第1のマクロ番号M1のそれぞれはビットマップMAPを指すことができ、各ビットマップMAPは、第2のマクロ番号M2のセグメントSi内の設定数Kの第2のマクロ番号M2に対応する設定数Kのビットを含む。
【0032】
ビットマップMAPは、構成構造CONF内の第1のマクロ番号M1に関連付けられた第2のマクロ番号M2のセグメントSi内の位置を追跡するために使用される。
【0033】
ビットマップMAPiは、構成構造CONF内の第1のマクロ番号M1が第2のマクロ番号M2と関連して格納され、第2のマクロ番号M2が、プリマッピング構造PREのセグメントSi内にある場合にのみ、第1のマクロ番号M1がそれを指すように割り当てられる。以下の説明に例を示す。
【0034】
この場合、ビットマップMAPiの位置k(k=0、…、K)のビットは、第1のマクロ番号M1に関連付けられた第2のマクロ番号M2のセグメントSi内の位置kを示すように設定される。
【0035】
さらに、第1のマクロ番号M1と第2のマクロ番号M2とに関連付けられた値VALは、ビットマップMAPiに関連付けて格納される。
【0036】
ビットマップMAPiの値VALは連続して格納され、K個の設定位置に記憶領域を提供または割り当てる必要がない。これにより、第1のマクロ番号M1がビットマップMAPを指した状態で、繰り返しなしで第2のマクロ番号M2のセグメントSiに分割されたプリマッピングデータ構造PREを指定し、ただし第1のマクロ番号M1に対するビットマップMAPiは、上記で概説した特定の条件でのみ、割り当てられる。
【0037】
このように編成されたデータ構造をクエリするための方法は以下のとおりである。
【0038】
クエリでは、例えば、第2のマクロ番号M2内に符号化されたメンバーSUB2と、第1のマクロ番号M1内に符号化されたメンバーSUB1に関連付けられた、特定の条件を満たす値VALを決定することが含まれる。このメンバーSUB2は、最初の表形式構造の1つ以上のメンバーの符号化である。
【0039】
この場合、プリマッピング構造PRE内の第2のマクロ番号M2内の番号SUB2の検索が実行され、番号SUB2を含む第2のマクロ番号M2を含むすべてのセグメントSiが決定される。
【0040】
この方法で決定されたセグメントのインデックスiを介して、番号SUB1を含む第1のマクロ番号M1が指すビットマップMAPiのみにアクセスすることが可能である。
【0041】
次に、ビットマップMAPiの値VALが読み込まれる。これらの値VALは、クエリの結果またはターゲットを構成する。
【0042】
以下の説明は、リレーショナルデータベースの表などの、表形式で格納されたデータの第1のマクロ番号M1および第2のマクロ番号M2において、数学的符号化式を使用するいくつかの実施例を有する。
【0043】
しかしながら、この数式に限定的されるものではなく、第1と第2のマクロ番号のメンバーをマッピングする目的で別の数式に置き換えることができる。
【0044】
したがって、以下の記載はあくまで実例であり、本発明を限定するものではない。
【図面の簡単な説明】
【0045】
【
図3】本発明によるプリマッピング構造CONFである。
【
図4】本発明によるビットマップMAPを示す図である。
【
図5】本発明によるクエリフェーズにおけるプリマッピング構造PREへのアクセスを概略的に表す図である。
【
図6】本発明によるクエリフェーズにおけるビットマップMAPを概略的に表す図である。
【発明を実施するための形態】
【0046】
本発明の実施形態について、特に、電子的、とりわけコンピュータ化された方法により実施されるデータを格納する手段の一例を以下に示す。
【0047】
示した例は、純粋に分かりやすく説明するためのものであり、請求項で定義されている本発明の保護範囲を限定するものではない。
【0048】
格納されるデータは、以下に概説するように、先行技術を参照して定義された表内のメンバーやエンティティなど、データベース内の各エンティティのメンバーに関連付けられる。
【0049】
例1:
「1月」、「顧客A」、「商品100」、10
「1月」、「顧客B」、「商品101」、12
「1月」、「顧客A」、「商品102」、20
「1月」、「顧客A」、「商品103」、22
「1月」、「顧客B」、「商品100」、21
「2月」、「顧客A」、「商品100」、20
「2月」、「顧客A」、「商品101」、10
「1月」、「顧客A」、「商品106」、20
【0050】
例2:
「1月」、「法人アカウント1」、「企業A」、「コストセンタ1」、「CTR1の制御」、「アクティビティACT1」、「商品100」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン1.0」、「ラインアイテムLINE1」、10
【0051】
「1月」、「法人アカウント1」、「企業A」、「コストセンタ2」、「CTR1の制御」、「アクティビティACT1」、「商品200」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン1.0」、「ラインアイテムLINE1」、12
【0052】
「1月」、「法人アカウント2」、「企業A」、「コストセンタ3」、「CTR1の制御」、「アクティビティACT1」、「商品200」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン2.0」、「ラインアイテムLINE1」、20
【0053】
「1月」、「法人アカウント2」、「企業A」、「コストセンタ3」、「CTR1の制御」、「アクティビティACT1」、「商品200」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン2.0」、「ラインアイテムLINE2」、50
【0054】
「1月」、「法人アカウント1」、「企業A」、「コストセンタ3」、「CTR2の制御」、「アクティビティACT1」、「商品100」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン2.0」、「ラインアイテムLINE2」、30
【0055】
「2月」、「法人アカウント1」、「企業A」、「コストセンタ3」、「CTR2の制御」、「アクティビティACT1」、「商品100」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン1.0」、「ラインアイテムLINE2」、70
【0056】
「2月」、「法人アカウント1」、「企業A」、「コストセンタ3」、「CTR2の制御」、「アクティビティACT1」、「商品200」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン1.0」、「ラインアイテムLINE2」、25
【0057】
「2月」、「法人アカウント1」、「企業A」、「コストセンタ3」、「CTR2の制御」、「アクティビティACT1」、「商品200」、「宛先DEST1」、「発送元SRC」、「シナリオSNR」、「バージョン2.0」、「ラインアイテムLINE2」、7
【0058】
別の例が、添付の
図1に示されている(基本的には上記の例1に対応するが、エンティティが1つ、すなわち倉庫(Warehouse)が多い)。
【0059】
本発明による方法は、まず第一に、次に説明するような構成フェーズを含む。
【0060】
表(この場合は
図1)内に格納されているデータは、数値として符号化される。表の各行は、
図2に概略的に示されているタイプの構成構造CONFを得るために、少なくとも1つの第1のマクロ番号および第2のマクロ番号に関連付けられる。
【0061】
上記の
図2では、第1のマクロ番号はM1で示され、第2のマクロ番号はM2で示される。
図2の構成表CONFの各行では、M1は、例えば、
図1の表の行のメンバーである月を符号化し、M2は、例えば、
図1の表の行のメンバーである商品、顧客、倉庫を符号化し、基本的には、わずか1秒でマクロ番号M2に符号化する。
【0062】
ただし、他のメンバーのグループ化も可能である。例えば、M1は月と商品を符号化し、M2は顧客と倉庫を符号化することができる。
【0063】
数量は値VALとも呼ばれ、符号化されておらず、すでに数値になっている。
【0064】
図1の表のメンバーを、CONF構造の第1のM1マクロ番号および第2のM2マクロ番号として符号化する方法は、本発明に対する限定ではない。
【0065】
次に、例1に関連した一実施形態を、網羅的ではなく示す。
【0066】
例えば、符号化は、次のような可能な「M1」および「M2」の関連性で構成してもよい。
【0067】
(「M1、M2」)
「1」、「10001」(行1)
「1」、「20002」(行2)
「1」、「10003」(行3)
「1」、「10004」(行4)
「1」、「20001」(行5)
「2」、「10001」(行6)
「2」、「10002」(行7)
「1」、「10005」(行8)
【0068】
行1の第1のマクロ番号1(M1)は、「月(month)」エンティティのメンバー「1月」に関連付けられている。
【0069】
行6の第1のマクロ番号2(M1)は、「月(month)」エンティティのメンバー「2月」に関連付けられている。
【0070】
他の月は、プログレッシブ番号を使用して第1のマクロ番号に関連付けることができる。例えば、3は特定の年(例えば、2020年、1月と同じ)の3月を表すことができる。12は12月(2020年の)を、13は翌年(2021年)の1月を表すことができる等。
【0071】
行1の第2のマクロ番号10001は、第1と第2のサブ番号を符号化したもので、例1のそれぞれのメンバーに関連付けられている。特に、第2のマクロ番号10001(M2)では、1(左側の数字)がメンバーの顧客Aに関連付けられ、1(右側の数字)がメンバーの商品100に関連付けられている。
【0072】
第1と第2のマクロ番号の構成は事前に定義される。
【0073】
例えば、第2のマクロ番号は2つのサブ番号で構成できる。第1の
サブ番号は、1とプロセッサが管理できる整数の最大値を、それに続くエンティティメンバーの最大数の積で割ったものとの間の積を表し、第2のサブ番号は、1から9999までの範囲にある。
【0074】
ただし、この形式に限定されない。すなわち、第1と第2のマクロ番号としての符号化メンバーについて既に述べたように、第1と第2のマクロ番号のサイズと形式、およびその中に符号化されたサブ番号のサイズと形式も、本発明を限定するものではない。
【0075】
ここで重要なのは、例えば
図1の表のメンバーを、
図2に概略的に示されているものと同様に、第1のM1マクロ番号および第2のM2マクロ番号として符号化する可能性と、第1のM1マクロ番号および第2のM2マクロ番号を復号化して、それらの構成要素であるサブ番号に移動し、
図1の表の対応するメンバーに移動する可能性がある。
【0076】
上記に基づいて、例1の残りの7行を以下に再び示す。
【0077】
「1」、「20002」
「1」、「10003」
「1」、「10004」
「1」、「20001」
「2」、「10001」
「2」、「10002」
「1」、「10005」
【0078】
これらは、それぞれ
サブ番号2と顧客Bの関連性、
サブ番号2と商品101の関連性、
サブ番号3と商品102の関連性、
サブ番号4と商品103の関連性、
サブ番号5と商品106の関連性を表す。
【0079】
マクロ番号M1は、第1および第2のサブ番号(または複数のサブ番号)を符号化することもできることを観察することは極めて重要である。
【0080】
第1のマクロ番号M1と第2のマクロ番号M2にあるサブ番号をグループ化することは、データ構造を効率的にクエリすることを可能にし、アプリケーションの要件に応じて決定することができる。
【0081】
図2に例示したCONF構造を作成して入力することで終了する構成フェーズの後に続いて、第2のマクロ番号M2は、セグメントSiに分割されたプリマッピング構造PREに格納される。このフェーズは、プリマッピングとも呼ばれる。プリマッピング構造PREには、第2のマクロ番号M2のみが含まれる。
【0082】
PRE構造内の各セグメントSi(S1、S2、…) は、予め決定された数K(例えば2400)の第2のマクロ番号M2を含む。
図3を参照しながら、例を挙げて説明する。
【0083】
PRE構造内の第2のマクロ番号M2は、1回だけ表示される。したがって、CONF構造は、例えばX行を、したがってX個の第2のマクロ番号M2(一部は1回または数回繰り返される)を備えるが、PRE構造はY個の第2のマクロ番号M2のみを含み、その数はY < Xである。
【0084】
セグメントZの数は基本的に、PRE構造内の第2のマクロ番号M2の数YをセグメントSiのサイズKで分割したもの、つまりZ=Y/Kと等しい。
【0085】
プリマッピングフェーズは、
図3に概略的に示されているタイプのPRE構造で終了する。
【0086】
その後、本発明の方法に従って継続され、この構造がまだ作成され、入力されているフェーズでは、データ構造がクエリされる前であっても、第1のマクロ番号M1は、PRE構造内の第2のマクロ番号M2を指す。
【0087】
このポイントセットアップフェーズは、
図4に示すタイプのビットマップMAPを介して実施される。
【0088】
各ビットマップMAPはKビットを含む。
【0089】
特に、CONF構造内の第1のマクロ番号M1について考えた場合、この第1のマクロ番号は第2のマクロ番号M2に関連付けられている。第2のマクロ番号M2は、セグメントSi内のPRE構造内の、前記セグメントSi内の位置kに格納される。したがって、ビットマップMAPiは考慮される第1のマクロ番号M1に対して作成される。つまり、ビットマップMAPiで位置kにビットが設定される。K個の要素のそれぞれがメモリのうち1ビットを占有しており、ビットマップMAPのサイズは非常に小さいことに留意すべきである。
【0090】
このフェーズでは、やはり
図2とCONF構造に関連して、値VALがビットマップMAPに関連付けられて格納され、考慮される第1のマクロ番号M1と第2のマクロ番号M2がリンクされる。
【0091】
本発明によれば、値VALをインデックス方式ではなく、連続して格納することが提供されることに留意することが重要である。この方法により、領域をさらに節約することができる。
【0092】
第1のマクロ番号M1から、ビットマップMAPiを介して指された特定の第2のマクロ番号M2に関連付けられた値VALに移動するために、実際に、第2のマクロ番号M2に関連付けられたビットに先行する設定されたビットの数をカウントし、それによってビットマップMAPiにおけるその位置posを取得し、次に、決定された関連する数値VAL、すなわち、ビットマップMAPiに関連付けられた値VALの間で同じ位置posを持つ数値VALを取得することが提供される。
【0093】
したがって、このフェーズが完了すると、一定数のビットマップMAPiが割り当てられる。例えば、
図4を参照すると、ビットマップMAPiとビットマップMAPxは第1のマクロ番号M1に割り当てられている。ビットマップMAPiでは、位置3と位置kに2つのビットが設定され、ビットマップMAPxでは1つのビットだけが位置jに設定される。2つの値ValおよびVal1が、ビットマップMAPiに関連して格納され、1つの値Valだけが、ビットマップMAPxに関連して格納される。ビットマップMAPiにおいて、k個の設定されたビットを持つ位置3は、第1のマクロ番号M1に関連付けられた第2のマクロ番号M2のセグメントSiにおける位置3に対応する。ビットマップMAPxにおいて設定されたビットの位置jは、第1のマクロ番号M1に関連付けられた第2のマクロ番号M2のセグメントSxにおける位置jに対応する。
【0094】
このフェーズを完了すると、プリマッピングが終了し、本発明による方法の全体的なデータ構造は、例えばクエリを実行するために使用する準備ができる。
【0095】
明らかに、M1、M2、VAlは、
図2、
図3、および
図4の構造を単純化するために象徴的に使用されているが、これらのラベル(M1、M2、VAl)は互いに異なる可能性のある数字を表している。
【0096】
クエリフェーズは
図5および
図6を使用して記述されている。
【0097】
本発明の適用範囲を制限することなく、
図2および
図3の構造を参照して、顧客または倉庫に関係なく、例えば、特定の月に販売された商品の数量を決定するために、特定の月および特定の商品に対してクエリを実行してもよい。
【0098】
上記の情報によると、月は第1のマクロ番号M1として符号化され、商品は第2のマクロ番号M2、特に第2のマクロ番号M2のサブ番号として符号化される。
【0099】
これは、本発明の方法に従ってクエリが実施される方法である。
【0100】
はじめに、すべてのセグメントSを特定する。これには、プリマッピング構造PRE内の第2のマクロ番号M2が含まれ、それ自体には、関心のある商品(つまり、関心のある商品に関連付けられたサブ番号)が含まれている。例えば、セグメントSiとSgはこの方法で見つかる。関心のある商品が、PRE構造内の複数の第2のマクロ番号M2に存在する可能性があるため、より多くのセグメントを特定することができる。
【0101】
次に、セグメントSiとSgに対応するビットマップMAPにアクセスする。ただし、示したこの例では、番号M1に対するビットマップMAPgはない。したがって、値VAL、つまり販売された商品の数量は、マップMAPiと関連付けてのみ検索される。これらの値(提供された具体的な例では、それらの合計)を特定することで、クエリの結果(特定の月である「月」に販売された商品である「商品」の数)が決定される。
【0102】
本方法は、比較的手間のかかる構成とプリマッピングのフェーズを経て、驚くべきアプリケーションの利点をもたらす。
【0103】
実際には、表のインデックスを作成する必要がなくなる。
【0104】
すべてのデータ項目は番号(第1のマクロ番号と第2のマクロ番号)として符号化され、構造内の数字の検索が非常に迅速なプロセスとなる。
【0105】
ビットマップは、領域と時間の点で非常に効率的に管理される。
【0106】
構造をモデル化することで、検索時間がさらに短縮される。この目的のために、第1のマクロ番号M1の数が少ないエンティティを符号化することが有益である(例:月および商品の数は通常、顧客や倉庫よりも少ない)。そうすることで、潜在的に関心のある第2のマクロ番号M2だけを検索において上記のように効率的にフィルタリングした後、関心のある値VALが、より少ない数のビットマップMAP上でカウントされる。
【0107】
出願人はこの趣旨の方法について性能試験を実施している。ベンチマークとして採用されている他のものと比較して、データ検索の応答時間が大幅に短縮され、CONF、PRE、およびビットマップMAP構造に使用される領域が大幅に少なくなる。
【国際調査報告】