(57)【特許請求の範囲】
【請求項１】
所定の複数のメッシュに区画可能な地図を構成する地図データの分散処理を、前記所定の複数のメッシュ毎に、ネットワークを介して接続された複数のサーバの一をシャッフルにより割り当てて並列実行する分散処理システムであって、
前記複数のサーバの少なくとも一部が、前記地図データ、及び、前記所定の複数のメッシュをそれぞれ識別するメッシュ識別データと当該メッシュの前記地図上の位置を示す位置情報とを関連付けて記憶手段に記憶する記憶制御手段と、
前記地図に含まれる領域地図要素が前記地図上で占める閉領域を表す範囲指定情報を前記記憶手段から読み出す領域取得手段と、
前記地図に含まれる点地図要素が前記地図上で位置する点を表す範囲指定情報を前記記憶手段から読み出す点要素取得手段と、
前記記憶手段から前記メッシュ識別データ及び前記位置情報を読み出して、複数の前記メッシュのうち、前記領域取得手段が読み出した前記範囲指定情報が表す前記閉領域の少なくとも一部を含むメッシュ及び前記点要素取得手段が読み出した前記範囲指定情報が表す前記点を含むメッシュを特定するメッシュ特定手段と、
特定した前記メッシュを識別するメッシュ識別データをＫＥＹとし、前記範囲指定情報をＶＡＬＵＥとするＫＥＹ−ＶＡＬＵＥ型データを前記メッシュ特定手段が特定したメッシュの数だけ生成するデータ生成手段と、
生成した前記ＫＥＹ−ＶＡＬＵＥ型データを用いて、前記領域地図要素及び前記点地図要素の位置関係に関する処理を、前記メッシュ特定手段が特定した前記メッシュ毎に、前記複数のサーバの一をシャッフルにより割り当てて並列実行させる実行処理振り分け手段と、
を備える分散処理システム。
【請求項２】
前記メッシュ特定手段は、
前記範囲指定情報に含まれる任意の地点情報が属する基点メッシュを特定する基点メッシュ特定手段と、
前記基点メッシュ特定手段が特定した前記基点メッシュに隣接する隣接メッシュを特定する隣接メッシュ特定手段と、
前記隣接メッシュ特定手段が特定した前記隣接メッシュに前記範囲指定情報が示す前記閉領域の少なくとも一部が含まれるか否かを判定する包含判定手段と、
を備える請求項１に記載の分散処理システム。
【請求項３】
所定の複数のメッシュに区画可能な地図を構成する地図データの分散処理を、前記所定の複数のメッシュ毎に、ネットワークを介して接続された複数のサーバの一をシャッフルにより割り当てて並列実行する分散処理方法であって、
前記複数のサーバの少なくとも一部が、前記地図データ、及び、前記所定の複数のメッシュをそれぞれ識別するメッシュ識別データと当該メッシュの前記地図上の位置を示す位置情報とを関連付けて記憶手段に記憶する記憶制御ステップと、
前記地図に含まれる領域地図要素が前記地図上で占める閉領域を表す範囲指定情報を前記記憶手段から読み出す領域取得ステップと、
前記地図に含まれる点地図要素が前記地図上で位置する点を表す範囲指定情報を前記記憶手段から読み出す点要素取得ステップと、
前記記憶手段から前記メッシュ識別データ及び前記位置情報を読み出して、複数の前記メッシュのうち、前記領域取得ステップで読み出した前記範囲指定情報が表す前記閉領域の少なくとも一部を含むメッシュ及び前記点要素取得ステップで読み出した前記範囲指定情報が表す前記点を含むメッシュを特定するメッシュ特定ステップと、
特定した前記メッシュを識別するメッシュ識別データをＫＥＹとし、前記範囲指定情報をＶＡＬＵＥとするＫＥＹ−ＶＡＬＵＥ型データを前記メッシュ特定ステップが特定したメッシュの数だけ生成するデータ生成ステップと、
生成した前記ＫＥＹ−ＶＡＬＵＥ型データを用いて、前記領域地図要素及び前記点地図要素の位置関係に関する処理を、前記メッシュ特定ステップが特定した前記メッシュ毎に、前記複数のサーバの一をシャッフルにより割り当てて並列実行させる実行処理振り分けステップと、
を備える分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の複数のメッシュに区画可能な地図を構成する地図データの分散処理を行う分散処理システム及び分散処理方法に関する。
【背景技術】
【０００２】
近年のＷｅｂページの爆発的な増加に伴い、ネットワーク上に存在する情報量は、膨大なものとなっている。このようなネットワーク上の膨大な情報量に対する処理を行うためのソフトウェアフレームワークとして、ＭａｐＲｅｄｕｃｅが知られている（例えば、非特許文献１）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】西田圭介（著）“Ｇｏｏｇｌｅを支える技術  巨大システムの内側の世界”株式会社技術評論社  発行、２００８年４月２５日、第４章
【０００４】
ここで、ＭａｐＲｅｄｕｃｅは、多数のコンピューターの集合であるコンピュータ・クラスターを用いて並列処理させるためのフレームワークである。ＭａｐＲｅｄｕｃｅは、所定の処理を行うために、処理の対象となる入力データを複数の断片に分割して複数のコンピューターに割り当て、各コンピューターにおいて、Ｍａｐ定義に従った処理を並列に行ってＫＥＹ−ＶＡＬＵＥ型のデータを中間ファイルとして生成し、当該ＫＥＹ−ＶＡＬＵＥ型のデータをソートして同一のＫＥＹで束ねてＫＥＹ毎に当該中間ファイルを処理するコンピュータを割り当てるＭａｐタスクと、割り当てられた各コンピューターにおいて、Ｒｅｄｕｃｅ定義に従った処理を並列に行って処理結果を集約し、当該所定の処理の結果を得るＲｅｄｕｃｅタスクとからなる。ＭａｐＲｅｄｕｃｅによれば、膨大な情報量に対する分散処理をＭａｐタスクとＲｅｄｕｃｅタスクとに分割して実現している。
また、近年では、このＭａｐＲｅｄｕｃｅを実装したオープンソースソフトウェアとしてＨａｄｏｏｐが知られており、Ｈａｄｏｏｐを用いることで大規模分散処理を誰でも容易に実行可能となっている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、近年では、インターネット上で地図情報の配信が盛んに行われており、例えば、地図上で店舗名等を検索すると、当該店舗の属する地図を表示するサービス等が知られている。このようなサービスは、地図を形成するためのインデックスデータを適切に生成することで実現される。ここで、地図は、地図を緯度（Ｎ）経度（Ｅ）に区画可能であり、インターネット上の地図は緯度経度に区画された複数のメッシュで形成されている。そのため、インデックスの生成を複数のコンピュータ（サーバ）で分散して行うためには、インデックスデータの生成をメッシュ毎（メッシュ単位）に行うことが好ましい。
【０００６】
しかしながら、地図上で一定の範囲を持った地図要素（例えば、建物、自然物、地域等）は、複数のメッシュにまたがる場合があり、このような場合、単にメッシュ毎に分散したのでは、適切なインデックスデータを生成することはできない。
【０００７】
本発明は、複数のメッシュにまたがる地図要素を含む地図データについての処理を、当該地図要素の位置、大きさを意識することなく、分散処理に最適なメッシュ単位でスケール可能な分散処理を行うことのできる分散処理システム及び分散処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明者らは、メッシュ単位毎に分散処理するために好適なＫＥＹ−ＶＡＬＵＥ型のデータセットの生成方法を新たに開発することで、本発明を完成するに至った。なお、以下において「シャッフル」とは、生成したＫＥＹ−ＶＡＬＵＥ型のデータセットを整理し、当該データセットをＫＥＹでソートする処理を含む。
【０００９】
（１）  所定の複数のメッシュに区画可能な地図を構成する地図データの分散処理を、前記所定の複数のメッシュ毎に、ネットワークを介して接続された複数のサーバの一をシャッフルにより割り当てて並列実行する分散処理システムであって、前記複数のサーバの少なくとも一部が、前記地図データ、及び、前記所定の複数のメッシュをそれぞれ識別するメッシュ識別データと当該メッシュの前記地図上の位置を示す位置情報とを関連付けて記憶手段に記憶する記憶制御手段と、前記地図に含まれる領域地図要素が前記地図上で占める閉領域を表す範囲指定情報を前記記憶手段から読み出す領域取得手段と、前記地図に含まれる点地図要素が前記地図上で位置する点を表す範囲指定情報を前記記憶手段から読み出す点要素取得手段と、前記記憶手段から前記メッシュ識別データ及び前記位置情報を読み出して、複数の前記メッシュのうち、前記領域取得手段が読み出した前記範囲指定情報が表す前記閉領域の少なくとも一部を含むメッシュ及び前記点要素取得手段が読み出した前記範囲指定情報が表す前記点を含むメッシュを特定するメッシュ特定手段と、特定した前記メッシュを識別するメッシュ識別データをＫＥＹとし、前記範囲指定情報をＶＡＬＵＥとするＫＥＹ−ＶＡＬＵＥ型データを前記メッシュ特定手段が特定したメッシュの数だけ生成するデータ生成手段と、生成した前記ＫＥＹ−ＶＡＬＵＥ型データを用いて、前記領域地図要素及び前記点地図要素の位置関係に関する処理を、前記メッシュ特定手段が特定した前記メッシュ毎に、前記複数のサーバの一をシャッフルにより割り当てて並列実行させる実行処理振り分け手段と、を備える分散処理システム。
【００１０】
（１）の分散処理システムによれば、メッシュ特定手段は、分散処理の対象となる閉領域の範囲指定情報の少なくとも一部を含むメッシュ及び点の範囲指定情報を含むメッシュを特定する。データ生成手段は、特定したメッシュの識別データをＫＥＹ、範囲指定情報をＶＡＬＵＥとするＫＥＹ−ＶＡＬＵＥ型のデータセットを、メッシュ特定手段が特定したメッシュの数だけ生成する。そして、実行処理振り分け手段は、生成したＫＥＹ−ＶＡＬＵＥ型のデータセットをシャッフルすることでＫＥＹでソートし、ＫＥＹ−ＶＡＬＵＥ型のデータセットに対する処理をメッシュ特定手段が特定したメッシュ毎に複数のサーバに割り当てて実行させる。
【００１１】
これにより、ＫＥＹ−ＶＡＬＵＥ型のデータセット、特に分散処理の対象となる閉領域の範囲指定情報が、処理が振り分けられた複数のサーバの全てに対し提供されるため、メッシュ単位毎に分散処理するために好適なＫＥＹ−ＶＡＬＵＥ型のデータセットを生成することができる。その結果、閉領域が複数のメッシュにまたがる場合であっても、閉領域の位置、大きさを意識することなく、分散処理に最適なメッシュ単位でスケール可能な分散処理を行うことができる。なお、ＫＥＹ−ＶＡＬＵＥ型のデータセットはシャッフルによりＫＥＹでソートされているので、分散処理システムは、同一のＫＥＹを持つデータセットについて、同一のサーバで領域地図要素及び点地図要素の位置関係に関する処理を並列実行させることができる。
【００１２】
（２）  前記メッシュ特定手段は、前記範囲指定情報に含まれる任意の地点情報が属する基点メッシュを特定する基点メッシュ特定手段と、前記基点メッシュ特定手段が特定した前記基点メッシュに隣接する隣接メッシュを特定する隣接メッシュ特定手段と、前記隣接メッシュ特定手段が特定した前記隣接メッシュに前記範囲指定情報が示す前記閉領域の少なくとも一部が含まれるか否かを判定する包含判定手段と、を備える（１）に記載の分散処理システム。
【００１３】
（２）の分散処理システムによれば、範囲指定情報の任意の地点情報が属する基点メッシュを特定してから、この基点メッシュに隣接するメッシュのうち範囲指定情報の少なくとも一部が含まれるメッシュを、範囲指定情報の少なくとも一部を含むメッシュと判定する。これにより、閉領域が複数のメッシュにまたがる場合であっても、当該複数のメッシュを適切に取得することができる。なお、「隣接する」とは、当該メッシュの周囲８個のメッシュだけでなく、範囲指定情報の大きさによっては、周囲２４個、４９個・・・等のメッシュも含む。
【００１４】
（３）所定の複数のメッシュに区画可能な地図を構成する地図データの分散処理を、前記所定の複数のメッシュ毎に、ネットワークを介して接続された複数のサーバの一をシャッフルにより割り当てて並列実行する分散処理方法であって、前記複数のサーバの少なくとも一部が、前記地図データ、及び、前記所定の複数のメッシュをそれぞれ識別するメッシュ識別データと当該メッシュの前記地図上の位置を示す位置情報とを関連付けて記憶手段に記憶する記憶制御ステップと、前記地図に含まれる領域地図要素が前記地図上で占める閉領域を表す範囲指定情報を前記記憶手段から読み出す領域取得ステップと、前記地図に含まれる点地図要素が前記地図上で位置する点を表す範囲指定情報を前記記憶手段から読み出す点要素取得ステップと、前記記憶手段から前記メッシュ識別データ及び前記位置情報を読み出して、複数の前記メッシュのうち、前記領域取得ステップで読み出した前記範囲指定情報が表す前記閉領域の少なくとも一部を含むメッシュ及び前記点要素取得ステップで読み出した前記範囲指定情報が表す前記点を含むメッシュを特定するメッシュ特定ステップと、特定した前記メッシュを識別するメッシュ識別データをＫＥＹとし、前記範囲指定情報をＶＡＬＵＥとするＫＥＹ−ＶＡＬＵＥ型データを前記メッシュ特定ステップが特定したメッシュの数だけ生成するデータ生成ステップと、生成した前記ＫＥＹ−ＶＡＬＵＥ型データを用いて、前記領域地図要素及び前記点地図要素の位置関係に関する処理を、前記メッシュ特定ステップが特定した前記メッシュ毎に、前記複数のサーバの一をシャッフルにより割り当てて並列実行させる実行処理振り分けステップと、を備える分散処理方法。
【００１５】
（３）の分散処理方法によれば、（１）の分散処理システムと同様の効果を奏する。
【発明の効果】
【００１６】
本発明によれば、地図要素の位置、大きさを意識することなく、分散処理に最適なメッシュ単位でスケール可能な分散処理を行うことができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態の一例に係る分散処理システムの概要を示す図である。
【図２】本発明の実施形態の一例に係る分散処理システムの機能構成を示す図である。
【図３】本発明の実施形態の一例に係る記憶手段を示す図である。
【図４】本発明の実施形態の一例に係るメッシュ特定手段の処理の流れを示す概念図である。
【図５】本発明の実施形態の一例に係る分散処理システムの処理の流れを示すフローチャートである。
【図６】本発明の実施形態の一例に係る分散処理システムの処理の流れを示す概念図である。
【図７】本発明の実施形態の一例に係る分散処理システムにより生成されるインデックスＤＢを示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について図面を参照して説明する。
【００１９】
［分散処理システム１の概要］
はじめに、図１を参照して本実施形態の分散処理システム１の概要について説明する。
【００２０】
分散処理システム１は、図１（１）に示すように、マスタサーバＭと複数のワーカーサーバＷとを含んで構成される。分散処理システム１は、前述のＭａｐＲｅｄｕｃｅを実装したオープンソースソフトウェアであるＨａｄｏｏｐ等を用いて実現することができる。
マスタサーバＭは、所定の処理の対象となる入力データを多数の断片に区切り、ワーカーサーバＷを割り当ててそれぞれについて処理を行うようにワーカーサーバＷに要求を行う。ワーカーサーバＷは、マスタサーバＭからの要求を受け、Ｍａｐ定義に従って入力データからＫＥＹ−ＶＡＬＵＥ型のデータセットを中間ファイルとして生成するとともに、生成したＫＥＹ−ＶＡＬＵＥ型のデータセットをＫＥＹ毎にソートし、その処理の完了をマスタサーバＭに通知する。そしてマスタサーバＭは、当該ＫＥＹ毎にワーカーサーバＷを割り当ててそれぞれについて処理を行うようにワーカーサーバＷに要求を行う。ワーカーサーバＷは、マスタサーバＭからの要求を受け、Ｒｅｄｕｃｅ定義に従って、それぞれがＫＥＹ−ＶＡＬＵＥ型のデータセットについての処理を行い、その結果を集約し、位置関係に関する所定の処理、例えば、インデックスデータの生成処理の結果を得る。
【００２１】
本実施形態では、図１（２）に示す地図Ａ（メッシュＡ１，Ａ２，Ａ３，Ａ４，Ａ５，Ａ６を含む）の領域地図要素１００に対する処理を複数のワーカーサーバＷで行うこととし、その一例として、領域地図要素１００と点地図要素１１０との関係を判定することとしている。ここで、領域地図要素１００はビルや、駅から所定の距離以内の地域等のようなある一定の範囲を有する地図要素であり、点地図要素１１０はレストラン等のような地図上で点として扱われる地図要素である。本実施形態では、点地図要素１１０が領域地図要素１００に包含されるか否か、一例としては、あるレストランがあるビル内に存在するか否かを判定する処理を、複数のワーカーサーバＷが分散して行う。
【００２２】
［分散処理システム１の機能構成］
次に、図２を参照して、分散処理システム１の機能構成について説明する。
【００２３】
分散処理システム１は、メッシュを識別するメッシュＩＤ（メッシュ識別データ）をＫＥＹとするＫＥＹ−ＶＡＬＵＥ型のデータセットを生成する領域地図要素処理２及び点地図要素処理３（Ｍａｐタスク）と、生成したＫＥＹ−ＶＡＬＵＥ型のデータセットに対する処理をメッシュ毎に（メッシュ単位で）行う領域内外判定処理４（Ｒｅｄｕｃｅタスク）と、を実行する。なお、領域地図要素処理２、点地図要素処理３及び領域内外判定処理４は、ワーカーサーバＷが実行するが、個々のワーカーサーバＷは、領域地図要素処理２、点地図要素処理３及び領域内外判定処理４の何れの処理を実行するサーバとしても機能することが可能で、マスタサーバＭが必要に応じて振り分ける。そのため、１つのワーカーサーバＷが、領域地図要素処理２だけでなく点地図要素処理３を実行する場合もあり、また、領域内外判定処理４を実行する場合もある。また、マスタサーバＭ自身は、ワーカーサーバＷとしても機能し得る。
【００２４】
領域地図要素処理２を実行するため、分散処理システム１は、記憶制御手段２１と、領域取得手段２２と、メッシュ特定手段２３と、データ生成手段２４と、実行処理振り分け手段２５と、を含んで構成される。
【００２５】
記憶制御手段２１は、分散処理システム１の任意の場所に設けられた記憶手段５を制御し、記憶手段５に所定の情報を記憶する。
ここで、記憶手段５は、メッシュＤＢ５１と地図要素ＤＢ５２とを含んで構成される。メッシュＤＢ５１は、図３（１）に示すように、メッシュを識別するメッシュＩＤに対応付けて、当該メッシュの地図上の位置を示す位置情報を含む地図情報を記憶する。なお、メッシュとは、地図を緯度経度に区画したものである。地図要素ＤＢ５２は、図３（２）に示すように、地図要素ＩＤに対応付けて、範囲指定情報及び地図要素名を含む地図要素情報を記憶する。なお、地図要素は、点要素の場合もあり、四角形の範囲を有する地図要素の場合もあり、更には多角形の範囲を有する地図要素の場合もある。このような地図要素の範囲指定情報の指定は、任意に行うことができるが、本実施形態では地図要素の頂点の緯度経度を指定することで、地図要素の範囲指定情報を指定することとしている。
記憶制御手段２１は、例えば、メッシュＩＤと当該メッシュＩＤの位置情報とを関連付けて記憶手段５のメッシュＤＢ５１に記憶する。
なお、ワーカーサーバＷが各種情報を読み出す先を特定可能であれば、当該ワーカーサーバＷ自体が記憶手段５を備える必要はない。記憶手段５は、ワーカーサーバＷがアクセス可能な任意の場所に設けることができる。勿論、記憶手段５にアクセスする処理を行う領域地図要素処理２及び点地図要素処理３を実行するワーカーサーバＷが自ノードの備える記憶手段５からデータを読み出して処理を行うことが、データローカリティ上好適であるといえる。
【００２６】
領域取得手段２２は、処理すべき領域地図要素が地図上で占める閉領域を表す範囲指定情報を、任意の場所に設けられた地図要素ＤＢ５２から読み出す。
【００２７】
メッシュ特定手段２３は、メッシュＤＢ５１からメッシュＩＤ及び位置情報を読み出して、領域取得手段２２が読み出した範囲指定情報が表す閉領域の少なくとも一部を含むメッシュを特定する。
ここで、領域取得手段２２が取得した範囲指定情報が表す閉領域は一定の範囲からなる領域地図要素に係る範囲指定情報が表す閉領域であるため、メッシュ特定手段２３が特定するメッシュは複数存在する可能性がある。そこで、本実施形態では、メッシュ特定手段２３は、基点決定手段２３１と、基点メッシュ特定手段２３２と、隣接メッシュ特定手段２３３と、包含判定手段２３４と、を含むこととしている。
【００２８】
基点決定手段２３１は、範囲指定情報が表す閉領域に含まれる任意の地点情報を決定する。任意の地点情報としては、例えば、領域地図要素の中心点や領域地図要素の頂点等が考えられるが、本実施形態では、任意の地点情報として領域地図要素の中心点を用いている。そのため、基点決定手段２３１は、領域地図要素の中心点を算出する。なお、中心点の算出は、任意の方法により行うことができ、所定のアルゴリズムに従って算出することとしてもよく、地図要素ＤＢ５２に予め記憶しておくこととしてもよい。
【００２９】
基点メッシュ特定手段２３２は、範囲指定情報が表す閉領域に含まれる任意の地点情報（中心点）が属するメッシュを基点メッシュとして特定する。
【００３０】
隣接メッシュ特定手段２３３は、基点メッシュに隣接するメッシュを隣接メッシュとして特定する。なお、隣接メッシュ特定手段２３３は、基点メッシュの周囲８個（隣接する）のメッシュだけでなく、領域地図要素の大きさによっては、基点メッシュの周囲２４個、４９個・・・等といった基点メッシュの周囲のメッシュを取得することとしてもよい。
【００３１】
包含判定手段２３４は、隣接メッシュに範囲指定情報が表す閉領域の少なくとも一部が含まれるか否かを判定する。
【００３２】
ここで、図４を参照して、メッシュ特定手段２３が範囲指定情報が表す閉領域の少なくとも一部を含むメッシュを取得する処理の流れについて説明する。
【００３３】
はじめに、メッシュ特定手段２３（基点決定手段２３１）は、領域地図要素１００の任意の地点情報である中心点１００Ａを決定する（図４（１））。
続いて、メッシュ特定手段２３（基点メッシュ特定手段２３２）は、中心点１００Ａの属するメッシュＡ５を特定する（図４（２））。
続いて、メッシュ特定手段２３（隣接メッシュ特定手段２３３）は、メッシュＡ５の周囲のメッシュである隣接メッシュＡ１，Ａ２，Ａ３，Ａ４，Ａ６・・・を取得する（図４（３））。
最後に、メッシュ特定手段２３（包含判定手段２３４）は、隣接メッシュＡ１，Ａ２，Ａ３，Ａ４，Ａ６・・・のそれぞれについて、範囲指定情報が表す閉領域の少なくとも一部が含まれるか否かを判定し、範囲指定情報が表す閉領域の少なくとも一部を含むメッシュを特定する（図４（４））。図４（４）では、領域地図要素１００の範囲指定情報が表す閉領域の少なくとも一部を含むメッシュとして、メッシュＡ２，Ａ３，Ａ５，Ａ６が特定されている。
【００３４】
図２に戻り、データ生成手段２４は、メッシュ特定手段２３が取得したメッシュをＫＥＹ、領域取得手段２２が読み出した範囲指定情報をＶＡＬＵＥとするＫＥＹ−ＶＡＬＵＥ型のデータセットを、メッシュ特定手段２３が取得したメッシュの数だけ生成する。例えば、データ生成手段２４は、「ＫＥＹ：メッシュＡ２、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」、「ＫＥＹ：メッシュＡ３、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」、「ＫＥＹ：メッシュＡ５、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」、「ＫＥＹ：メッシュＡ６、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」といったＫＥＹ−ＶＡＬＵＥ型のデータセットを生成する。
【００３５】
実行処理振り分け手段２５は、ＫＥＹ−ＶＡＬＵＥ型のデータセットをシャッフル、すなわち、ＫＥＹ−ＶＡＬＵＥ型のデータセットをＫＥＹでソートしメッシュ単位で（メッシュ特定手段２３が取得したメッシュ毎に）領域内外判定処理４を実行するワーカーサーバＷに振り分けることで、生成したＫＥＹ−ＶＡＬＵＥ型のデータセットに対する処理をメッシュ単位に分散して領域内外判定処理４を実行させる。
【００３６】
続いて、点地図要素処理３を実行するため、分散処理システム１は、記憶制御手段３１と、点要素取得手段３２と、メッシュ特定手段３３と、データ生成手段３４と、実行処理振り分け手段３５と、を含んで構成される。なお、点地図要素処理３を実行するための各手段は、領域地図要素処理２を実行するための各手段と基本的に同一であるため、詳細な説明は省略する。
【００３７】
記憶制御手段３１は、分散処理システム１の任意の場所に設けられた記憶手段５を制御し、記憶手段５に所定の情報を記憶する。点要素取得手段３２は、点地図要素の範囲指定情報（地点情報）を地図要素ＤＢ５２から読み出す。メッシュ特定手段３３は、点要素取得手段３２が読み出した範囲指定情報を含むメッシュを特定する。ここで、点地図要素の範囲指定情報は、範囲を有しない地点情報であるため、メッシュ特定手段３３は、当該地点情報が属するメッシュを特定すれば足りる。無論、点地図要素が一定の範囲を有する場合には、メッシュ特定手段２３と同様の処理を行うこととしてもよい。
【００３８】
データ生成手段３４は、メッシュ特定手段３３が特定したメッシュをＫＥＹ、点要素取得手段３２が読み出した範囲指定情報をＶＡＬＵＥとするＫＥＹ−ＶＡＬＵＥ型のデータセットを生成する。例えば、あるレストラン（レストラン１〜Ｎ）があるビル内に存在するか否かを判定する場合、データ生成手段３４は、「ＫＥＹ：レストラン１の属するメッシュ、ＶＡＬＵＥ：レストラン１の範囲指定情報」、「ＫＥＹ：レストラン２の属するメッシュ、ＶＡＬＵＥ：レストラン２の範囲指定情報」・・・「ＫＥＹ：レストランＮの属するメッシュ、ＶＡＬＵＥ：レストランＮの範囲指定情報」といったＫＥＹ−ＶＡＬＵＥ型のデータセットを生成する。
【００３９】
実行処理振り分け手段３５は、ＫＥＹ−ＶＡＬＵＥ型のデータセットをシャッフル、すなわち、ＫＥＹ−ＶＡＬＵＥ型のデータセットをＫＥＹでソートしメッシュ単位で領域内外判定処理４を実行するワーカーサーバＷに振り分けることで、生成したＫＥＹ−ＶＡＬＵＥ型のデータセットに対する処理をメッシュ単位に分散して領域内外判定処理４を実行させる。このことにより、領域内外判定処理４を実行するワーカーサーバＷは、ＫＥＹとして割り当てられたメッシュＩＤが示す所定のメッシュに含まれる範囲指定情報を全て得ることができる。
【００４０】
このように、領域内外判定処理４を実行するワーカーサーバＷには、ＫＥＹでソートされたＫＥＹ−ＶＡＬＵＥ型のデータセットが提供されるため、分散処理システム１では、同一のＫＥＹを持つデータセットについて、同一のワーカーサーバＷで領域地図要素及び点地図要素の位置関係に関する処理を並列実行させることができる。
【００４１】
続いて、領域内外判定処理４を実行するため、分散処理システム１は、メッシュ単位で地図上の位置関係に関する処理を実行する処理実行手段４１を含んで構成される。
例えば、領域内外判定処理４を実行するワーカーサーバＷには、「ＫＥＹ：メッシュＡ２、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」及び「ＫＥＹ：メッシュＡ２、ＶＡＬＵＥ：メッシュＡ２に属するレストランの範囲指定情報」といったＫＥＹ−ＶＡＬＵＥ型のデータセットが与えられ、当該ワーカーサーバＷにおいて、地図上の位置関係に関する処理、一例としては、当該レストランが領域地図要素１００内に存在するか否かが判定される。レストランが領域地図要素１００内に存在するか否かの判定（空間演算）は、例えば、オープンソースソフトウェアであるＪＴＳ等を用いることで実現することができる。
【００４２】
なお、実行処理振り分け手段２５（３５）で処理が振り分けられたワーカーサーバＷが領域内外判定処理４を実行するものであるが、振り分けによっては領域地図要素処理２又は点地図要素処理３を実行したワーカーサーバＷ自体が領域内外判定処理４を実行するワーカーサーバＷになり得る。
【００４３】
［分散処理システム１を構成する各サーバのハードウェア構成］
以上説明した分散処理システム１を構成する各サーバのハードウェアは、一般的なコンピュータによって構成することができる。一般的なコンピュータは、例えば、制御部として、中央処理装置（ＣＰＵ）を備える他、記憶部として、メモリ（ＲＡＭ、ＲＯＭ）、ハードディスク（ＨＤＤ）及び光ディスク（ＣＤ、ＤＶＤ等）を、ネットワーク通信装置として、各種有線及び無線ＬＡＮ装置を、表示装置として、例えば、液晶ディスプレイ、プラズマディスプレイ等の各種ディスプレイを、入力装置として、例えば、キーボード及びポインティング・デバイス（マウス、トラッキングボール等）を適宜備え、これらは、バスラインにより接続されている。このような一般的なコンピュータにおいて、ＣＰＵは、分散処理システム１を構成する各サーバを統括的に制御し、各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【００４４】
［分散処理システム１の処理］
次に、図５を参照して、分散処理システム１の処理について説明する。
【００４５】
［領域地図要素処理２］
Ｓ２０１：領域取得手段２２は、領域地図要素が地図上で占める閉領域を表す範囲指定情報を地図要素ＤＢ５２から読み出す。
例えば、点地図要素１１１，１１２，１１３，１１４，１１５，１１６が領域地図要素１００に存在するか否かを判定する場合（図６参照）、領域取得手段２２は領域地図要素１００の範囲指定情報を地図要素ＤＢ５２から読み出す。
【００４６】
Ｓ２０２：メッシュ特定手段２３は、メッシュＤＢ５１からメッシュＩＤ及び位置情報を読み出して、Ｓ２０１で読み出した範囲指定情報が表す閉領域の少なくとも一部を含むメッシュを特定する。具体的には、メッシュ特定手段２３は、領域地図要素１００の中心点を決定し、当該中心点の属する基点メッシュを特定する。そして、メッシュ特定手段２３は、基点メッシュに隣接する隣接メッシュを取得するとともに、当該隣接メッシュのうち、範囲指定情報が表す閉領域の少なくとも一部を含むメッシュを特定する。更に、メッシュ特定手段２３は、当該閉領域の全ての部分について上記特定を完了するまで、当該隣接メッシュに更に隣接する隣接メッシュを取得して同様の処理を繰り返す。
図６では、領域地図要素１００の範囲指定情報が表す閉領域の少なくとも一部を含むメッシュとして、メッシュＡ２，Ａ３，Ａ５，Ａ６が取得されている。
【００４７】
Ｓ２０３：データ生成手段２４は、Ｓ２０２で特定したメッシュをＫＥＹ、Ｓ２０１で読み出した範囲指定情報をＶＡＬＵＥとするＫＥＹ−ＶＡＬＵＥ型のデータセットを、Ｓ２０２で特定したメッシュの数だけ生成する。
図６では、「ＫＥＹ：メッシュＡ２、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」、「ＫＥＹ：メッシュＡ３、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」、「ＫＥＹ：メッシュＡ５、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」、「ＫＥＹ：メッシュＡ６、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」といったＫＥＹ−ＶＡＬＵＥ型のデータセットが生成される。
【００４８】
Ｓ２０４：実行処理振り分け手段２５は、ＫＥＹ−ＶＡＬＵＥ型のデータセットをメッシュ単位で領域内外判定処理４を実行するワーカーサーバＷに振り分ける。
図６では、「ＫＥＹ：メッシュＡ２、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」を領域内外判定処理４を実行するワーカーサーバＷのうちのあるワーカーサーバＷ（又は複数、以下同じ）に振り分け、「ＫＥＹ：メッシュＡ３、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」を領域内外判定処理４を実行するワーカーサーバＷのうちの別のワーカーサーバＷに振り分け、「ＫＥＹ：メッシュＡ５、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」を領域内外判定処理４を実行するワーカーサーバＷのうちの更に別のワーカーサーバＷに振り分け、「ＫＥＹ：メッシュＡ６、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」を領域内外判定処理４を実行するワーカーサーバＷのうちの更に別のワーカーサーバＷに振り分ける。
【００４９】
［点地図要素処理３］
Ｓ３０１：点要素取得手段３２は、点地図要素の範囲指定情報（地点情報）を地図要素ＤＢ５２から読み出す。
図６では、領域地図要素１００内に存在するか否かを判定する点地図要素１１１，１１２，１１３，１１４，１１５，１１６の範囲指定情報を地図要素ＤＢ５２から読み出す。
【００５０】
Ｓ３０２：メッシュ特定手段３３は、メッシュＤＢ５１からメッシュＩＤ及び位置情報を読み出して、Ｓ３０１で読み出した範囲指定情報を含むメッシュを特定する。
図６では、点地図要素１１１を含むメッシュとしてメッシュＡ２を取得し、点地図要素１１２を含むメッシュとしてメッシュＡ５を取得し、点地図要素１１３を含むメッシュとしてメッシュＡ５を取得し、点地図要素１１４を含むメッシュとしてメッシュＡ３を取得し、点地図要素１１５を含むメッシュとしてメッシュＡ３を取得し、点地図要素１１６を含むメッシュとしてメッシュＡ６を取得する。
【００５１】
Ｓ３０３：データ生成手段３４は、Ｓ３０２で特定したメッシュをＫＥＹ、Ｓ３０１で読み出した範囲指定情報をＶＡＬＵＥとするＫＥＹ−ＶＡＬＵＥ型のデータセットを生成する。
図６では、「ＫＥＹ：メッシュＡ２、ＶＡＬＵＥ：点地図要素１１１の範囲指定情報」、「ＫＥＹ：メッシュＡ３、ＶＡＬＵＥ：点地図要素１１４の範囲指定情報」、「ＫＥＹ：メッシュＡ３、ＶＡＬＵＥ：点地図要素１１５の範囲指定情報」、「ＫＥＹ：メッシュＡ５、ＶＡＬＵＥ：点地図要素１１２の範囲指定情報」、「ＫＥＹ：メッシュＡ５、ＶＡＬＵＥ：点地図要素１１３の範囲指定情報」、「ＫＥＹ：メッシュＡ６、ＶＡＬＵＥ：点地図要素１１６の範囲指定情報」といったＫＥＹ−ＶＡＬＵＥ型のデータセットが生成される。
【００５２】
Ｓ３０４：実行処理振り分け手段３５は、ＫＥＹ−ＶＡＬＵＥ型のデータセットをメッシュ単位で領域内外判定処理４を実行するワーカーサーバＷに振り分ける。
図６では、「ＫＥＹ：メッシュＡ２、ＶＡＬＵＥ：点地図要素１１１の範囲指定情報」を領域内外判定処理４を実行するワーカーサーバＷのうちのあるのワーカーサーバＷに振り分け、「ＫＥＹ：メッシュＡ３、ＶＡＬＵＥ：点地図要素１１４の範囲指定情報」及び「ＫＥＹ：メッシュＡ３、ＶＡＬＵＥ：点地図要素１１５の範囲指定情報」を領域内外判定処理４を実行するワーカーサーバＷのうちの別のワーカーサーバＷに振り分け、「ＫＥＹ：メッシュＡ５、ＶＡＬＵＥ：点地図要素１１２の範囲指定情報」及び「ＫＥＹ：メッシュＡ５、ＶＡＬＵＥ：点地図要素１１３の範囲指定情報」を領域内外判定処理４を実行するワーカーサーバＷのうちの更に別のワーカーサーバＷに振り分け、「ＫＥＹ：メッシュＡ６、ＶＡＬＵＥ：点地図要素１１６の範囲指定情報」を領域内外判定処理４を実行するワーカーサーバＷのうちの更に別のワーカーサーバＷに振り分ける。
【００５３】
［領域内外判定処理４］
Ｓ４０１：領域内外判定処理４を実行するワーカーサーバＷのそれぞれは、Ｓ２０４及びＳ３０４で振り分けられたＫＥＹ−ＶＡＬＵＥ型のデータセットを、メッシュ単位で取得する。なお、領域内外判定処理４を実行するワーカーサーバＷは、ＨａｄｏｏｐのＭｕｌｔｉｐｌｅＩｎｐｕｔｓクラスを利用することで、領域地図要素１００の範囲指定情報及び点地図要素１１１〜１１６の範囲指定情報を同時に取得し読み込むことができる。
図６では、メッシュＡ２の処理を行うワーカーサーバＷは、「ＫＥＹ：メッシュＡ２、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」及び「ＫＥＹ：メッシュＡ２、ＶＡＬＵＥ：点地図要素１１１の範囲指定情報」を取得し、メッシュＡ３の処理を行うワーカーサーバＷは、「ＫＥＹ：メッシュＡ３、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」、「ＫＥＹ：メッシュＡ３、ＶＡＬＵＥ：点地図要素１１４の範囲指定情報」及び「ＫＥＹ：メッシュＡ３、ＶＡＬＵＥ：点地図要素１１５の範囲指定情報」を取得し、メッシュＡ５の処理を行うワーカーサーバＷは、「ＫＥＹ：メッシュＡ５、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」、「ＫＥＹ：メッシュＡ５、ＶＡＬＵＥ：点地図要素１１２の範囲指定情報」及び「ＫＥＹ：メッシュＡ５、ＶＡＬＵＥ：点地図要素１１３の範囲指定情報」を取得し、メッシュＡ６の処理を行うワーカーサーバＷは、「ＫＥＹ：メッシュＡ６、ＶＡＬＵＥ：領域地図要素１００の範囲指定情報」及び「ＫＥＹ：メッシュＡ６、ＶＡＬＵＥ：点地図要素１１６の範囲指定情報」を取得する。
【００５４】
Ｓ４０２：処理実行手段４１は、地図上の位置関係に関する処理、例えば、点地図要素１１１〜１１６が領域地図要素１００内に存在するか否かを判定する処理を実行する。なお、地図上の位置関係に関する処理は、例えば、オープンソースソフトウェアであるＪＴＳ等を用いることで実現することができる。
図６では、点地図要素１１２、１１５は、領域地図要素１００内に存在すると判定され、点地図要素１１１，１１３，１１４，１１６は、領域地図要素１００内に存在しないと判定される。
【００５５】
［分散処理システム１の効果］
本実施形態の分散処理システム１では、複数のメッシュにまたがる領域地図要素１００に関する処理をメッシュ単位に分散して行う際に、領域地図要素１００がまたがるメッシュの全てに領域地図要素１００の範囲指定情報を持たせることとしている。これにより、領域地図要素の位置や大きさに関係なく、分散処理に最適なメッシュ単位でスケール可能な分散処理を行うことができる。
また、分散処理システム１による分散処理の結果、一例として、図７のようなインデックスＤＢを生成することができる。例えば、あるレストランがあるビルの中に存在していることを示すインデックスデータを生成することができる。また、例えば、環七（東京都道３１８号環状七号線）通り沿いの一定の範囲を領域地図要素として設定すれば、あるラーメン屋が環七沿いのものであることを示すインデックスデータを生成することもできる。また、駅から徒歩５分圏内の範囲を領域地図要素として設定すれば、ある店がある駅から徒歩５分以内に存在することを示すインデックスデータを生成することができる。
【００５６】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【符号の説明】
【００５７】
１  分散処理システム
２  領域地図要素処理
２１  記憶制御手段
２２  領域取得手段
２３  メッシュ特定手段
２４  データ生成手段
２５  実行処理振り分け手段
３  点地図要素処理
３１  記憶制御手段
３２  点要素取得手段
３３  メッシュ特定手段
３４  データ生成手段
３５  実行処理振り分け手段
４  領域内外判定処理
４１  処理実行手段
５  記憶手段
５１  メッシュＤＢ
５２  地図要素ＤＢ
Ｍ  マスタサーバ
Ｗ  ワーカーサーバ
【図１】
0005171904.tif 000002
【図２】
0005171904.tif 000003
【図３】
0005171904.tif 000004
【図４】
0005171904.tif 000005
【図５】
0005171904.tif 000006
【図６】
0005171904.tif 000007
【図７】
0005171904.tif 000008