説明

データレコードを圧縮し圧縮されたデータレコードを処理するための方法及びシステム

データレコードを圧縮するシステム及び方法は、データレコードに二値構造を与えてデータレコードをいくつかのビットベクトルに分割し、ビットベクトルを、各部分領域がnビットからなる連続した等しいサイズの部分領域に分割し、部分領域をトリビアル部分領域、準トリビアル部分領域、及び非トリビアル部分領域に分類し、1つの非トリビアル部分領域又はいくつかの連続した非トリビアル部分領域を組合せてRブロックと称されるものにし、トリビアル部分領域を削除すること、により各ビットベクトルのサイズを減じ、1つの準トリビアル部分領域又はいくつかの連続した準トリビアル部分領域を組合せてOブロックと称されるものにする。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、特にデータベースシステム内にあるデータレコードからなるデータコレクション(data collection)を処理するための方法に関する。特に、この発明は、データレコードを圧縮し、圧縮されたデータを処理することに関する。この発明はさらに、圧縮されたデータレコードを含むデータ構造製品、データベースコンピュータシステム及びコンピュータプログラムに関する。
【背景技術】
【0002】
データベースの支援により、データコレクションを処理できる。例えば、これらを検索したり、これらを互いに組合せることで評価したりできる。
【0003】
多くの場合、データコレクションは、データコレクションから生成される二値構造を有するデータレコードの中に、使用されたデータによっては、部分的に二値データ構造がゼロの値のみを含む広い部分領域からなるような形で提供される。データコレクションが生成されるときに、例えば、ごくわずかしか相違しないデータを組合せることができず、2つの異なるデータレコードとして生成することもあり得る。したがってデータベース内のデータレコードの量はしばしば非常に多くなる。
【0004】
それにも関わらず、データレコードをうまく管理するために、情報を失うことなくデータレコードのサイズを削減するのが趨勢となっている。これは、例えば、データ圧縮によって達成される。
【0005】
これは、例えば電子形式で記憶されるデータの量が大幅に削減されるので有利である。しかし、データの組合せ等の電子処理動作において、対応の処理動作を行なうためには、圧縮されたデータの各々を完全に伸張して元の状態に戻さなければならない。この伸張処理を行なう結果、処理時間が増大する。
【0006】
さらに、処理前にデータを元の形に戻さなければならない、又は伸張しなければならないが、データのシーケンシャルな処理しかできない。その理由は、圧縮の種類によって、多くの場合、伸張はシーケンシャルにしかできないからである。データの電子処理の中間結果を記憶するためには、伸張したデータを保持できる非常に大きなランダムアクセスメモリが必要とされる。
【0007】
EP0633537B1は、圧縮された文書中に記録されている複数個の文字列が圧縮コードで記憶されているような、圧縮された文書の検索方法及びシステムを開示している。クエリリクエストを受信すると、クエリリクエストは圧縮コードに変換され、変換後のクエリリクエストが圧縮された文書中に記憶された圧縮コードと比較される。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】EP0633537B1
【発明の概要】
【発明が解決しようとする課題】
【0009】
この発明によれば、請求項1の特徴を含む方法、請求項15及び16の特徴を備えたデータ記憶媒体又はデータ構造製品、請求項22の特徴を備えた圧縮データレコードの処理方法、ならびに請求項25及び26の特徴を備えたデータベースコンピュータシステムが、それぞれ提案される。
【0010】
この発明は、二値構造を備えたデータレコードをいくつかのビットベクトルに分割することを提案する。各ビットベクトルのサイズは、まず、ビットベクトルを、各部分領域がnビットからなる、等しいサイズの連続した部分領域に分割することで削減される。その後これらの部分領域は、そのコンテンツ構造によってトリビアル部分領域、準トリビアル部分領域、又は非トリビアル部分領域、に分類される。
【0011】
ビットベクトルの1つ又はいくつかの連続した非トリビアル部分領域を組合せて、Rブロックと称される1つのブロックにする。トリビアル部分領域は削除される。1つ又はいくつかの連続した準トリビアル部分領域を組合せて、Oブロックと称される1つのブロックにする。
【0012】
このようにして、データレコードのサイズを大幅に削減できる。
【0013】
1つのビットベクトルの非トリビアル部分領域を組合せて、Rブロックと称される1つのブロックにする場合、それぞれのRブロックに含まれる最初の非トリビアル部分領域の最初のビットのビットベクトルの絶対位置Pと、このRブロックと称されるもののなかにある連続した非トリビアル部分領域の数mとを、Rブロック内に記しておくことができる。これによって、Rブロックのコンテンツを迅速に判断し、それに従って迅速にデータを検索できる。数mはRブロック内の連続した非トリビアル部分領域の計数又は数量を与える。
【0014】
1つのビットベクトルの準トリビアル部分領域を組合せて、Oブロックと称される1つのブロックにする場合、このOブロックと称されるものに含まれる最初の準トリビアル部分領域の最初のビットのビットベクトルの絶対位置Pと、このOブロックにある連続した準トリビアル部分領域の数mとを、Oブロック内に記しておくことができる。これによって、Rブロックのコンテンツを迅速に判断し、それに従って迅速にデータを検索できる。数mはOブロック内の連続した準トリビアル部分領域の計数又は数量を与える。
【0015】
さらに、準トリビアル部分領域を削除(消去)することもできるので、ビットベクトルのサイズをさらに削減することにつながる。
【0016】
発明が提案する削減の際に、情報が失われることはない。この削減は、例えば、電子データ処理においてデータの圧縮によって行なわれる。ビットベクトルのサイズが削減されるので、処理すべきデータ量は大幅に削減される。これに関して、本発明は、この圧縮によって各ビットベクトルのサイズが減じられるようにする。この目的のために、ビットベクトルは各々等しいサイズの連続した部分領域に分割され、各部分領域はnビットからなる。ここで、部分領域は異なる値のビットを含んでもよいし、同じ値のビットのみを含んでもよい。
【0017】
これを基本に、部分領域を異なる部分領域に分類できる。トリビアル部分領域と準トリビアル部分領域とは、例えば、規則的なビット構造を有する部分領域とすることができる。トリビアル部分領域は、ゼロのみを含む部分領域と定義し、準トリビアル部分領域は1のみを含む部分領域と定義できる。非トリビアル部分領域は1とゼロとの両方を含む部分領域と定義できる。部分領域のそれぞれの名称の上記定義は、例示の目的のみであって限定的なものではない。当然、ビットが値1のみを有する部分領域をトリビアル部分領域と定義し、ビットが値0のみを有する部分領域を準トリビアル部分領域と定義することもできる。
【0018】
連続した非トリビアル部分領域と、連続した準トリビアル部分領域とを組合せてブロックとすることができる。非トリビアル部分領域は、組合せてRブロックとすることができる。各Rブロックには、各Rブロックに含まれる最初の部分領域の最初のビットの、当初の状態のビットベクトル内で存在する位置Pを記しておく。さらに、1つのRブロックに含まれる連続した非トリビアル部分領域の数mを記しておくこともできる。もし準トリビアル部分領域又はトリビアル部分領域が非トリビアル部分領域のすぐ後に続く場合、個々の非トリビアル部分領域がRブロックにされ、ビットベクトル位置Pと数m=1とが記されてもよい。
【0019】
準トリビアル部分領域は、連続した準トリビアル部分領域を見つけ、各Oブロック内に名目上含まれる最初の準トリビアル部分領域の最初のビットの、当初の状態のビットベクトルでのそのビットが存在する絶対位置Pを、1つのOブロック内の連続した準トリビアル部分領域の数mと合わせて記しておくことで、実質的に「名目上」組合せることもできる。準トリビアル部分領域を削除して、ビットベクトルの絶対位置Pと数mとに関する情報のみがOブロックに残される。もしトリビアル部分領域又は準トリビアル部分領域が準トリビアル部分領域のすぐ後に続く場合には、この準トリビアル部分領域の最初のビットのビットベクトルの絶対位置Pと数m=1のみが記される。
【0020】
トリビアル部分領域は完全に削除される。
【0021】
各Rブロックに含まれる最初の部分領域の最初のビットの絶対位置とRブロック内の連続した非トリビアル部分領域の数mとを記しておくことにより、各Rブロックに含まれるデータを、ビットベクトルを元の状態に戻したり又は伸張したりする必要なしに利用できる。
【0022】
各Oブロックに当初含まれていた準トリビアル部分領域のビットベクトルの絶対位置Pと、1つのOブロック内の当初の連続した準トリビアル部分領域の数mとを用いることによって、Oブロックはデータレコードの処理においてビットベクトルを元の状態に戻したり又は伸張したりする必要なしにこれらのデータを利用するのに充分な情報を含んでいることになる。
【0023】
OブロックとRブロックとのビットベクトルの絶対位置PとPとがそれぞれ分かっているため、これらのブロックに含まれるデータをパラレルなデータ処理に用いることが可能になる。したがって、少なくとも2つのビットベクトルを組合せて解又は結果ベクトルとする場合、ビットベクトルの個々のOブロック及び/又はRブロックの組合せをパラレルに行なうことができる。これによって、データレコードの極めて迅速な処理が可能になる。さらに、結果として得られるビットベクトルの1ブロック内の、各々n個のビットを有する連続した情報領域をパラレルに処理することもできる。
【0024】
Rブロック内のビットベクトルの絶対位置Pと連続した非トリビアル部分領域の数mとは、各Rブロックの始めに記しておくことができる。これはバイナリ形式で行なうことができる。各Rブロックにおいて、nビットを有する情報領域を生成し、ここに例えばバイナリ形式で、ビットベクトルの絶対位置PとRブロックにおける連続した非トリビアル部分領域の数mとを記しておくことができる。数mは情報領域の最終xビットで記すことができ、ここでx=lognである。この種のラベル付け又は指定に必要なのはわずかなデータ量である。各Rブロックの先頭にこの情報領域を設けることにより、Rブロックに含まれるデータの処理が簡潔化される。なぜなら、所与のRブロックの処理を始める時点ですでにそのRブロック中にいくつのデータがあり、それらのデータがビットベクトルにおいて当初どの位置にあったかが分かっているからである。
【0025】
各部分領域がnビットからなり、各Rブロックが常に整数個mの非トリビアル部分領域を含むので、ビットベクトルの絶対位置Pは常にnの整数倍である。
【0026】
この結果、ビットベクトルの絶対位置Pを、例えばバイナリ形式で記す場合、x=lognとすれば、情報領域の最後のxビットは常に0のままである。したがって、ビットベクトルの絶対位置Pを記すために、情報領域の最後のxビットは必要とされず、連続した非トリビアル部分領域の数mをここに記すことができる。これによって、情報領域に必要とされるデータ量が削減できる。
【0027】
さらに、排他的に、ビットベクトルの絶対位置P、1つのOブロック内に当初含まれていた準トリビアル部分領域の数m、及びOブロックの識別子を、例えばバイナリ形式でOブロック内に記すことができる。この場合、各Oブロックに、各々がnビットの第1及び第2の情報領域を生成し、ここに、ビットベクトルの絶対位置PとOブロック内に当初含まれていた準トリビアル部分領域の数mとを例えばバイナリ形式で記すようにすることができる。ビットベクトルの絶対位置Pを第1の情報領域に記し、数mを第2の情報領域に記してもよい(当然、これらを逆にしてもよい)。識別子をさらに第1の情報領域の最後のxビットに記してもよく、ここでx=lognである。例えば、識別又はラベル付けは、値0を有する最後のxビットに基づいて行なうことができる。
【0028】
このようにして、ビットベクトルの絶対位置Pと数mとに関するOブロック内に含まれる情報に基づいて、必要とする記憶容量の少ないOブロックが生成され得る。
【課題を解決するための手段】
【0029】
この発明のある実施例では、数mについてm<n−1の関係が成り立つ。さらに、数mについて、m≦2の関係が成り立つ。各ビットベクトルの長さは最大で2+n−1である。
【0030】
上述のとおり圧縮又は削減されたデータレコードは、少なくとも2つのビットベクトルを選択しその少なくとも2つのビットベクトルを組合せて1つの解ベクトルとすることにより、元の伸張された状態に戻す必要なしに処理することができ、ここでビットベクトルの組合せはビットベクトルのOブロック及び/又はRブロックの組合せによって行なわれる。
【0031】
圧縮されたデータレコードの構造のために、この発明はビットベクトルのOブロック及び/又はRブロックのいくつかの組合せをパラレルで行なうことを可能にする。
【0032】
データレコードの処理は、いくつかのSIMDプロセッサを含むコンピュータユニットで行なわれても良く(SIMD−single instruction multiple data:単一命令複数データ)、ここでパラレルの組合せがいくつかのSIMDプロセッサに分配される。
【0033】
この発明はまた、コンピュータプログラムをコンピュータで実行する際に、上述の発明に従った方法を実行するのに好適なプログラムコーディング手段を備えたコンピュータプログラムをカバーする。コンピュータプログラム自体と、コンピュータ可読媒体に記録されたものとが請求項に記載されている。
【0034】
この発明のさらなる特徴と実施例とは、発明の説明と添付の図面から明らかとなるであろう。
【0035】
上述の特徴と以下に記載される特徴とは、特定された組合せで使用されるだけでなく、この発明の範囲を逸脱することなく、他の組合せ、又はそれ自体で使用できる。
【0036】
この発明を概略的に図示し例として実施例を挙げて、以下に図面を参照して詳細に説明する。以下の説明は本件発明の範囲を限定するものではなく、単に発明の好ましい実施例を例示するものであることが理解されるべきである。
【図面の簡単な説明】
【0037】
【図1】発明を例示する概略ブロック図である。
【図2】発明を具体化可能なコンピュータデータベースシステムの概略図である。
【図3】図2のコンピュータシステムのより詳細なブロック図である。
【図4】この発明に従ったSIMDプロセッサによる処理を例示する図である。
【発明を実施するための形態】
【0038】
この発明に従った、特にデータベースシステムにおけるデータレコード処理方法は、例えば、通信分野における課金システムの通話データ記録(call data records:CDR)のデータベースシステムに利用可能である。
【0039】
通信サービスのデータコレクションは例えば、データベースシステムに記憶される。データのセットは、例えば、電話番号、通話の持続時間、通話時刻等を含む。データベースシステムによってこれらのデータの評価を行なうことができる。
【0040】
しかし、データセット又はレコードはしばしば、情報の1つだけ、例えば時刻又は持続時間のみ、が有効であるようなやり方で生成される。例えばある接続で同じ電話番号にすぐ続けて発呼があった場合、これらは2つの独立した通話と見なされ、2つの異なるデータセットが生成される。この結果データの数が非常に多くなる。例えば、ドイツにおいて、このようなデータの数は数十億に及ぶ。
【0041】
これらデータのコレクションは二値構造を有するデータレコードに変換される。これは例えば、行がそれぞれの通話を表し、列が時刻、持続時間等の対応の条件を示す、マトリックス(ビットマップ)の形であり得る。
【0042】
このような行列において、二進値1は対応の情報が真であることを意味し、二進値0はこの情報が真でないことを意味する。上述のデータレコードの性質のため、図1に示すようなマトリックスの形の二値構造は値0を有するビットを含む大きな領域を含み、また値1を有する連続した複数個のビットを含む領域もある。
【0043】
ここで、二値構造をいくつかのビットベクトルに分割することができ、図1の例では各列が1つのビットベクトルを表す。
【0044】
ここで、ビットベクトルは情報を失うことなくサイズを減じることができる。この目的のために、ビットベクトルは同じサイズの連続した部分領域に分割される。部分領域の各々はnビットからなる。対応の部分領域を図1に概略的に示す。分かりやすくするために、ビットベクトルの第1の部分領域、ビットベクトルの第3の部分領域、及びビットベクトルの第5の部分領域のみを図1に示す。例示した実施例では、部分領域は各々32ビットからなり、これは今日の多くのコンピュータで基本的な記憶ユニットが32ビットからなるためである。より最近のシステムでは64ビットの基本記憶ユニットを有するものもあり、したがって、当然、64ビットの部分領域を提供することも可能である。
【0045】
部分領域は分類される。それぞれ値0及び値1を任意のシーケンスで有する部分領域は、この出願の文脈においては、非トリビアル部分領域である。値1を有するビットのみを排他的に含む部分領域は、いわゆる準トリビアル部分領域である。値0を有するビットのみを排他的に含む部分領域は、いわゆるトリビアル部分領域である。
【0046】
いくつかの非トリビアル部分領域が組合されて、いわゆるRブロックとなる。
【0047】
Rブロックにおいて、Rブロックの始めにnビット長の情報領域が生成される。図示の例では、Rブロックの情報領域は32ビット長である。この情報領域に、組合わされてこのRブロックとなった元のビットベクトルの連続した部分領域の最初のビットの絶対位置が記される。図において、ビットベクトルの絶対位置はオフセットとして指定されている。
【0048】
図1に示す実施例のように、各々が32ビットの長さを有する部分領域で、情報領域の最終5ビット、すなわちビット28から32は、ビットベクトルの絶対位置Pが記されるときに常に不変なので、これらはビットベクトルの絶対位置Pを記すのに必要とされない。したがって、ビット28から32をRブロック内の連続した非トリビアル部分領域の数mを記すために用いることができる。
【0049】
図1の表記では、情報領域のビット番号27は値0を有し、これはビットベクトル位置Pもまた0であることを意味する。ビット32は値1を有し、これはこのブロックに非トリビアル部分領域が含まれることを示す。1つのRブロックに最大31個の非トリビアル部分領域が含まれる。もし1ビットベクトルに31個を超える非トリビアル部分領域が含まれる場合には、これらは2個以上の異なるRブロックにそれぞれ分割される。
【0050】
64ビット長のビットベクトルの場合、情報領域の最終6ビットは空いているので、ビット番号58から始めて絶対的なビットベクトルが記される。したがって、1つのRブロック中に63個の非トリビアル部分領域を含めることができる。
【0051】
1つの所与のRブロックに含まれる非トリビアル部分領域の数量である数mについて、したがって、m≦n−1の関係が成り立つ。
【0052】
所与のRブロックは、例えば図に示した例にあるように、1つの非トリビアル部分領域を含むのみである。
【0053】
値1を有するビットのみを含む準トリビアル部分領域もまた、組合わされて、Oブロックと称されるブロックになる。ここで、これらのブロックは「名目上」組合わされるだけである。これは、この出願の文脈においては、Oブロックが単に第1の情報領域と第2の情報領域のみを含みうる、という意味である。
【0054】
第1の情報領域はこのブロックがOブロックであるという識別子を含む。さらに、Oブロックに名目上含まれる最初の部分領域の最初のビットのビットベクトルの絶対位置が記される。図1の例では、ビットベクトルの絶対位置Pは64であり、したがって第1の情報領域のビット番号26は値1を有する。この識別は、第1の情報領域においてビット番号28から32までが値0を有することで行なわれる。こうして、OブロックをRブロックから区別できる。
【0055】
第2の情報領域では、Oブロックに名目上含まれる準トリビアル部分領域の数量である数mが、例えばバイナリ形式で記される。図示の例では、最大232個の準トリビアル部分領域がOブロックに名目上含まれ得る。
【0056】
部分領域が64ビットからなるシステムでは、第1の情報領域のビット番号59から64に、これらのビットを0に設定することで識別子を記す。この数はまた、第2の情報領域にも再び記され、したがって、この場合、1つのOブロックにある名目上連続した準トリビアル部分領域の数は理論的には最大でm=264となる。
【0057】
その後、この準トリビアル部分領域は削除される。
【0058】
さらに、ビット値が常に0であるトリビアル部分領域もまた削除される。
【0059】
こうするにあたって、記憶すべきデータ量を、ビットベクトルの上述の削減又は「圧縮」によって大いに減じることができる。これは特に上で述べたような性質の、値0を有するビット又は値1を有するビットを含む大量のデータが連続して配置されるようなデータレコードに関連して重要である。
【0060】
圧縮されたデータレコードのさらなる処理において、例えばデータクエリに関連して、少なくとも2つのビットベクトルが選択され組合される。
【0061】
ビットベクトルの選択は特定の要求に依存する。ビットベクトルの組合せにおいて、ビットベクトルのOブロック及び/又はRブロックが組合される。
【0062】
この目的のために、組合せるべき2つのブロックに交差領域があるか否かを最初に判断する。交差領域はその後単に対応の演算により組合される。これは、例えばAND演算又はOR演算であり得る。この結果は解ベクトルに書込まれる。
【0063】
解は圧縮した形で解ベクトルに書込むことができる。当然、解ベクトルもまた、圧縮しない形で出力することもできる。後者の場合、組合せ後の解ベクトルに残る空のスペースが値0で埋められる。
【0064】
今や、それぞれの要求(例えば1分又は1時間といった、所与の期間より長く続く通話のクエリ等)を満たす通話を、解ベクトルから検索できる、なぜなら、このような通話に関しては、解ベクトルの対応の位置のビットベクトルが1だからである。
【0065】
ビットベクトルを組合せる際に、ビットベクトルのOブロック及び/又はRブロックの組合せをパラレルに行なうことができる。なぜなら、ブロックにおいてそれらブロックに含まれる部分領域のビットベクトルの絶対位置が知られているからである。特に、組合せるためにビットベクトルをそれらの元の状態に戻す、すなわちそれらを伸張することは
必要とされない。
【0066】
したがって、組合せの処理において非常に多くの時間を節約できる。さらに、データレコードを処理するためのコンピュータシステムを利用する際に、組合せのための記憶装置の要求が非常に少ない。
【0067】
図2は本発明の実施例を具体化するコンピュータシステム10をごく簡潔に示す図である。コンピュータシステム10は、データ通信のためのバス22と、処理ユニット14と、データのセットを記憶するためのデータベース記憶媒体(データベース)20とを備えたコンピュータ12を含む。コンピュータシステム10はさらに、少なくとも1つの入出力装置18を含み、これは図1の例ではキーボード18.2、カーソルを制御するためのポインティングデバイス18.3、及びモニタ18.1を備えたクライアントである。この少なくとも1つの入出力装置18は、例えばイントラネットネットワーク内でコンピュータと接続できる。
【0068】
図3は図1のコンピュータシステム10をより詳細に示す図である。コンピュータシステム10は情報通信のためのバス22又は他の通信機構を含み、さらに、バス22に結合された、情報処理のためのプロセッサ14を含む。コンピュータシステム10はさらに、バス22に結合され、プロセッサ14で実行される命令と情報を記憶するための、ランダムアクセスメモリ(RAM)又は他の動的記憶装置(例えばダイナミックRAM(DRAM)、スタティックRAM(SRAM)及び同期DRAM(SDRAM))等のメインメモリ24を含む。
【0069】
加えて、メインメモリ24はプロセッサ14による命令の実行中に一時的な変数又は他の中間情報を記憶するのに用いられてもよい。コンピュータシステム10はさらに、バス22に結合されプロセッサ14のための命令と静的情報を記憶するための、読出専用メモリ(ROM)25又は他の静的記憶装置(例えば、プログラム可能ROM(PROM)、消去可能PROM(EPROM)、電気的に消去可能なPROM(EEPROM))を含む。
【0070】
コンピュータシステム10はさらに、バス22に結合され、磁気ハードディスク27等の情報及び命令を記憶する1又は2以上の記憶装置を制御するディスク制御装置26と、取外し可能メディアドライブ28(フロッピー(登録商標)ディスクドライブ、読出専用コンパクトディスクドライブ、書込/読出コンパクトディスクドライブ、コンパクトディスクジュークボックス、テープドライブ、及び取外し可能磁気−光ドライブ等)とを含む。これらの記憶装置は、適切な装置インターフェィス(例えば、小型コンピュータシステムインターフェィス(SCSI)、統合デバイスエレクトロニクス(IDE)、改良IDE(E−IDE)、ダイレクトメモリアクセス(DMA)又はウルトラDMA等)を用いてコンピュータシステム10に付加できる。
【0071】
コンピュータシステム10はまた、バス22に結合され、陰極線管(CRT)又は液晶ディスプレイ(LCD)等のディスプレイ又はモニタ18.1を制御してコンピュータユーザに情報を表示するためのディスプレイ制御装置29を含んでもよい。コンピュータシステムはコンピュータユーザと相互作用しプロセッサ14に情報を与えるための、キーボード18.2及びポインティングデバイス18.3等の入力装置を含む。ポインティングデバイス18.3は、例えばマウス、トラックボール又はポインティングスティックであって、指示情報及びコマンド選択をプロセッサ14に伝達し、ディスプレイ18.1上のカーソルの動きを制御するためのものである。加えて、プリンタがあればコンピュータシステム10が記憶する及び/生成するデータのリストを提供できる。
【0072】
コンピュータシステム10は、プロセッサ14がメインメモリ24等のメモリに含まれる1又は2以上の命令の1又は2以上のシーケンスを実行するのに応答して、本発明の処理ステップの全部又は一部を行なう。このような命令は、ハードディスク27又は取外し可能メディアドライブ28等の別のコンピュータ可読媒体からメインメモリ24に読出されてもよい。メインメモリ24に含まれる命令のシーケンスを実行するために、マルチ処理構成の1又は2以上のプロセッサを用いてもよい。代替的実施例では、ソフトウェア命令に代えて、又はこれと組合せて、ハードワイヤード回路を用いてもよい。すなわち、実施例はハードウェア回路及びソフトウェアの何らかの特定の組合せに限定されるものではない。
【0073】
電話40からの通話データがデータリンク接続(無線であってもよい)を介してコンピュータシステムに収集される。この収集されたデータは、この発明に従ってデータ記憶媒体20に構築されるデータコレクションの一部となる。
【0074】
上述のとおり、コンピュータシステム10はこの発明の教示に従ってプログラムされた命令を保持しここで説明したデータ構造、テーブル、レコード又は他のデータを含むための、少なくとも1つのコンピュータ可読媒体又はメモリを含む。コンピュータ可読媒体の例は、コンパクトディスク、ハードディスク、フロッピー(登録商標)ディスク、テープ、磁気光ディスク、PROM(EPROM、EEPROM、フラッシュEPROM)、DRAM、SRAM、SDRAM又は他の磁気媒体、コンパクトディスク(CD−ROM等)、又は他の光媒体、パンチカード、紙テープ又は他の穴パターンを備えた物理的媒体、搬送波(以下で述べる)、又はコンピュータが読むことのできる他の何らかの媒体を含む。
【0075】
本発明は、コンピュータ可読媒体のいずれか、又はそれらの組合せに記憶された、コンピュータシステム10を制御するためのソフトウェアを含み、これは発明を具体化するための装置を駆動しオペレータ等の人間のユーザと相互作用できるようにコンピュータシステム10を可能化するためのものである。このようなソフトウェアはデバイスドライバ、オペレーティングシステム、開発ツール及びアプリケーションソフトウェアを含むが、それらに限定されない。このようなコンピュータ可読媒体はさらに、この発明を具体化するために行なわれる処理の全部又は(もし処理が分配されている場合には)一部を実行するための、この発明のコンピュータプログラム製品を含む。
【0076】
この発明のコンピュータコードデバイスは、スクリプト、翻訳可能プログラム、ダイナミックリンクライブラリ(DLL)、Java(登録商標)クラス、及び完全に実行可能なプログラム等を含むがこれに限定されない何らかの翻訳可能又は実行可能なコード機構であり得る。さらに、この発明の処理の一部は、よりよい性能、信頼性、及び/又は費用のために、分配することもできる。
【0077】
ここで用いられる「コンピュータ可読媒体」という用語は、実行のためにプロセッサ14に命令を提供することに関与するすべての媒体をさす。コンピュータ可読媒体は多くの形をとることができ、不揮発性媒体、揮発性媒体、送信媒体を含むがこれらに限定されない。不揮発性媒体は、例えば、ハードディスク27又は取外し可能メディアドライブ28等の、光、磁気ディスク、及び磁気−光ディスクを含む。揮発性媒体はメインメモリ24等のダイナミックメモリを含む。送信媒体は、バス22を構成する配線を含む、同軸ケーブル、銅線及び光ファイバを含む。送信媒体はまた、電波又は赤外線通信の間に発生する音波又は光波の形をとり得る。
【0078】
コンピュータシステム10はさらに、バス22に結合された通信インターフェイス16を含む。通信インターフェイス16は、例えばローカルエリアネットワーク(LAN)32又はインターネット等の別の通信ネットワーク33に接続されたネットワークリンク30に結合する2方向のデータ通信を提供する。例えば、通信インターフェイス16は何らかのパケット交換LANに装着されるネットワークインターフェイスカードであり得る。別の例として、通信インターフェイス16は非対称ディジタル加入者回線(ADSL)カード、総合ディジタル通信網(ISDN)カード又はモデムであって、対応する種類の通信回線にデータ通信接続を提供するものであってもよい。さらにワイヤレスリンクを実現してもよい。このような具体化例のいずれにおいても、通信インターフェイス16は様々な種類の情報を表すディジタルデータを保持する電気的、電磁的又は光信号を送受信する。
【0079】
ネットワークリンク30は典型的には1又は2以上のネットワークを介して他のデータデバイスとのデータ通信を提供する。例えば、ネットワークリンク30はローカルネットワーク32(例えばLAN)を介して、又は通信ネットワーク33を介して通信サービスを提供するサービスプロバイダによって運営される設備を介して、別のコンピュータに接続を提供してもよい。ローカルネットワーク30及び通信ネットワーク33は、例えば、ディジタルデータストリームを保持する電気的、電磁的又は光信号と、関連の物理層(例えばCAT5ケーブル、同軸ケーブル、光ファイバ等)を用いる。さらに、ネットワークリンク30は、LAN32を介してパーソナルディジタル端末(PDA)、ラップトップコンピュータ、又はセルラー電話等の携帯装置34への接続を提供してもよい。
【0080】
この発明に従えば、いくつかのSIMD(単一命令複数データ)プロセッサ上で組合せ動作をパラレルに実行できる。これを図4に示す。
【0081】
図4は(紙面に向かって)左側に2つのビットベクトルBV1及びBV2を示す。これらビットベクトルBV1及びBV2はいくつかのRブロックとOブロックとを含み、これらブロックの各々はここでもまた、それぞれビットベクトルの絶対位置P又はPと、それぞれこれに従った数m及びmとから成る。Rブロックはまた、データビットシーケンス(図4のビットベクトルの例では右手の列)を含む。Oブロックはビットベクトルの絶対位置と連続した準トリビアル部分領域の量/数を反映した数のみを含む。この発明に従えば、準トリビアル部分領域そのものは削除される。
【0082】
ビットベクトルの処理はこれらを組合せて解又は結果ベクトルSBVにすることで行なわれる。これらは、図4に例示するように、複数個のプロセッサによりパラレルに行なってもよい。図4は3台のプロセッサで2つの図示したビットベクトルBV1及びBV2のAND演算を行なう例を示している;しかし、利用可能ないかなる数のプロセッサを用いてもよい。
【0083】
図4に例示した実施例では、グラフィックカードで利用可能なSIMDプロセッサを用いてビットベクトルを処理している。この場合、例えば、1コンピュータユニットにいくつかのグラフィックカードが含まれている場合もありうる。
【0084】
SIMDプロセッサは必要とされる組合せタスクに充分である。加えて、これらは通常のコンピュータシステムで多数利用可能である。例えば、強力なグラフィックカードのグラフィックチップは、256個のSIMDプロセッサを含む。この結果、多数の組合せ動作を同時に実行することができ、データ処理を非常に迅速に行なうことができる。
【0085】
ビットベクトルの組合せはビットベクトルのOブロック及び/又はRブロックを組合せることで行なわれる。
【0086】
当然、この発明に従った方法はまた通信データとは異なるデータレコードについても適用可能である。この発明に従った方法は特に、多数のビット値0又は多数のビット値1が連続した順序で配列されている二値構造を有する種類のデータレコードに特に強力である。
【0087】
以下にこの発明の様々な局面を番号付リストの形で記載する。
1.特にデータベースシステムにおけるデータコレクションを処理する方法であって、
データコレクションを生成するステップと、
データコレクションを二値構造で配列するステップと、
データレコードをいくつかのビットベクトルに分割するステップと、
各ビットベクトルのサイズを減じるステップとを含み、このステップは
ビットベクトルを、各部分領域がnビットからなる、等しいサイズの連続した部分領域に分割するサブステップと、
部分領域をトリビアル部分領域、準トリビアル部分領域、及び非トリビアル部分領域に分類するサブステップと、
1つの非トリビアル部分領域又はいくつかの非トリビアル部分領域を組合せてそれぞれRブロックとし、各Rブロックに含まれる最初の非トリビアル部分領域の最初のビットのビットベクトルの絶対位置Pと1つのRブロックに含まれる連続した非トリビアル部分領域の数mとを記すサブステップと、
トリビアル部分領域を削除するサブステップと、
1つの準トリビアル部分領域又はいくつかの連続した準トリビアル部分領域を組合せてそれぞれOブロックとし、各Oブロックに含まれる最初の準トリビアル部分領域の最初のビットのビットベクトルの絶対位置Pと、1つのOブロックに含まれる連続した準トリビアル部分領域の数mとを記し、準トリビアル部分領域を削除するサブステップとを含み、
前記方法はさらに、
少なくとも2つのビットベクトルを選択し、この少なくとも2つのビットベクトルを組合せて1つの解ベクトルとするステップを含み、ビットベクトルの組合せはビットベクトルのOブロック及び/又はRブロックの組合せによって行なわれる、方法。
【0088】
2.局面1に従った方法であって、少なくとも2つのビットベクトルの組合せにおいて、ビットベクトルのOブロック及び/又はRブロックのいくつかの組合せはパラレルに行なわれる、方法。
【0089】
3.局面1又は2に従った方法であって、ビットベクトルの絶対位置Pと1つのRブロック内の連続した非トリビアル部分領域の数mとは、非トリビアル部分領域を有する各Rブロックの各々の先頭に、好ましくはバイナリ形式で記される、方法。
【0090】
4.局面1又は3に従った方法であって、排他的に、ビットベクトルの絶対位置Pと、1つのOブロックに当初含まれていた準トリビアル部分領域の数mと、Oブロックの識別子とは、好ましくはバイナリ形式でOブロック内に記される、方法。
【0091】
5.局面1から4の1つに従った方法であって、数mについて、m≦n−1が成り立つ、方法。
【0092】
6.局面1から5の1つに従った方法であって、数mについて、m≦2が成り立つ、方法。
【0093】
7.局面1から6の1つに従った方法であって、各ビットベクトルは最大長が2+n−1である、方法。
【0094】
8.局面3から7のいずれか1つに従った方法であって、各Rブロックにおいてnビットを有する情報領域が生成され、この情報領域に、ビットベクトルの絶対位置Pと1つのRブロックにおける連続した非トリビアル部分領域の数mとがバイナリ形式で記され、数mは情報領域の最終xビットに記され、ここでx=lognである、方法。
【0095】
9.局面4から7のいずれか1つに従った方法であって、各Oブロック内に、各々がnビットを有する第1及び第2の情報領域が生成され、ここにビットベクトルの絶対位置PとOブロックに当初含まれていた準トリビアル部分領域の数mとがバイナリ形式で記され、ビットベクトルの絶対位置Pは第1の情報領域に記され、数mは第2の情報領域に記され、識別子は第1の情報領域の最終xビットに記され、ここでx=lognである、方法。
【0096】
10.局面2から10のいずれか1つに従った方法であって、いくつかのSIMDプロセッサを有するコンピュータユニットでパラレルの組合せが行なわれる、方法。
【0097】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内での全ての変更を含む。

