"記憶装置に記録された複数のレコードの中から、ランダムにレコードをサンプリングするサンプリング装置であって、記録位置に対応する乱数を生成する乱数生成手段と、前記複数のレコードから、前記生成した乱数に対応する記録位置にデータを有するレコードを選択するレコード選択手段と、前記選択されたレコードのレコード長を取得するレコード長取得手段と、前記取得されたレコード長に基づいて算出した確率で、前記選択されたレコードをサンプルとして採用するサンプル決定手段と、を有することを特徴とするサンプリング装置。前記サンプル決定手段は、前記取得されたレコードのレコード長と反比例するように前記確率を算出することを特徴とする、請求項1に記載のサンプリング装置。前記複数のレコードのうち、サイズが最小であるレコードのレコード長Sminを取得する最小レコード長取得手段をさらに有し、前記サンプル決定手段は、前記選択されたレコードのレコード長をSkとし、Smin/Skの式によって前記確率を算出することを特徴とする、請求項2に記載のサンプリング装置。前記サンプルとして採用されたレコードから、前記記憶装置に記録されたデータの度数分布を示すヒストグラムを生成するヒストグラム生成手段をさらに有することを特徴とする、請求項3に記載のサンプリング装置。前記記憶装置は、分散ファイルシステムであり、前記ヒストグラムを用いて、外部の分散処理ノードに実行すべき処理を割り当てることを特徴とする、請求項4に記載のサンプリング装置。記憶装置に記録された複数のレコードの中から、ランダムにレコードをサンプリングするサンプリング装置が行うサンプリング方法であって、記録位置に対応する乱数を発生させるステップと、前記複数のレコードから、前記生成した乱数に対応する記録位置にデータを有するレコードを選択するステップと、前記選択されたレコードのレコード長を取得するステップと、前記取得されたレコード長に基づいて算出した確率で、前記選択されたレコードをサンプルとして採用するステップと、を含むことを特徴とするサンプリング方法。前記取得されたレコードのレコード長と反比例するように前記確率を算出することを特徴とする、請求項6に記載のサンプリング方法。前記複数のレコードのうち、サイズが最小であるレコードのレコード長Sminを取得するステップをさらに備え、前記選択されたレコードのレコード長をSkとし、Smin/Skの式によって前記確率を算出することを特徴とする、請求項7に記載のサンプリング方法。コンピュータに、記憶装置に記録された複数のレコードの中から、ランダムにレコードをサンプリングさせるプログラムであって、記録位置に対応する乱数を発生させる処理と、前記複数のレコードから、前記生成した乱数に対応する記録位置に記録されたレコードを選択する処理と、前記選択されたレコードのレコード長を取得する処理と、前記取得されたレコード長に基づいて算出した確率で、前記選択されたレコードをサンプルとして採用する処理と、を実行させることを特徴とするプログラム。前記コンピュータに、前記取得されたレコードのレコード長と反比例するように前記確率を算出させることを特徴とする、請求項9に記載のプログラム。前記コンピュータに、前記複数のレコードのうち、サイズが最小であるレコードのレコード長Sminを取得する処理をさらに実行させ、前記選択されたレコードのレコード長をSkとし、Smin/Skの式によって前記確率を算出させることを特徴とする、請求項10に記載のプログラム。データソースからデータのサンプリングを行う際、ファイル全体を読み込む方式である、非特許文献2に記載された技術によると、確実にデータソース内のデータ分布を取得できる一方、データソースが大きくなるほど読み込みに時間がかかるという欠点がある。たとえば、読み込み性能が毎秒100MBであって記憶容量が100GBである記憶装置を10台並列にしたデータソースがあった場合、全データの読み込みに約17分かかる。この方法では、データソースが大規模になると、実用的な速度を得ることが難しくなる。一方、データソースの一部だけを読み込んでヒストグラムを作成する手法を用いる場合、効率的に処理を行うため、データソース内にあらかじめハッシュやツリーなどの探索コストが低いデータ構造を用意しておく必要がある。しかし、データソースが、書き込み当初より探索のために構造化されていないケースも考えられる。例えば、車両の走行ログや、Webのアクセスログのように、書込みのスループットが要求されるデータは、構造化して格納されていることが仮定しにくい。これらのデータを構造化するためには、データソース全体を読み込み、構造化した状態で再度格納し直す必要があるため、結局、データソースの全体を読み込む手法となってしまう。このように、従来技術においては、探索のために最適化されていないデータソースからサンプリングを行う場合において性能上の問題が存在していた。この問題を解消するために、従来技術の他にもいくつかのサンプリング方法が考えられる。たとえば、データソースの先頭から特定個数のレコードをサンプリングする方法である。しかし、この方法によると、記録されているデータが、時系列データのようにその分布に局所性を持っている場合、ヒストグラムがデータソース全体の傾向と異なってしまうという別の問題がある。たとえば、記録されているデータのうち、特定の傾向を持ったデータがデータソースの後方に集中している場合、先頭のデータをサンプリングすると、実際のデータと異なったサンプル結果となってしまい、公平なサンプリングが実現できなくなる。また、別の方法として、データソース中の位置をランダムに特定し、その位置に存在するレコードをサンプリング対象として取り出す、ランダムサンプリングと呼ばれる手法がある。しかし、この方法を用いた場合、サイズの大きいレコードが選択されやすいため、レコードのサイズにばらつきがある場合、不公平な選択がなされる。不公平な選択がなされると、取得されたヒストグラムは、やはりデータソース全体の傾向と異なってしまう。このように、データソースに格納されているデータが、探索のために最適化されておらず、かつ局所的な傾向がある場合、データソース内のデータの分散を示すヒストグラムを取得するための公平なサンプリングができない、すなわちサンプリング結果の信頼性が低くなるという問題がある。本発明は上記の問題点を考慮してなされたものであり、探索のために最適化されていないデータソースに対して、全体の傾向を適切に取得することができるサンプリング装置を提供することを目的とする。上記目的を達成するために、本発明に係るサンプリング装置では、以下の手段によりデータソースに対するサンプリングを行う。本発明に係るサンプリング装置は、記憶装置に記録された複数のレコードの中から、ランダムにレコードをサンプリングするサンプリング装置であって、記録位置に対応する乱数を生成する乱数生成手段と、前記複数のレコードから、前記生成した乱数に対応する記録位置にデータを有するレコードを選択するレコード選択手段と、前記選択されたレコードのレコード長を取得するレコード長取得手段と、前記取得されたレコード長に基づいて算出した確率で、前記選択されたレコードをサンプルとして採用するサンプル決定手段と、を有することを特徴とする。すなわち、データソースの中から、乱数によって特定された位置に存在するレコードの長さを取得し、当該長さに応じた確率で、選択されたレコードをサンプルとして採用する。データソース中の記録位置をランダムに指定して読み込むランダムサンプリングでは、レコードの長さによって選択される確率が変化する。これに対し、選択後に採用確率を乗じることで、各レコードが選ばれる確率を調整することができる。この手法によって、信頼性の高いサンプリングが可能となる。また、前記サンプル決定手段は、前記取得されたレコードのレコード長と反比例するように前記確率を算出することを特徴とすることが好ましい。すなわち、選択されたレコードのレコード長が長いほど、サンプルとして採用する確率を低くする。これにより、全てのレコードが同じ確率でサンプリングされるようになる。また、本発明に係るサンプリング装置は、前記複数のレコードのうち、サイズが最小であるレコードのレコード長Sminを取得する最小レコード長取得手段をさらに有し、前記サンプル決定手段は、前記選択されたレコードのレコード長をSkとし、Smin/Skの式によって前記確率を算出することを特徴とすることが好ましい。すなわち、基本とするレコード長をSminとし、Sminを、選択されたレコードの長さで除することにより、当該レコードを採用する確率を決定する。このように構成することにより、ランダムサンプリングの効率を最大限とすることができる。また、本発明に係るサンプリング装置は、前記サンプルとして採用されたレコードから、前記記憶装置に記録されたデータの度数分布を示すヒストグラムを生成するヒストグラム生成手段をさらに有することを特徴としてもよい。ヒストグラムを生成することにより、記録されたデータの度数分布を集計することができるため、分散処理システムにおける本発明の適用が容易になる。また、前記記憶装置は、分散ファイルシステムであり、前記ヒストグラムを用いて、外部の分散処理ノードに実行すべき処理を割り当てることを特徴としてもよい。このように構成することにより、分散処理システムにおいて、割り当てるタスクのサイズを平均化することが可能になるため、システム全体の処理スループットを向上させることが可能になる。本発明によれば、探索のために最適化されていないデータソースに対して、全体の傾向を適切に取得することができるサンプリング装置を提供することができる。第一の実施形態第一の実施形態に係るサンプリング装置について、図2を用いて詳細な説明をする。図2は、第一の実施形態に係るサンプリング装置のシステム構成を表す図である。本実施形態に係るサンプリング装置100は、データソースにアクセスし、ランダムに既定数のレコードを選択するサンプリング部111と、サンプリング結果に基づいてデータソース内のデータ分布であるヒストグラムを生成するヒストグラム生成部112、および、データソースに記録されているレコードのうち、最小レコードのサイズを記録した最小レコード長記憶部121から構成される。以上の構成は、不図示の中央演算処理装置CPUおよび主記憶装置RAM、補助記憶装置記憶媒体によって実行される。本実施形態で説明する処理を実行するプログラムコードが補助記憶装置に格納され、当該プログラムコードをCPUが読み出して実行することにより、前述した実施形態の機能が実現される。データソース120は、サンプリング対象となるデータが格納されている手段であり、関係データベースやデータファイル、ディスク装置などに相当する。本実施形態においては、一つのデータファイルを想定して説明するが、複数のレコードを記録できる手段であれば、どのようなものが用いられてもよい。また、これらのデータ格納手段は一つの装置に限定されるものではない。たとえばディスクアレイや分散ファイルシステムなど、仮想的な記憶手段を一つのデータソースとしてもよい。データソースには、改行コードやカンマ等のセパレータデリミタで区切られた1件分のレコードが複数個格納されている。これらのレコードは、それぞれ長さが異なっており、レコードの記録位置はメモリアドレスによって特定することができる。メモリアドレスとは、レコードが記録されている物理的もしくは論理的な場所を特定するための情報であり、例えばデータソースがファイルであれば先頭からのバイト数、分散ファイルシステムであればファイルの記録位置を示す仮想アドレス等が該当する。最小レコード長記憶部121は、データソース120が有しているレコードのうち、最小となるレコード長を記録した手段である。例えば、レコードの最小値が512バイトである場合、最小レコード長記憶部121は、512バイトという数値を保持する。最小レコード長記憶部121は、装置として必ずしも独立している必要はなく、例えばデータソース120に、サンプリング対象のデータと一緒に記録されていてもよい。レコードが追加される際に、追加されたレコードの長さが最小レコード長を下回る場合は、最小レコード長は最新の値で更新される。サンプリング部111は、データソース120から、ランダムに既定個数のレコードを取得する動作を行う手段である。実施形態の説明では、データソースから既定個数のレコードをランダムに取得する動作をサンプリングと称する。詳細な動作については後述する。ヒストグラム生成部112は、サンプリング部111がサンプリングを行ったデータに基づいて、データソース内のレコードの度数分布を表すヒストグラムを生成する手段である。ヒストグラムは、サンプリングされたデータのキーを基に度数分布を作成する。図3は、作成されたヒストグラムの例である。本例は、車両走行ログをイベントIDで分類し、それぞれのIDに対応するレコードの数を表している。次に、サンプリング部111がサンプリングを行う方法について説明する。図4は、データソースに格納されたレコード全体を表した図である。ここでは便宜的に、レコード長の最小値をSmin、データソースの全体長をSmin×10として説明を行う。サンプリング部111は、データソースが有しているメモリアドレスに対応する一様乱数を生成し、サンプル対象のメモリアドレスを決定する。仮に、図4に示したデータソースに対して処理を行う場合、0≦N≦10×Sminの範囲をとる乱数Nを決定し、決定したメモリアドレスに存在するレコードを取得する。この処理により、対象のデータソースの中の単一のレコードが特定される。例えば、Smin=1、N=3であった場合、図4aの場合はレコード4、図4bの場合はレコード3が選択される。図4aは、全て同じ長さのレコードが一様に記録されている場合を表した図である。この場合、ランダムにサンプリングを行うと、レコードAからレコードJの10個が等しい確率で取得される。つまり、各レコードは理論上同じ数がサンプリングされるため、ヒストグラムに偏りは発生せず、前述したような問題は発生しない。図4bは、それぞれのレコード長が異なる場合を表した図である。例えば、レコード3およびレコード6は、レコード1の2倍の長さを持っており、レコード5は3倍の長さを持っている。このような場合、データソース上の記録位置であるメモリアドレスをランダムに決定し、対応する箇所にあるレコードを取得しようとすると、サイズが最少であるレコード1,2,4に対して、レコード3と6は2倍、レコード5は3倍それぞれ選択されやすくなる。つまり、各レコードが均等に選択されなくなるため、実際のレコード数は等しいにもかかわらず、作成されるヒストグラムに現れる分布には偏りが発生する。そこで、本実施形態では、サンプリング手段がレコードを選択する際に、当該レコードをサンプルとして採用するか否かの判定を、以下の式1によって行う。Sminは、データソースに記録されているレコードのうち最小となるレコード長であり、Skは、選択されたレコードの長さを表す。採用確率p=Smin/Sk...式1サンプリング部111は、式1によって計算された採用確率pに従って、選択したレコードをサンプルとして採用するか否かを決定する。例えば、採用確率pが0.1であった場合、10の確率で、選択したレコードを採用し、90の確率で選択を破棄する。確率の計算は、たとえば0~1の範囲の実数をとる乱数を新たに生成し、結果が採用確率以下であった場合にのみ選択したレコードを採用する等の方法によって行うことができる。この方法によると、レコードの長さと、ランダムに選択されたレコードを採用する確率を反比例させることができる。つまり、レコードの長さに反比例した採用確率pを式1に乗ずることで、全てのレコードに対して、サンプリングされる確率を同一にすることができる。データソース全体の長さをLとすると、Skのレコード長を持つレコードが選択される確率は、Sk/Lとなる。これに、式1を乗ずると、Sk/L×Smin/Sk=Smin/L...式2となり、全てのレコードのサンプリングされる確率が同一となることが確認できる。次に、サンプリング部111の動作フローチャートである図5を参照しながら、サンプリング動作を説明する。本実施形態に係るサンプリング装置が動作を開始すると、サンプリング部111は、最小レコード長記憶部121から最小レコード長を取得するS10。最小レコードは、前述したように、可変レコード長のうち最小の値である。次に、データソース中の特定の位置を決定するための乱数を生成するS11。生成する乱数は一様乱数であって、データソースに記録されているレコードの記録位置を特定できるものであればどのように生成しても構わない。生成する乱数の範囲は、たとえばディスク装置であれば、データが格納されているセクタ番号の最小値から最大値までとすることが考えられる。次に、決定した乱数に対応するレコードを選択するS12。つまり、データソースから、乱数によって特定した記録位置に属しているレコードが選択される。なお、本実施形態では、追記のみを行うデータソースを想定しているため、特定した位置にレコードが存在しない場合の処理は行っていないが、フラグメント等によってデータが存在しない場合を考慮してもよい。その場合、ステップS11へ戻り再度処理を行ってもよいし、前後の直近に存在するレコードを選択してもよい。次に、選択したレコードの長さを取得しS13、取得されたレコード長と、最小レコード長を用いて、式1による計算を行い、計算された採用確率に従って、当該レコードを採用するか否かを決定するS14。決定方法は、前述したように、新たに乱数を生成して判断してもよいし、他の方法を用いてもよい。選択したレコードを採用しないと判断した場合、処理はステップS11へ戻り、乱数の生成を再度行う。次に、サンプリングの回数が規定回数に達したかを判定するS15。サンプリングの回数は、装置によって固有なものであってもよいし、データソースの規模に応じて自動で決定されてもよい。規定回数のサンプリングが終了した場合、処理は終了し、規定回数に達していなかった場合は再度レコードの選択が行われる。以上の処理により、サンプリング部111は、既定サンプル数分のレコードを取得することができる。取得されたレコードは、そのレコード長に関係なくランダムに選択されたものとなる。サンプリング部111がサンプルの収集を完了させると、ヒストグラム生成部生成部112が、収集したサンプルを用いてヒストグラムの生成を行う。ヒストグラムは、取得したサンプルデータが有するキーごとに、レコードの件数を加算することで生成される。本実施形態によれば、レコード長がそれぞれ異なるデータソースからサンプリングを行うサンプリング装置において、レコード長に反比例するように採用確率を設定することで、レコード長にかかわらず均等にレコードをサンプリングすることができる。すなわち、生成されたヒストグラムはデータソース全体の傾向を代表するものとなるため、巨大なデータソースであっても、短時間でデータ分布の傾向を得ることができる。なお、第一の実施形態においては、ヒストグラム生成部を用いてヒストグラムの生成を行ったが、ヒストグラムを他の手段で生成できる場合や、ヒストグラム以外のデータ集計手段が利用できる場合は、ヒストグラム生成部は必須構成ではない。第二の実施形態第二の実施形態は、第一の実施形態におけるサンプリング装置100を、分散処理フレームワークであるHadoopを利用した分散処理システムに組み込んだ形態である。図6は、第二の実施形態に係るシステム構成図であり、図7は、第二の実施形態に係るシステムの概念図である。なお、第二の実施形態に係るサンプリング装置が収集を行うデータソースおよびレコードの構成は、第一の実施形態で説明したものと同一である。第二の実施形態では、分散処理ノードが持っている分散ファイルをデータソースとして利用する。分散ファイル202a,b,cは、それぞれ分散処理ノードであるコンピュータ201a,b,c上に配置され、サンプリング部111からシームレスにアクセスすることができる。すなわち、サンプリング部111からは、一つのデータソースがあるように見えるため、第一の実施形態と同様の方法によってデータのサンプリングを行うことができる。また、ヒストグラム生成部112が生成したヒストグラムは、タスク割り当て部130へ送信される。タスク割り当て部130は、生成されたヒストグラムをもとに、分散ファイル202a,b,cより処理すべきタスクを取得し、分散処理ノード201a,b,cに対して処理を割り当てる。本実施形態は、分散処理フレームワークであるHadoop上で動作するHiveに本発明を適用したものである。図7に示した通り、Hiveには、Compiler、Optimizer、Executorの三つのフェーズがある。このうち、Optimizerフェーズにてサンプリングを行い、得られたヒストグラムから、分散処理ノードの単位性能あたりのタスクサイズが均等になるように、Executorフェーズでタスクの割り当て、すなわちスケジューリングを行う。このように構成することにより、分散処理におけるノード間の負荷の偏りが減り、システム全体のスループットを向上させることができる。なお、本例ではHiveへの適用例を挙げたが、Pigなど、Hadoopで動作する他のミドルウェアを適用してもよい。変形例上記の実施形態はあくまでも一例であって、本発明はその要旨を逸脱しない範囲内で適宜変更して実施しうるものである。たとえば、実施形態の説明においては、処理を行うプログラムを補助記憶装置に記録し、CPUによって処理を行う例を挙げたが、処理はFPGAによって行われてもよいし、ハードウェアとして設計され実行されてもよい。また、実施形態の説明においては、選択されたレコードをサンプルとして採用する確率pをSmin/Skの式によって計算したが、採用確率pをa×Smin/Skただし0<a<1としても、各レコードがサンプリングされる確率を同一にすることができる。ただし、係数aを乗じた場合、一回の実行でレコードがサンプリングされない確率が上昇するため、採用確率pはSmin/Skとした場合が最も効率がよい。また、発明の効果を得るためには、選択されたレコードのサイズに応じて、当該レコードを採用する確率を調整する、すなわち選択されたレコードが長いほど採用確率を下げる必要があるが、採用確率はレコード長に反比例していなくともよい。たとえば、採用確率pをn/Sknは任意の定数とし、pが1を超えた場合は1として扱ってもよい。この場合、各レコードが選択される確率は同一とはならないが、均一の値に近づけることはできる。このように、各レコードがサンプリングされる確率を均一の値に近づけるためには、選択されたレコードが長くなるに従って採用確率を下げることができればよい。また、レコードのサイズが極端にばらついている際、何度も選択を繰り返さないと必要な個数のレコードをサンプリングできないケースが考えられる。例えば、レコードの平均サイズをSavgとすると、一回の実行でレコードが選択される確率はSmin/Savgであるため、n回のサンプリングに必要なループ数は、n×Savg/Sminとなる。この値が全体のレコード件数を超える場合は、データソース全体を読み込んだほうが効率が良くなる。例えば図4bの例では、Savg=1.66...×Sminとなるため、n≧4である場合、ループ数が総レコード数以上となる。そのため、前記条件に当てはまるほどレコードのサイズにばらつきがある場合、アルゴリズムから確率的な要素を減らすようにしてもよい。例えば、ランダムに選択したレコードから、m番目、m×2番目のレコードを選ぶことにより、一回のループで一つ以上のレコードを確実にサンプリングできるようになる。これにより、レコードの傾向の局所性がヒストグラムに反映されてしまうという副作用が生じるが、ランダムに選んだレコードから離れたレコードを選択することで、その影響を緩和できる可能性がある。"