前後のデータを特定する前後情報を対応付けた複数のデータを記憶するデータ記憶部と、前記データ記憶部に記憶されるデータが予め定めたグループ数に分割されるグループごとに、当該グループ内の先頭に位置するデータを特定する先頭情報と当該グループ内の末尾に位置するデータを特定する末尾情報とを記憶する情報記憶部と、前記データ記憶部にデータを格納する場合に、当該データが有する項目に基づいて当該データの前後となるデータを特定し、当該前後のデータを特定する前後情報を対応付けて前記データ記憶部に格納する格納制御部と、前記格納制御部によってデータが格納された場合に、前記各グループに属するデータ数の差が1つ以下となるように、前記情報記憶部に記憶される前記グループごとの先頭情報と末尾情報とを更新する更新部とを有することを特徴とするデータ分割装置。前記更新部は、前記格納制御部によってデータが格納されたグループに属するデータ数と他のグループに属するデータ数との差分が所定値を超える場合に、前記データが格納されたグループについて、前記データが格納されたグループの先頭情報と末尾情報との間に位置するデータ数が1つ減るように、前記先頭情報または末尾情報を更新することを特徴とする請求項1に記載のデータ分割装置。前記更新部は、前記格納制御部によってデータが格納されたグループに属するデータ数との差分が前記所定値を超える他のグループについて、当該他のグループの先頭情報と末尾情報との間に位置するデータ数が1つ増えるように、前記先頭情報または末尾情報を更新することを特徴とする請求項2に記載のデータ分割装置。前記更新部は、前記格納制御部によってデータが格納されたグループに属するデータ数との差分が前記所定値を超える他のグループと、前記格納されたグループとの間に位置する各グループについて、前記先頭情報と末尾情報との間に位置するデータ数を変えることなく、当該各グループの先頭情報および末尾情報を前記格納したグループの方向に1つずつスライドさせたデータを特定する情報に更新することを特徴とする請求項3に記載のデータ分割装置。前記データ記憶部に記憶されるデータが分割されるグループのうち、ユーザに指定されたグループの先頭情報と末尾情報とを前記情報記憶部から読み出し、読み出した先頭情報に該当するデータから末尾情報に該当するデータまでのデータを前記データ記憶部から読み出して、所定の装置に出力する出力部をさらに有することを特徴とする請求項1から4のいずれか一つに記載のデータ分割装置。コンピュータが、前後のデータを特定する前後情報を対応付けた複数のデータを記憶するデータ記憶部にデータを格納する場合に、当該データが有する項目に基づいて当該データの前後となるデータを特定し、当該前後のデータを特定する前後情報を対応付けて前記データ記憶部に格納し、前記データが格納された場合に、前記各グループに属するデータ数の差が1つ以下となるように、前記データ記憶部に記憶されるデータが予め定めたグループ数に分割されるグループごとに当該グループ内の先頭に位置するデータを特定する先頭情報と当該グループ内の末尾に位置するデータを特定する末尾情報とを記憶する情報記憶部における前記グループごとの先頭情報と末尾情報とを更新する処理を含んだことを特徴とするデータ分割方法。コンピュータに、前後のデータを特定する前後情報を対応付けた複数のデータを記憶するデータ記憶部にデータを格納する場合に、当該データが有する項目に基づいて当該データの前後となるデータを特定し、当該前後のデータを特定する前後情報を対応付けて前記データ記憶部に格納し、前記データが格納された場合に、前記各グループに属するデータ数の差が1つ以下となるように、前記データ記憶部に記憶されるデータが予め定めたグループ数に分割されるグループごとに当該グループ内の先頭に位置するデータを特定する先頭情報と当該グループ内の末尾に位置するデータを特定する末尾情報とを記憶する情報記憶部における前記グループごとの先頭情報と末尾情報とを更新する処理を実行させることを特徴とするデータ分割プログラム。しかしながら、従来技術では、連番などレコードを特定する項目が含まれないストリームデータをグループ分けするには時間がかかるという問題がある。例えば、蓄積後にソートされたストリームデータをグループ分けする場合に、全体のデータ件数に対してどのレコードが分割位置になるかを特定する。そして、分割位置として特定されたレコードまで蓄積されたレコードを逐次読み込み、読み込んだレコードまでを1グループとして分割することになる。したがって、複数のグループに分割する場合には、1つのグループごとに、分割位置の特定、レコード読み込み、グループ化を繰り返すことになるので、全レコードを複数のグループを分けるのに時間がかかる。なお、蓄積してソートされた後に、ストリームデータ各々に連番を与えることも考えられるが、ストリームデータを受信するたびにソートを実行して、ソート後に新たに連番を毎回与える処理を実行することは、処理負荷が大きく現実的ではない。開示の技術は、上記に鑑みてなされたものであって、連番を持たせることなくグループ分けにかかる時間を短縮できるデータ分割装置、データ分割方法およびデータ分割プログラムを提供することを目的とする。本願の開示するデータ分割装置、データ分割方法およびデータ分割プログラムは、一つの態様において、前後のデータを特定する前後情報を対応付けた複数のデータを記憶するデータ記憶部を有する。また、前記データ記憶部に記憶されるデータが予め定めたグループ数に分割されるグループごとに、当該グループ内の先頭に位置するデータを特定する先頭情報と当該グループ内の末尾に位置するデータを特定する末尾情報とを記憶する情報記憶部を有する。また、前記データ記憶部にデータを格納する場合に、当該データが有する項目に基づいて当該データの前後となるデータを特定し、当該前後のデータを特定する前後情報を対応付けて前記データ記憶部に格納する格納制御部を有する。また、前記格納制御部によってデータが挿入された場合に、前記各グループに属するデータ数の差が1つ以下となるように、前記情報記憶部に記憶される前記グループごとの先頭情報と末尾情報とを更新する更新部を有する。本願の開示するデータ分割装置、データ分割方法およびデータ分割プログラムの一つの態様によれば、連番を持たせることなくグループ分けにかかる時間を短縮できるという効果を奏する。以下に、本願の開示するデータ分割装置、データ分割方法およびデータ分割プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。実施例1では、データ分割装置を含むシステムの全体構成例、データ分割装置の構成を示す機能ブロック図、処理の流れ等について説明する。[全体構成]図1は、実施例1に係るシステムの全体構成例を示す図である。図1に示すように、このシステムは、ストリームデータ発生装置1とデータ分割装置10とユーザ端末5とを有する。ストリームデータ発生装置1とデータ分割装置10とはネットワークを介して接続され、同様に、ユーザ端末5とデータ分割装置10とはネットワークを介して接続される。ストリームデータ発生装置1は、ストリームデータを発生させた順番でデータ分割装置10に送信する装置である。例えば、ストリームデータ発生装置1は、POSデータやプローブ交通情報をストリームデータとしてデータ分割装置10に送信する。なお、実施例1では、ストリームデータとしてPOSデータを用いた例で説明する。ユーザ端末5は、ストリームデータ発生装置1が発生させるストリームデータを管理したり、解析したりするユーザが利用する装置である。このユーザ端末5は、データ分割装置10から所望のストリームデータを取得する。ユーザは、ユーザ端末5を用いて取得したストリームデータを解析して、即時的な売り上げを集計したり、即時的な交通量を集計したりする。データ分割装置10は、ストリームデータ発生装置1からストリームデータを受信し、前後のデータを特定する前後情報を対応付けた複数のデータを記憶する。そして、データ分割装置10は、記憶されるデータが予め定めたグループ数に分割されるグループごとに、当該グループ内の先頭に位置するデータを特定する先頭情報と当該グループ内の末尾に位置するデータを特定する末尾情報とを記憶する。その後、データ分割装置10は、新たにデータを格納する場合に、当該データが有する項目に基づいて当該データの前後となるデータを特定し、当該前後のデータを特定する前後情報を対応付けて格納する。そして、データ分割装置10は、データが格納された場合に、各グループに属するデータ数の差が1つ以下となるように、グループごとの先頭情報と末尾情報とを更新する。このように、データ分割装置10は、ストリームデータを1件受信するごとに、分割の境界である先頭情報と末尾情報とを逐次更新し、受信済みのストリームデータを均等に分割することができる。したがって、データ分割装置10は、連番を持たせることなくグループ分けすることができるので、データの分割にかかる時間を短縮できる。[データ分割装置の構成]図2は、実施例1に係るデータ分割装置の構成を示す機能ブロック図である。図2に示すように、このデータ分割装置10は、通信制御I/FInterFace部11と、記憶部12と、制御部13とを有する。なお、記憶部12は、半導体メモリ素子やハードディスクなどの記憶装置である。制御部13は、FPGAFieldProgrammableGateArrayなどの集積回路やCPUCentralProcessingUnitなどの電子回路である。データ分割装置10が有する処理部等はあくまで例示でありこれに限定されるものではなく、例えば、マウスなどの入力装置やディスプレイなどの表示装置を有していてもよい。通信制御I/F部11は、他の装置との通信を制御するインタフェースであり、例えばネットワークインタフェースカードなどである。例えば、通信制御I/F部11は、ストリームデータ発生装置1からストリームデータを受信して制御部13に出力する。また、通信制御I/F部11は、ユーザ端末5からデータ取得要求を受信して制御部13に出力し、制御部13から出力されたデータをユーザ端末5に送信する。記憶部12は、制御部13が実行するプログラムやデータを記憶するとともに、受信済みDB12aと分割境界DB12bとを有する。なお、記憶部12は、制御部13が有する各種処理部が処理を実行する際にデータを一時的に格納する作業領域等も有する。受信済みDB12aは、前後のデータを特定する前後情報を対応付けた複数のデータを記憶するデータベースである。つまり、受信済みDB12aは、所定の順序で整列させたストリームデータを記憶するデータベースである。図3は、受信済みDBに記憶される情報の例を示す図である。図3に示すように、受信済みDB12aは、時刻、名前、年齢、年収万円、支払円を1レコードとして記憶する。ここで記憶される時刻は、当該ストリームデータを受信した時刻であり、名前は、POSデータとして通知されたユーザの名前である。年齢は、ユーザの年齢であり、年収は、ユーザの年収であり、支払は、ユーザが支払った金額である。なお、ここで示した情報はあくまで例示であり、これに限定されるものではなく、任意に設定変更することができる。実施例1では、図3に示すように、受信済みDB12aは、年収で昇順にソートされた情報を記憶するが、これに限定されるものではなく、任意にソート対象等を変更できる。図3の場合には、時刻9に受信された年収1200万円のIrisを先頭にして、Dick、Erik、Henry、George、Bob、Alice、Caren、Frankの順番で記憶する。次に、受信済みDB12aがデータを記憶する実装例を説明する。図4は、受信済みDBの実装例を示す図である。図4に示すように、受信済みDB12aは、データに当該データの前後のデータを特定するポインタを対応付けて記憶する。具体的には、時刻9のIrisには、前データのポインタとしてNULLが対応付けられているとともに、後ろデータのポインタとして時刻4のDickが対応付けられている。同様に、時刻4のDickには、前データのポインタとして時刻9のIrisが対応付けられているとともに、後ろデータのポインタとして時刻5のErikが対応付けられている。同様に、時刻5のErikには、前データのポインタとして時刻4のDickが対応付けられているとともに、後ろデータのポインタとして時刻8のHenryが対応付けられている。同様に、時刻8のHenryには、前データのポインタとして時刻5のErikが対応付けられているとともに、後ろデータのポインタとしてNULLが対応付けられている。なお、実装例はあくまで例であり、これに限定されるものではない。ここで、実施例1の説明に用いる用語について説明する。実施例1では、ソート後に均等分割された個々のデータ集合をバケットと呼ぶ。また、各バケットの境を分割境界と呼ぶ。また、均等分割とは、データ数Nが分割数Mで割り切れない場合に、各バケットの大きさの差がたかだか1となるように分割することを言う。つまり、データ数が10で分割数が3の場合には、2、3、5などのように分割されたデータ数の差が2以上になるように分割することではなく、3、3、4などのように分割されたデータ数の差が1以下に分割することをいう。なお、属するデータ数が多いバケットを大バケットと呼び、小さい方のバケットを小バケットと呼ぶ。また、データ数Nが分割数Mで割り切れる場合は、全バケットの大きさが等しくなるよう均等分割を行い、このときは、便宜上、全バケットを小バケットとみなす。続いて、上記用語の具体例を説明する。図5は、バケットおよび分割境界を説明する図である。図5に示す例は、時刻1から9までのストリームデータを年収でソートして昇順に並べた例である。この例では、データ数が9個であることより、各バケットに属するデータ数が3個となる。具体的には、データ分割装置10は、時刻9、時刻4、時刻5をバケットD1、時刻8、時刻7、時刻2をバケットD2、時刻1、時刻6、時刻3をバケットD3に分割する。また、バケットD1とバケットD2との境界およびバケットD2とバケットD3との境界各々が分割境界となる。図2に戻り、分割境界DB12bは、分割境界を特定する情報を記憶するデータベースである。図6は、分割境界DBに記憶される情報の例を示す図である。図6に示すように、分割境界DB12bは、バケット名、データ数サイズ、先頭情報、末尾情報を対応付けて記憶する。ここで記憶されるバケット名は、バケットを識別する識別子であり、例えばバケットの名称などである。データ数サイズは、バケットに属するデータの数であり、データ数が3個の場合にはサイズが3である。先頭情報は、バケットに属するデータの先頭を示すポインタであり、例えば時刻などデータを識別できる任意の項目や、該当データの論理アドレスなどで指定できる。末尾情報は、バケットに属するデータの末尾を示すポインタであり、例えば時刻などデータを識別できる任意の項目や、該当データの論理アドレスなどで指定できる。実施例1では、先頭情報および末尾情報として時刻を用いることとする。なお、サイズ0およびサイズ1のバケットの情報は、便宜上、以下を満たすように分割境界DB12bに格納することを仮定する。サイズ0のバケットに対応する先頭情報と末尾情報は、共にNULLとする。分割境界DBにおいて先頭情報および末尾情報として格納されるNULLは、便宜上、受信済みDB12aの最終データの1つ下にある仮想的な末端データを表わしているとみなす。また、サイズ1のバケットに対応する先頭情報と末尾情報には、共に、そのバケットに唯一含まれるデータが格納される。図6の例は、バケットD1には、時刻9のデータから時刻5のデータまでの3つのデータが属することを示す。バケットD2には、時刻8のデータから時刻2のデータまでの3つのデータが属することを示す。バケットD3には、時刻1のデータから時刻6のデータまでの3つのデータが属することを示す。なお、図6に示したデータベースの例はあくまで例示であり、これに限定されるものではなく、例えば図3と同様の実装形式を用いることもでき、他のデータ形式を用いることもできる。同様に、ソート済みのストリームデータ群についても任意のデータ形式を用いることができる。制御部13は、データ分割装置10を全体的に制御する処理部であり、分割数設定部14と分割処理部15と出力部21とを有する。分割数設定部14は、ユーザ端末5等から分割数を受け付けて、分割処理部15に通知する処理部である。例えば、分割数設定部14は、ユーザ端末5から分割数3を受け付けると、受け付けた分割数を分割処理部15に通知し、記憶部12の作業領域等に格納する。また、分割数設定部14は、ソート対象とするデータ項目をユーザ端末5等から分割数を受け付けて、分割処理部15に通知する。分割処理部15は、受信部16と位置特定部17と格納制御部18とバケット判定部19と更新部20とを有し、これらによって、受信済みのストリームデータを均等分割する処理部である。受信部16は、ストリームデータ発生装置1からストリームデータを受信する処理部である。受信部16は、ストリームデータ発生装置1からストリームデータを受信し、受信したストリームデータを位置特定部17に出力する。なお、受信部16は、受信したストリームデータを受信順に記憶部12の作業領域等に格納してもよい。位置特定部17は、受信部16が受信したストリームデータに対して、受信済みDB12aへの挿入位置を特定し、特定した結果を格納制御部18に通知する処理部である。例えば、位置特定部17は、受信されたストリームデータからソート対象のデータ項目を特定し、該当する値を抽出する。そして、位置特定部17は、受信済みDB12aに記憶されるストリームデータの各レコードにおけるソート対象のデータ項目を参照し、抽出した値の挿入位置を特定する。具体的な例を挙げると、位置特定部17は、図3に示したデータが受信済みDB12aに記憶されている状態で、時刻、名前、年齢、年収、支払として10、Jane、45、900、2300を受信したとする。この場合、位置特定部17は、受信したストリームデータからソート対象の項目である年収を特定し、該当する値として900を抽出する。その後、位置特定部17は、受信済みDB12aに記憶されるストリームデータの各レコードにおけるソート対象のデータ項目を参照し、年収1000のレコードと年収800のレコードの間が、抽出した900の挿入位置であると特定する。別例を挙げると、位置特定部17は、受信されたストリームデータを記憶部12の作業領域に格納し、この時点で受信済みデータをソートして並び替える。そして、位置特定部17は、並び替えたデータと受信済みDB12aに記憶されるストリームデータとを比較して、受信されたストリームデータの挿入位置を判定することもできる。さらに別例を挙げると、位置特定部17は、図3に示した受信済みDB12aと図6に示した分割境界DB12bが与えられた状態で、時刻、名前、年齢、年収、支払として10、Jane、45、900、2300を受信したとする。この場合、位置特定部17は、受信したストリームデータからソート対象の項目である年収を特定し、該当する値として900を抽出する。その後、位置特定部17は、分割境界DB12bに登録された各バケットの先頭情報と末尾情報を参照し、さらに受信済みDB12aを参照することにより、各バケットの先頭データと末尾データにおける年収を抽出し、挿入されるバケットをまずは特定する。具体的には、バケットD1の先頭データと末尾データの年収は、それぞれ1200と800であるので、900の挿入されるバケットはD1であることを特定する。そして、受信済みDB12aにおけるバケットD1の先頭データから末尾データまでをさらに参照することで、年収1000のレコードと年収800のレコードの間が、抽出した900の挿入位置であると特定する。また、受信したデータがどのバケットにも挿入されない場合として、隣接するバケットの境界に挿入される場合と、受信済みDBの先頭または末尾に挿入される場合があるが、いずれの場合も、分割境界DB12bの先頭情報と末尾情報を用いて、データの挿入位置を特定することができる。格納制御部18は、受信済みDB12aにデータを格納する場合に、当該データが有する項目に基づいて当該データの前後となるデータを特定し、当該前後のデータを特定する前後情報を対応付けて受信済みDB12aに格納する処理部である。言い換えると、格納制御部18は、位置特定部17によって特定された挿入位置に、受信部16によって受信されたストリームデータを挿入する処理部である。上記例で説明すると、年収1000のレコードと年収800のレコードの間が挿入位置として特定されたとする。この場合、格納制御部18は、受信された10、Jane、45、900、2300を年収1000のレコードと年収800のレコードの間に挿入する。このとき、格納制御部18は、年収1000のレコードに対応付けられる前後情報のうち、後ろのポインタを時刻5、Erikから時刻10、Janeに変更する。また、格納制御部18は、年収800のレコードに対応付けられる前後情報のうち、前のポインタを時刻4、Dickから時刻10、Janeに変更する。そして、格納制御部18は、データ10、Jane、45、900、2300に対しては、前後情報として前のポインタを時刻4Dick、後ろのポインタを時刻5、Erikを格納する。このようにして、格納制御部18は、受信済みDB12aに新たなデータを格納する。なお、格納制御部18は、新たなストリームデータを受信済みDB12aに格納したことをバケット判定部19に通知する。バケット判定部19は、受信済みDB12aに記憶されるデータをグループ化する各バケットが小バケットか大バケットかを判定する処理部である。例えば、バケット判定部19は、格納制御部18によってデータが格納された場合に、各バケットに属するデータ数をスキャンするとともに、受信済みDB12aや分割境界DB12bを参照し、各バケットの大小を特定する。そして、バケット判定部19は、特定した情報を更新部20に通知する。更新部20は、拡張実行部20aと縮退実行部20bとスライド実行部20cとを有する。更新部20は、これらの処理部によって、格納制御部18によってデータが挿入された場合に、各グループに属するデータ数の差が1つ以下となるように、分割境界DB12bに記憶されるグループごとの先頭情報と末尾情報とを更新する。拡張実行部20aは、指定したバケットを上または下方向に拡張し、分割境界DB12bを拡張させた後のバケット情報に更新する処理部である。図7は、バケットの拡張例1を説明する図である。図7に示すように、拡張実行部20aは、バケット判定部19の判定結果に基づいてバケットDpを上方向に拡張させると判定する。この場合、拡張実行部20aは、バケットDpの先頭情報を1件上のデータに置き換えてデータ数を1つ増やして、バケットDpを上方向に拡張させる。このように、バケットDpを上方向に拡張させる方法をupexpandpと呼ぶ。また、図7に示した空白はソートされたレコードデータを示す。なお、拡張実行部20aがバケットDpを上方向に拡張させると判定する例については、フローの説明で詳細に説明する。また、図8は、バケットの拡張例2を説明する図である。図8に示すように、拡張実行部20aは、バケット判定部19の判定結果に基づいてバケットDpを下方向に拡張させると判定する。この場合、拡張実行部20aは、バケットDpの末尾情報を1件下のデータに置き換えてデータ数を1つ増やして、バケットDpを下方向に拡張させる。このように、バケットDpを下方向に拡張させる方法をdownexpandpと呼ぶ。また、図8に示した空白はソートされたレコードデータを示す。なお、拡張実行部20aがバケットDpを下方向に拡張させると判定する例については、フローの説明で詳細に説明する。縮退実行部20bは、指定したバケットを上または下方向に縮退させ、分割境界DB12bを縮退させた後のバケット情報に更新する処理部である。図9は、バケットの縮退例1を説明する図である。図9に示すように、縮退実行部20bは、バケット判定部19の判定結果に基づいてバケットDpを上方向に縮退させると判定する。この場合、縮退実行部20bは、バケットDpの末尾情報を1件上のデータに置き換えてデータ数を1つ減らし、バケットDpを上方向に縮退させる。このように、バケットDpを上方向に縮退させる方法をupshrinkpと呼ぶ。また、図9に示した空白はソートされたレコードデータを示す。また、図10は、バケットの縮退例2を説明する図である。図10に示すように、縮退実行部20bは、バケット判定部19の判定結果に基づいてバケットDpを下方向に縮退させると判定する。この場合、縮退実行部20bは、バケットDpの先頭情報を1件下のデータに置き換えてデータ数を1つ減らしバケットDpを下方向に縮退させる。このように、バケットDpを下方向に縮退させる方法をdownshrinkpと呼ぶ。また、図10に示した空白はソートされたレコードデータを示す。なお、縮退実行部20bがバケットDpを上方向または下方向に縮退させると判定する例については、フローの説明で詳細に説明する。スライド実行部20cは、各バケットに属するデータ数を変えることなく、連続した複数のバケットを上方向または下方向に1ずつずらす処理部である。図11は、バケットのスライド例1を説明する図である。図11に示すように、スライド実行部20cは、バケット判定部19の判定結果に基づいてバケットDpからバケットDqまでを上にスライドさせると判定する。この場合、スライド実行部20cは、バケットDpからバケットDqに対して、各バケットの大きさを変えることなく、データを上へ1件ずつずらす操作を行う。すなわち、スライド実行部20cは、対象となるバケットDpからバケットDq各々の先頭および末尾情報を、それぞれ1件上のデータに置き換える。なお、ここではp<qと仮定する。このように、バケットDpからバケットDqを上方向にスライドさせる方法をupslidep、qと呼ぶ。また、図11に示した空白はソートされたレコードデータを示す。また、図12は、バケットのスライド例2を説明する図である。図12に示すように、スライド実行部20cは、バケット判定部19の判定結果に基づいてバケットDpからバケットDqまでを下にスライドさせると判定する。この場合、スライド実行部20cは、バケットDpからバケットDqに対して、各バケットの大きさを変えることなく、データを下へ1件ずつずらす操作を行う。すなわち、スライド実行部20cは、対象となるバケットDpからバケットDq各々の先頭および末尾情報を、それぞれ1件下のデータに置き換える。なお、ここではp<qと仮定する。このように、バケットDpからバケットDqを下方向にスライドさせる方法をdownslidep、qと呼ぶ。また、図12に示した空白はソートされたレコードデータを示す。なお、スライド実行部20cが各バケットを上方向または下方向にスライドさせると判定する例については、フローの説明で詳細に説明する。出力部21は、受信済みDB12aに記憶されるデータが分割されるグループのうち、ユーザに指定されたグループの先頭情報と末尾情報とを分割境界DB12bから読み出す。そして、出力部21は、読み出した先頭情報に該当するデータから末尾情報に該当するデータまでのデータを受信済みDB12aから読み出して、所定の装置に出力する処理部である。例えば、出力部21がユーザ端末5からバケットD1からバケットD2の出力依頼を受信したとする。この場合、出力部21は、まず、バケットD1の先頭情報と末尾情報を分割境界DB12bから取得する。続いて、出力部21は、取得した先頭情報によって特定されるレコードから、末尾情報によって特定されるレコードまでに位置する各レコードを読み出す。その後、出力部21は、読み出した各レコードをバケットD1のデータとしてユーザ端末5に送信する。続いて、出力部21は、バケットD2の先頭情報と末尾情報を分割境界DB12bから取得する。続いて、出力部21は、取得した先頭情報によって特定されるレコードから、末尾情報によって特定されるレコードまでに位置する各レコードを読み出す。その後、出力部21は、読み出した各レコードをバケットD2のデータとしてユーザ端末5に送信する。[処理の流れ]次に、図13から図16を用いてデータ分割装置10が実行する処理の流れを説明する。まず、全体的な処理の流れを説明し、次に、サブフローなどの各処理について説明する。全体的な処理の流れ図13は、データ分割装置によるデータ分割から出力までの一連の流れを示すフローチャートである。なお、ここでは、受信部16が、受信したストリームデータを順番に記憶部12の作業領域等に格納している例で説明する。また、記憶されるストリームデータをS[i]iは自然数とする。図13に示すように、格納制御部18は、記憶されるストリームデータの先頭のデータであるS[1]を記憶部12から読み出して受信済みDB12aの先頭バケットに格納するS101。続いて、位置特定部17は、iをインクリメントしてi=2としS102、ストリームデータS[i]が記憶部12の作業領域等に格納されているか否かを判定するS103。そして、位置特定部17は、ストリームデータS[i]が存在しない場合はS103否定、処理を終了する。一方、ストリームデータS[i]が存在する場合はS103肯定、位置特定部17は、ストリームデータS[i]を作業領域等から読み込みS104、ソート対象の項目にしたがって、受信済みDB12aにおける挿入位置jを特定する。そして、格納制御部18は、位置特定部17が特定した挿入位置jにストリームデータS[i]を挿入するS105。つまり、格納制御部18は、挿入したストリームデータS[i]の前後情報と、挿入位置の前後のデータ各々の前後情報とを更新する。その後、バケット判定部19と更新部20とは、分割境界更新処理を実行して、バケットの分割境界を更新するS106。当該処理が終了した後、現在の時刻iの時点で出力要求を受信した場合にはS107肯定、出力部21は、ユーザ端末5から指示されたバケットに該当するデータを受信済みDB12aから読み出して、ユーザ端末5に出力するS108。そして、位置特定部17は、iをインクリメントした後S109、S103以降の処理を繰り返す。また、S107において出力要求を受信していない場合にはS107否定、位置特定部17は、S108を実行することなく、S109を実行する。分割境界更新処理の流れ図14は、データ分割装置による分割境界更新処理の流れを示すフローチャートである。図14に示すように、バケット判定部19は、新たなデータ以下、挿入データdと呼ぶがバケットDpの内部に挿入されたか否かを判定するS201。例えば、バケット判定部19は、挿入されたデータがどの時刻とどの時刻の間かを受信済みDB12aを参照して特定する。続いて、バケット判定部19は、受信済みDB12aと分割境界DB12bを参照して、特定した両時刻の位置がいずれかのバケットの内部か否かを判定する。一例として、図4と図5に示したデータにおいて、時刻9と時刻4との間に時刻10のデータが挿入されたとする。この場合、バケット判定部19は、挿入された位置が時刻9と時刻4の間であることを、挿入前の受信済みDB12aと挿入後の受信済みDB12aとの比較によって特定する。続いて、バケット判定部19は、図5を参照して、時刻9と時刻4のデータがバケットD1に属することを特定し、バケットD1には時刻9、時刻4、時刻5のデータが存在することを特定する。この結果、バケット判定部19は、時刻4の後ろに時刻5のデータが存在することから、時刻10のデータがバケット内部に挿入されたと判定する。図14に戻り、バケット判定部19は、挿入データdがバケットDpの内部に挿入された場合S201肯定、データが挿入されたバケットが小バケットか否かを判定するS202。一例を挙げると、図5に示したように、全バケットのデータ数が3である状態でバケットD1にデータが挿入されたとする。この場合、バケット判定部19は、バケットD1のデータ数が4となり、他のバケットとのデータ数の差が1以上であることから、データが挿入されたバケットは大バケットと判定する。別の例としては、バケットD1のデータ数が3、バケットD2のデータ数が3、バケットD3のデータ数が2の状態でバケットD3にデータが挿入されたとする。この場合、バケット判定部19は、バケットD3のデータ数が3となり、他のバケットとのデータ数の差が1未満であることから、データが挿入されたバケットは小バケットと判定する。図14に戻り、バケット判定部19がバケットDpを小バケットと判定するとS202肯定、更新部20は、処理1を実行するS203。すなわち、更新部20は、分割境界DB12bに記憶されるバケットDpのデータ数を1増やす。その後、処理を終了する。一方、バケット判定部19がバケットDpを大バケットと判定するとS202否定、更新部20は、処理2を実行しS204、処理を終了する。すなわち、更新部20は、分割境界DB12bに記憶されるバケットDpのデータ数を1増やし、バケットDpの一番近くにある小バケットをバケットDqとする。ここで、p<qであるならば、つまり、バケットDpの方がバケットDqよりも上に存在する場合に、更新部20は、upslidep1、q-1、upexpandq、upshrinkpを実行する。具体的には、スライド実行部20cは、バケットDpの1つ下のバケットであるバケットDp1から、バケットDqの1つ上のバケットであるバケットDq-1までの各バケットの先頭および末尾情報をそれぞれ1件上のデータに置き換える。そして、拡張実行部20aは、バケットDqの先頭情報を1つ上のデータに置き換えてバケットサイズすなわち属するデータ数を1つ増やして、バケットDqを上方向に拡張する。また、縮退実行部20bは、バケットDpの末尾情報を1つ上のデータに置き換えてバケットサイズすなわちデータ数を1つ減らし、バケットDpを上方向に縮退させる。一方、p>qであるならば、つまり、バケットDpの方がバケットDqよりも下に存在する場合に、更新部20は、downslideq1、p-1、downexpandq、downshrinkpを実行する。具体的には、スライド実行部20cは、バケットDqの1つ下のバケットであるバケットDq1から、バケットDpの1つ上のバケットであるバケットDp-1までの各バケットの先頭情報および末尾情報をそれぞれ1件下のデータに置き換える。そして、拡張実行部20aは、バケットDqの末尾情報を1つ下のデータに置き換えてデータ数を1つ増やして、バケットDqを下方向に拡張させる。また、縮退実行部20bは、バケットDpの先頭情報を1つ下のデータに置き換えてデータ数を1つ減らし、バケットDpを下方向に縮退させる。図14に戻り、バケット判定部19は、挿入データdがバケットDpの内部に挿入されていないと判定した場合S201否定、挿入データdがバケットDpとバケットDp1の間に挿入されたか否かを判定するS205。一例として、図4と図5に示したデータを用いて説明すると、バケット判定部19は、時刻5と時刻8の間、または、時刻2と時刻1の間に新たなデータが挿入された場合に、挿入データdがバケットの間に挿入されたと判定する。具体的には、バケット判定部19は、分割境界DB12bを参照し、挿入データdの挿入位置がバケットDpの末尾情報とバケットDp1の先頭情報の間に位置する場合に、バケットの間に挿入されたと判定する。図14に戻り、更新部20は、バケット判定部19によって挿入データdがバケットDpとバケットDp1の間に挿入されたと判定された場合S205肯定、サブフロー1を実行するS206。一方、更新部20は、バケット判定部19によって挿入データdがバケットDpとバケットDp1の間に挿入されていないと判定された場合S205否定、サブフロー2を実行するS207。サブフロー1の流れ図15は、分割境界更新処理のサブフロー1の流れを示すフローチャートである。図15に示すように、バケットDpが小バケットであると、バケット判定部19によって判定された場合S301肯定、更新部20は、処理3を実行するS302。すなわち、更新部20は、分割境界DB12bに記憶されるバケットDpの末尾情報を挿入データdの情報に修正して、データ数を1増やす。一方、バケット判定部19は、バケットDpが小バケットでないと判定した場合S301否定、バケットDpとバケットDp1がともに大バケットであるか否かを判定するS303。そして、バケットDpとバケットDp1がともに大バケットであると、バケット判定部19によって判定された場合S303肯定、更新部20は、処理4を実行するS304。すなわち、更新部20は、バケットDpまたはバケットDp1の一番近くに位置する小バケットをDqとする。そして、p1<qであるならば、つまり、バケットDpの1つ下のバケットDp1の方がバケットDqよりも上に存在する場合に、更新部20は、upslidep1、q-1、upexpandqを実行する。具体的には、スライド実行部20cは、バケットDpの1件下のバケットであるバケットDp1から、バケットDqの1件上のバケットであるバケットDq-1までの各バケットの先頭情報および末尾情報をそれぞれ1件上のデータに置き換える。さらに、拡張実行部20aは、バケットDqの先頭情報を1件上のデータに置き換えてデータ数を1つ増やし、バケットDqを上方向に拡張する。また、p>qであるならば、つまり、バケットDpの方がバケットDqよりも下に存在する場合に、更新部20は、downslidep、q1、downexpandqを実行する。具体的には、スライド実行部20cは、バケットDpから、バケットDqの1件下のバケットであるバケットDq1までの各バケットの先頭情報および末尾情報をそれぞれ1件下のデータに置き換える。さらに、拡張実行部20aは、バケットDqの先頭情報を1件下のデータに置き換えてデータ数を1つ増やし、バケットDqを下方向に拡張する。図15に戻り、バケットDp1が大バケットでないとバケット判定部19によって判定された場合S303否定、更新部20は、処理5を実行するS305。すなわち、更新部20は、分割境界DB12bに記憶されるバケットDp1の先頭情報を挿入データdの情報に修正して、データ数を1増やす。サブフロー2の流れ図16は、分割境界更新処理のサブフロー2の流れを示すフローチャートである。図16に示すように、バケット判定部19は、受信済みDB12aを参照して挿入データdの挿入位置が全データの先頭であると判定した場合S401肯定、先頭バケットD1が大バケットであるか否かを判定するS402。そして、バケット判定部19が分割境界DB12b等を参照して先頭バケットD1が大バケットであると判定した場合S402肯定、更新部20は、処理6を実行するS403。すなわち、更新部20は、分割境界DB12bに記憶されるバケットD1の先頭情報を挿入データdに修正して、データ数を1増やし、バケットD1の一番近くに位置する小バケットをDpとする。その後、更新部20は、upshrink1とupslide2、q-1とupexpandqを実行する。具体的には、縮退実行部20bは、分割境界DB12bに記憶されるバケットD1の末尾情報を1件上のデータに置き換えて、データ数を1減らす。また、スライド実行部20cは、分割境界DB12bにおいてバケットD2からバケットDq-1までの各バケットの先頭情報および末尾情報をそれぞれ1件上のデータに置き換える。また、拡張実行部20aは、分割境界DB12bにおいてバケットDqの先頭情報を1件上のデータに置き換えて、データ数を1増やす。一方、バケット判定部19が分割境界DB12b等を参照して先頭バケットD1が大バケットではないと判定した場合S402否定、更新部20は、処理7を実行するS404。すなわち、更新部20は、分割境界DB12bにおいて、先頭バケットD1の先頭情報を挿入データdの情報に修正して、データ数を1増やす。また、S401において、バケット判定部19は、受信済みDB12aを参照して挿入データdの挿入位置が全データの先頭でないと判定した場合S401否定、末尾バケットDmが大バケットであるか否かを判定するS405。つまり、バケット判定部19は、挿入データdの挿入位置が末尾であると判定した場合、末尾バケットDmが大バケットであるか否かを判定する。そして、バケット判定部19が分割境界DB12b等を参照して末尾バケットDmが大バケットであると判定した場合S405肯定、更新部20は、処理8を実行するS406。すなわち、更新部20は、分割境界DB12bにおいて、末尾バケットDmの末尾情報を挿入データdの情報に修正して、データ数を1増やす。一方、バケット判定部19が分割境界DB12b等を参照して末尾バケットDmが大バケットでないと判定した場合S405否定、更新部20は、処理9を実行するS407。すなわち、更新部20は、分割境界DB12bに記憶される末尾バケットDmの末尾情報を挿入データdの情報に修正してデータ数を1増やし、末尾バケットDmの一番近くに位置する小バケットをDqとする。その後、更新部20は、downshrinkmとdownslideq1、m-1とdownexpandqを実行する。具体的には、縮退実行部20bは、分割境界DB12bに記憶されるバケットDmの先頭情報を1件下のデータに修正して、データ数を1減らす。また、スライド実行部20cは、分割境界DB12bにおいて、バケットDq1からバケットDm-1までの各バケットの先頭情報および末尾情報をそれぞれ1件下のデータに置き換える。また、拡張実行部20aは、分割境界DB12bにおいて、バケットDqの末尾情報を1件下のデータに置き換えて、データ数を1増やす。[データ分割の具体例]次に、図17から図28を用いて、ストリームデータを受信して分割境界を更新する一連の処理の具体例を説明する。まず、具体例の説明に用いるデータ例等について説明する。図17は、具体例として取り上げるストリームデータの例を示す図である。図18は、具体例として取り上げる分割境界の例を示す図である。ストリームデータ発生装置1は、図17に示すストリームデータのうち時刻1から順にデータ分割装置10に送信し、データ分割装置10の受信部16は、時刻1のストリームデータから順に受信する。ストリームデータは、時刻、名前、年齢、年収万円、支払円の項目を有する。なお、受信されたデータは、年収を降順でソートされるものとする。また、データ分割装置10の分割境界DB12bは、図18に示すように、バケットごとに、データ数と先頭情報と末尾情報とを対応付けて記憶する。ここで記憶されるデータ数は、バケットに属するデータの数である。先頭情報は、バケットの先頭に位置するデータであり、当該データの時刻が格納される。末尾情報は、バケットの末尾に位置するデータであり、当該データの時刻が格納される。なお、ここではバケット数を3として説明する。つまり、受信したデータを3つのグループに分割する例を説明する。このような状態において、受信部16が、1、Alice、24、300、1500とするストリームデータを受信したとする。すると、位置特定部17は、受信済みDB12aにデータが格納されていないことから、当該Aliceのデータの格納位置を受信済みDB12aの先頭と特定する。そして、格納制御部18は、Aliceのデータを受信済みDB12aの先頭に格納する。その後、更新部20は、分割境界DB12bを更新する。図19は、具体的な分割例を説明する図である。図19に示すように、更新部20は、先頭のバケットであるバケットD1の先頭情報および末尾情報各々にAliceのデータを特定する時刻1を格納し、バケットD1のデータ数を1に更新する。続いて、受信部16が、2、Bob、55、450、2500とするストリームデータを受信したとする。すると、位置特定部17は、格納済みAliceの年収300と受信したBobの年収1500を比較し、当該Bobのデータの格納位置を受信済みDB12aの先頭と特定する。そして、格納制御部18は、当該Bobのデータを受信済みDB12aの先頭に格納する。その後、更新部20は、分割境界DB12bを更新する。図20は、具体的な分割例を説明する図である。図20に示すように、更新部20は、先頭のバケットであるバケットD1の先頭情報にBobのデータを特定する時刻2を格納し、バケットD1のデータ数を2に更新する。ここで、バケット判定部19は、分割境界DB12bの各分割境界を参照し、バケットD1のデータ数が他のバケットのデータ数よりも2以上多く、バケットD1が大バケットであることを特定して、これらを更新部20に通知する。すると、更新部20は、新たなデータが挿入された位置が受信済みDB12aの先頭であり、先頭であるバケットD1が大バケットであることから、処理6を実行する。すなわち、図20に示すように、更新部20は、バケットD1に一番近い小バケットがバケットD2であると特定する。つまり、q=2となる。そして、縮退実行部20bは、upshrink1を実行し、分割境界DB12bに記憶されるバケットD1の先頭情報および末尾情報をBobのデータを特定する時刻2に修正し、データ数を1減らして1にする。また、拡張実行部20aは、分割境界DB12bにおいて、バケットD2の先頭情報を、仮想の末端データとみなされるNULLに対して1件上のAliceの時刻1に置き換えて、データ数を1増やす。サイズ1のバケットに関する仮定により、バケットD2の末尾情報も時刻1に置き換える。このとき、2>q-1となるため、更新部20は、upslide2、q-1を実行しない。続いて、受信部16が、3、Caren、62、200、3000とするストリームデータを受信したとする。すると、位置特定部17は、格納済み各データの年収と受信したCarenの年収200を比較し、当該Carenのデータの格納位置を受信済みDB12aの末尾と特定する。そして、格納制御部18は、当該Carenのデータを受信済みDB12aの末尾に格納する。その後、更新部20は、分割境界DB12bを更新する。図21は、具体的な分割例を説明する図である。図21に示すように、バケット判定部19は、Carenのデータの格納位置が末尾であり、格納対象の末尾のバケットが小バケットであると判定する。この結果、更新部20は、処理8を実行する。すなわち、更新部20は、分割境界DB12bにおいて、末尾バケットD3の末尾情報にCarenのデータを特定する時刻3を格納して、データ数を1増やす。サイズ1のバケットに関する仮定により、バケットD3の先頭情報にも時刻3を格納する。続いて、受信部16が、4、Dick、53、1000、5500とするストリームデータを受信したとする。すると、位置特定部17は、格納済み各データの年収と受信したDickの年収1000を比較し、当該Dickのデータの格納位置を受信済みDB12aの先頭と特定する。そして、格納制御部18は、当該Dickのデータを受信済みDB12aの先頭に格納する。その後、更新部20は、分割境界DB12bを更新する。図22は、具体的な分割例を説明する図である。図22に示すように、バケット判定部19は、Dickのデータの格納位置が先頭であり、格納対象の先頭のバケットが小バケットであると判定する。この結果、更新部20は、処理7を実行する。すなわち、更新部20は、分割境界DB12bにおいて、先頭バケットD1の先頭情報にDickのデータを特定する時刻4を格納して、データ数を1増やして2にする。続いて、受信部16が、5、Erik、35、800、10000とするストリームデータを受信したとする。すると、位置特定部17は、格納済みの各データの年収と受信したErikの年収800を比較し、当該Erikのデータの格納位置をDickとBobの間と特定する。そして、格納制御部18は、受信済みDB12aにおけるDickとBobの間にErikのデータを格納する。その後、更新部20は、分割境界DB12bを更新する。図23は、具体的な分割例を説明する図である。図23に示すように、更新部20は、先頭のバケットであるバケットD1にデータが追加されたので、バケットD1のデータ数を3に更新する。ここで、バケット判定部19は、分割境界DB12bの各分割境界を参照し、バケットD1のデータ数が他のバケットのデータ数よりも2以上となっていることと、バケットD1が大バケットであることを特定して、更新部20に通知する。すると、更新部20は、新たなデータがバケットD1の内部に格納され、バケットD1が大バケットであることから、処理2を実行する。すなわち、図23に示すように、更新部20は、バケットD1に一番近い小バケットがバケットD2であると特定する。つまり、q=2となり、p<qとなる。したがって、縮退実行部20bは、upshrink1を実行し、分割境界DB12bに記憶されるバケットD1の末尾情報をDickのデータを特定する時刻5に修正してデータ数を1減らして1にする。また、拡張実行部20aは、upexpand2を実行し、分割境界DB12bに記憶されるバケットD2の先頭情報を1件上のBobの時刻2に置き換えて、データ数を1増やして2にする。このとき、p1>q-1となるため、更新部20は、upslidep1、q-1を実行しない。続いて、受信部16が、6、Franklin、19、250、300とするストリームデータを受信したとする。すると、位置特定部17は、格納済みの各データの年収と受信したErikの年収250を比較し、当該Franklinのデータの格納位置をAliceとCarenの間と特定する。そして、格納制御部18は、受信済みDB12aにおけるAliceとCarenの間にFranklinのデータを格納する。ここで、バケット判定部19は、受信済みDB12aや分割境界DB12bを参照し、Franklinのデータの格納位置がバケットD2とバケットD3の間であり、バケットD2が大バケットで、バケットD3が小バケットであると判定する。この判定を受けて、更新部20は、処理5を実行する。図24は、具体的な分割例を説明する図である。図24に示すように、更新部20は、分割境界DB12bに記憶されるバケットD3の先頭情報をFranklinのデータを特定する時刻6に修正し、データ数を1増やして2に更新する。続いて、受信部16が、7、George、25、600、1300とするストリームデータを受信したとする。すると、位置特定部17は、格納済みの各データの年収と受信したGeorgeの年収600を比較し、当該Georgeのデータの格納位置をErikとBobの間と特定する。そして、格納制御部18は、受信済みDB12aにおけるErikとBobの間にGeorgeのデータを格納する。ここで、バケット判定部19は、受信済みDB12aや分割境界DB12bを参照し、Georgeのデータの格納位置がバケットD1とバケットD2の間であり、バケットD1とバケットD2とが共に小バケットであると判定する。この判定を受けて、更新部20は、処理3を実行する。図25は、具体的な分割例を説明する図である。図25に示すように、更新部20は、分割境界DB12bに記憶されるバケットD1の末尾情報をGeorgeのデータを特定する時刻7に修正し、データ数を1増やして3に更新する。続いて、受信部16が、8、Henry、47、750、8500とするストリームデータを受信したとする。すると、位置特定部17は、格納済みの各データの年収と受信したHenryの年収750を比較し、当該Henryのデータの格納位置をErikとGeorgeの間と特定する。そして、格納制御部18は、受信済みDB12aにおけるErikとGeorgeの間にHenryのデータを格納する。その後、更新部20は、分割境界DB12bを更新する。図26は、具体的な分割例を説明する図である。図26に示すように、更新部20は、先頭のバケットであるバケットD1にデータが追加されたので、バケットD1のデータ数を4に更新する。ここで、バケット判定部19は、分割境界DB12bの各分割境界を参照し、バケットD1のデータ数が他のバケットのデータ数よりも2以上となっていることと、バケットD1が大バケットであることを特定して、更新部20に通知する。すると、更新部20は、新たなデータがバケットD1の内部に格納され、バケットD1が大バケットであることから、処理2を実行する。すなわち、図26に示すように、更新部20は、バケットD1に一番近い小バケットがバケットD2であると特定する。つまり、q=2となり、p<qとなる。したがって、縮退実行部20bは、upshrink1を実行し、分割境界DB12bに記憶されるバケットD1の末尾情報を時刻7からHenryのデータを特定する時刻8に修正してデータ数を1減らして3にする。また、拡張実行部20aは、upexpand2を実行し、分割境界DB12bに記憶されるバケットD2の先頭情報を時刻2から1件上のGeorgeの時刻7に置き換えて、データ数を1増やして3にする。このとき、p1>q-1となるため、更新部20は、upslidep1、q-1を実行しない。続いて、受信部16が、9、Iris、61、1200、7000とするストリームデータを受信したとする。すると、位置特定部17は、格納済みの各データの年収と受信したIrisの年収1200を比較し、当該Irisのデータの格納位置を受信済みDB12aの先頭と特定する。そして、格納制御部18は、Irisのデータを受信済みDB12aの先頭に格納する。その後、更新部20は、分割境界DB12bを更新する。図27は、具体的な分割例を説明する図である。図27に示すように、更新部20は、先頭のバケットであるバケットD1の先頭情報にIrisのデータを特定する時刻9を格納し、バケットD1のデータ数を4に更新する。ここで、バケット判定部19は、分割境界DB12bの各分割境界を参照し、バケットD1のデータ数が他のバケットのデータ数よりも2以上多く、バケットD1が大バケットであることを特定して、更新部20に通知する。すると、更新部20は、新たなデータが挿入された位置が受信済みDB12aの先頭であり、先頭であるバケットD1が大バケットであることから、処理6を実行する。すなわち、図27に示すように、更新部は、バケットD1に一番近い小バケットがバケットD2であると特定する。つまり、q=2となる。そして、縮退実行部20bは、upshrink1を実行し、分割境界DB12bに記憶されるバケットD1の末尾情報を時刻8から1件上の時刻5に修正し、データ数を1減らして3にする。また、スライド実行部20cは、upslide2、2を実行し、バケットD2の先頭情報を時刻7から1件上の時刻8に修正し、バケットD2の末尾情報を時刻1から1件上の時刻2に修正する。さらに、拡張実行部20aは、upexpand3を実行して、分割境界DB12bに記憶されるバケットD3の先頭情報を時刻6から1件上の時刻1に置き換えて、データ数を1増やして3にする。上述した図19から図27を実行することで、データ分割装置10は、図28に示す分割結果を得ることができる。図28は、具体的な分割例による処理結果を示す図である。図28に示すように、データ分割装置10は、時刻1から時刻9までのデータを順次受信し、受信するたびにソートしながら蓄積する一方で、受信済みデータを均等分割することができる。図28の例では、データ分割装置10が、時刻9、時刻4、時刻5のデータをバケットD1に分割し、時刻8、時刻7、時刻2のデータをバケットD2に分割し、時刻1、時刻6、時刻3のデータをバケットD3に分割した状態を示す。[出力の具体例]次に、図29から図32を用いて、データ出力の具体例を説明する。図29は、データ分割装置がデータ分割を実行した結果を示す図である。図29に示すように、データ分割装置10が、時刻1から時刻10までのデータを5つのバケットに均等分割したとする。具体的には、データ分割装置10は、時刻9と時刻4のデータをバケットD1に分割し、時刻5と時刻8のデータをバケットD2に分割し、時刻7と時刻2のデータをバケットD3に分割したとする。同様に、データ分割装置10は、時刻10と時刻1のデータをバケットD4に分割し、時刻6と時刻3のデータをバケットD5に分割したとする。この状態において、データ分割装置10の出力部21は、ユーザ端末5からバケットD2とバケットD3とバケットD4のデータ出力依頼を受信したとする。図30から図32は、具体的なデータ出力例を説明する図である。この場合、まず、出力部21は、図30に示すように、分割境界DB12bに記憶されるバケットD2の先頭および末尾情報を参照する。そして、出力部21は、受信済みDB12aにソートされて記憶されるデータのうち時刻5から時刻8までの間に位置する2つのデータがバケットD2に属するデータであると特定する。そして、出力部21は、時刻5のレコードである5、Erik、35、800、10000と時刻8のレコードである8、Henry、47、750、8500とを受信済みDB12aから読み出して、ユーザ端末5に送信する。次に、出力部21は、図31に示すように、分割境界DB12bに記憶されるバケットD3の先頭および末尾情報を参照する。そして、出力部21は、受信済みDB12aにソートされて記憶されるデータのうち時刻7から時刻2までの間に位置する2つのデータがバケットD3に属するデータであると特定する。そして、出力部21は、時刻7のレコードである7、George、25、600、1300と時刻2のレコードである2、Bob、55、450、2500とを受信済みDB12aから読み出して、ユーザ端末5に送信する。最後に、出力部21は、図32に示すように、分割境界DB12bに記憶されるバケットD4の先頭および末尾情報を参照する。そして、出力部21は、受信済みDB12aにソートされて記憶されるデータのうち時刻10から時刻1までの間に位置する2つのデータがバケットD4に属するデータであると特定する。そして、出力部21は、時刻10のレコードである10、James、37、400、1700と時刻1のレコードである1、Alice、24、300、1500とを受信済みDB12aから読み出して、ユーザ端末5に送信する。このように、データ分割装置10は、データ分割結果のうちユーザが指定するグループのデータを読み出して応答することができる。[実施例による効果]このように、実施例1に係るデータ分割装置10は、バケット数を固定したまま1レコードごとに動的に分割境界を変更するような整列均等分割を実現することができる。つまり、データ分割装置10は、ストリームデータを受信するたびにデータをソートして格納するとともに、データ分割を行うことができる。このとき、データ分割装置10は、ソートした順序を示す連番をデータに割り振ることなく、グループ分けすることができるので、データの分割にかかる時間を短縮できる。つまり、実施例で示す時刻のように、レコードを識別する番号を示す通番は与えられているが、連番が与えられていないデータを、連番を与えることなく高速に分割することができる。データ分割装置10では、データ受信時にデータを分割することができるので、ユーザがデータ分割を要求してから分割するまでに時間がかからず、即時応答することができる。一方、従来技術の場合、均等分割された結果に対して、一部のバケットのみの出力が要求されるような場合には、全データをスキャンしなければならないので、時間がかかる。一方、実施例1に係るデータ分割装置10は、ユーザが要求するバケット内のデータのみスキャンすればよいので、出力時間を短縮できる。さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。分割と出力実施例1では、データ分割とデータ出力とを1つのフローチャートで説明したが、これに限定されるものではない。例えば、データ分割とデータ出力とは全く別の契機で実行させることもできる。つまり、データ分割処理した後にデータ出力処理を実行するのではなく、全く別の処理として実行することができる。また、データ分割装置10は、ユーザ端末5にデータを出力するだけでなく、例えばディスプレイなどの表示部に表示させることもでき、記憶媒体等に書き込むこともできる。ストリームデータ実施例1で説明したストリームデータやデータの構成はあくまで例であり、これに限定するものではない。また、データ分割装置10は、ストリームデータに限ったものではなく、様々なデータに適用することができる。例えば、データ分割装置10は、ストレージ等に格納されるデータや、記憶媒体等から読み出されたデータに対しても同様に分割することができる。システムまた、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。ハードウェア構成ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図33は、データ分割プログラムを実行するコンピュータのハードウェア構成の例を示す図である。図33に示すように、コンピュータ100は、CPU102、入力装置103、出力装置104、通信インタフェース105、媒体読取装置106、HDDHardDiskDrive107、RAMRandomAccessMemory108を有する。また、図33に示した各部は、バス101で相互に接続される。入力装置103は、マウスやキーボードであり、出力装置104は、ディスプレイなどであり、通信インタフェース105は、NICNetworkInterfaceCardなどのインタフェースである。HDD107は、データ分割プログラム107aとともに、図2に示した各DB等を記憶する。記録媒体の例としてHDD107を例に挙げたが、ROMReadOnlyMemory、RAM、CD-ROM、SSDSolidStateDrive等の他のコンピュータ読取可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。CPU102は、データ分割プログラム107aを読み出してRAM108に展開することで、図2等で説明した各機能を実行するデータ分割プロセス108aを動作させる。すなわち、データ分割プロセス108aは、図2に記載した分割数設定部14、分割処理部15、出力部21と同様の機能を実行する。このようにコンピュータ100は、プログラムを読み出して実行することでデータ分割方法を実行する情報処理装置として動作する。例えば、コンピュータ100は、媒体読取装置106によって記録媒体からデータ分割プログラムを読み出し、読み出されたデータ分割プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。