【特許請求の範囲】
【請求項1】
データベースシステムにおいてデータレコードを圧縮する方法であって:
データレコードに二値構造を与えるステップと;
データレコードをいくつかのビットベクトルに分割するステップと;
各ビットベクトルのサイズを、
ビットベクトルを、各部分領域がnビットからなる連続した等しいサイズの部分領域に分割し、
部分領域をトリビアル部分領域、準トリビアル部分領域、及び非トリビアル部分領域に分類し、
1つの非トリビアル部分領域又はいくつかの連続した非トリビアル部分領域を組合せてそれぞれ1つのRブロックとし、
トリビアル部分領域を削除すること、により減じるステップと;
1つの準トリビアル部分領域又はいくつかの連続した準トリビアル部分領域を組合せてそれぞれ1つのOブロックとするステップと、を含む、方法。
【請求項2】
1つの非トリビアル部分領域又はいくつかの連続した非トリビアル部分領域を組合せてそれぞれ1つのRブロックとするステップはさらに、各Rブロックに含まれる最初の非トリビアル部分領域の最初のビットのビットベクトルの絶対位置Pと1つのRブロックにおける連続した非トリビアル部分領域の数mとを記すステップをさらに含む、請求項1に記載の方法。
【請求項3】
1つの準トリビアル部分領域又はいくつかの連続した準トリビアル部分領域を組合せてそれぞれ1つのOブロックとするステップはさらに、各Oブロックに含まれる最初の準トリビアル部分領域の最初のビットのビットベクトルの絶対位置Pと1つのOブロックにおける連続した準トリビアル部分領域の数mとを記すステップをさらに含む、請求項1または請求項2のいずれかに記載の方法。
【請求項4】
準トリビアル部分領域を削除するステップをさらに含む、請求項3に記載の方法。
【請求項5】
ビットベクトルの絶対位置P及び1つのRブロック内の連続した非トリビアル部分領域の数mは各Rブロックの始めに記される、請求項2から請求項4のいずれかに1つに記載の方法。
【請求項6】
Oブロックにおいて、排他的に、ビットベクトルの絶対位置P、1つのOブロックに当初含まれていた準トリビアル部分領域の数m及びこのOブロックの識別子が記される、請求項3から請求項5のいずれか1つに記載の方法。
【請求項7】
数mについて、m≦n−1が成り立つ、請求項2から請求項6のいずれか1つに記載の方法。
【請求項8】
数mについて、m≦2が成り立つ、請求項3から請求項7のいずれか1つに記載の方法。
【請求項9】
各ビットベクトルは最大長が2+n−1である、請求項1から請求項8のいずれか1つに記載の方法。
【請求項10】
各Rブロックにおいてnビットを有する情報領域を生成するステップをさらに含み、この情報領域に、ビットベクトルの絶対位置Pと1つのRブロックにおける連続した非トリビアル部分領域の数mとが記される、請求項5から請求項9のいずれか1つに記載の方法。
【請求項11】
数mは情報領域の最終xビットに記され、ここでx=lognである、請求項10に記載の方法。
【請求項12】
各Oブロック内に、各々がnビットを有する第1及び第2の情報領域が生成され、この第1及び第2の情報領域にビットベクトルの絶対位置PとOブロックに当初含まれていた準トリビアル部分領域の数mとが記される、請求項6から請求項11のいずれか1つに記載の方法。
【請求項13】
ビットベクトルの絶対位置Pは第1の情報領域に記され、数mは第2の情報領域に記される、請求項12に記載の方法。
【請求項14】
識別子は第1の情報領域の最終xビットに記され、ここでx=lognである、請求項12又は請求項13に記載の方法。
【請求項15】
データコレクションを記憶するためのデータ記憶媒体であって、データコレクションを記憶しており、このデータコレクションは請求項1から請求項14のいずれか1つに従った方法で圧縮されたデータレコードのセットからなる、データ記憶媒体。
【請求項16】
データコレクションを記憶するためのデータ記憶媒体であって、データコレクションを記憶しており、このデータコレクションは少なくとも1つのRブロック及び/又は少なくとも1つのOブロックに減じられており、このRブロックはそれぞれのデータレコードの1つの非トリビアル部分領域又はいくつかの連続した非トリビアル部分領域を含み、このOブロックはそれぞれのデータブロックの1つの準トリビアル部分領域又はいくつかの連続した準トリビアル部分領域を含む、データ記憶媒体。
【請求項17】
RブロックはそれぞれのRブロックに含まれる最初の非トリビアル部分領域の最初のビットのビットベクトルの絶対位置Pと、そのRブロックにおける連続した非トリビアル部分領域の数mとをさらに含む、請求項16に記載のデータ記憶媒体。
【請求項18】
OブロックはそれぞれのOブロックに含まれる最初の準トリビアル部分領域の最初のビットのビットベクトルの絶対位置Pと、そのOブロック内の連続した準トリビアル部分領域の数mとをさらに含む、請求項16又は請求項17に記載のデータ記憶媒体。
【請求項19】
Oブロックは、排他的に、ビットベクトルの絶対位置Pと、Oブロックに当初含まれていた準トリビアル部分領域の数mと、そのOブロックの識別子とを含む、請求項18に記載のデータ記憶媒体。
【請求項20】
コンピュータプログラムであって、前記プログラムがデータベースコンピュータシステムで実行されると請求項1から請求項14のいずれかの方法を行なうプログラムコードを含む、コンピュータプログラム。
【請求項21】
請求項20に記載のコンピュータプログラムが記憶された、コンピュータ可読媒体を含む、コンピュータプログラム製品。
【請求項22】
請求項1から請求項14のいずれか1つの方法に従って圧縮されたデータレコードのセットから成るデータコレクションの処理方法であって、少なくとも2つのビットベクトルを選択し、この少なくとも2つのビットベクトルを組合せて1つの解ベクトルとするステップを含み、ビットベクトルの組合せはビットベクトルのOブロック及び/又はRブロックの組合せによって行なわれる、方法。
【請求項23】
少なくとも2つのビットベクトルの組合せにおいて、ビットベクトルのOブロック及び/又はRブロックのいくつかの組合せはパラレルに行なわれる、請求項22に記載の方法。
【請求項24】
いくつかのSIMDプロセッサを有するコンピュータユニットでパラレルの組合せが行なわれる、請求項23に記載の方法。
【請求項25】
請求項15から請求項19のいずれか1つのデータ記憶媒体(20)を含む、コンピュータデータベースシステム。
【請求項26】
コンピュータデータベースシステムであって、データ通信のためのバス(22)及び処理ユニット(14)、ならびにデータのセット(データレコード)を記憶するためのデータ記憶媒体(20)を備えたコンピュータ(12)を含み、コンピュータ(12)は請求項1から請求項14のいずれかに従った方法でデータベースシステム内のデータレコードを圧縮し、圧縮されたデータレコードをデータ記憶媒体(20)に記憶するように設定される、コンピュータデータベースシステム。
【請求項27】
コンピュータデータベースシステムであって、データ通信のためのバス(22)及び処理ユニット(14)、ならびにデータのセット(データレコード)を記憶するためのデータ記憶媒体(20)を備えたコンピュータ(12)を含み、コンピュータ(12)は、請求項22から24のいずれか1つの方法に従ってデータベースシステム内の圧縮されたデータレコードを処理するように設定される、コンピュータデータベースシステム。
【請求項28】
コンピュータプログラムであって、前記プログラムがデータベースコンピュータシステムで実行されると請求項22から請求項24のいずれか1つの方法を実行するプログラムコード手段を含む、プログラム。
【請求項29】
請求項28のコンピュータプログラムを記憶したコンピュータ可読媒体を含む、コンピュータプログラム製品。
【請求項30】
請求項26又は請求項27のいずれか1つに従ったデータベースコンピュータシステムを含む、通話データ記録システム。



【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2013−519141(P2013−519141A)
【公表日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2012−551553(P2012−551553)
【出願日】平成23年2月4日(2011.2.4)
【国際出願番号】PCT/EP2011/000519
【国際公開番号】WO2011/095345
【国際公開日】平成23年8月11日(2011.8.11)
【出願人】(512200099)パーストリーム ゲーエムベーハー (1)
【氏名又は名称原語表記】ParStream GmbH