(57)【要約】  ワイヤレス通信デバイスの通信グループ中のメンバーのグループ識別データベースなど、複数のアプリケーションスレッドによってアクセスされる大きな実質的に継続して変化するデータセットを継続的に更新するためのシステムおよび方法。第１のサーバがグループ識報データベースを保持し、第１のサーバ上のアプリケーションスレッドがグループ通信をセットアップするためにそのデータベースにアクセスすると、第２のサーバが、個別の順序付けブロックとして着信する新しいデータでそのデータベースを更新するために新しいグループ識別データを送信する。新しいデータブロックがグループ識別データベース中に更新されるとき、第１のサーバに常駐するデータインデックステーブルが、新しいデータブロックの順序付け情報で更新され、第１のサーバに常駐するチェックポインティングスレッドが、新しいデータブロックの順序付け情報をチェックポイントキャッシュに入れ、順序付け情報をチェックポイントし、データインデックステーブルと比較してデータの順序付け（またはバージョン）を検証する。
2011524718.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションスレッドによってアクセスされる大きな且つ実質的に継続して変化するデータセットを継続的に更新するためのシステムであって、
実質的に継続して変化する第１のデータセットを選択的に制御するように構成された第１のサーバであって、前記第１のサーバは、その上に常駐する、チェックポインティングスレッドを含む複数のアプリケーションスレッドを含み、前記第１のサーバは、チェックポインティングキャッシュとデータインデックステーブルとをさらに含み、前記第１のデータセットは、少なくとも前記第１のサーバ上に常駐する前記アプリケーションスレッドによってほぼ常にアクセスされる、第１のサーバと、
個別の順序付けブロックからなる新しいデータを、前記第１のデータセット中に含めるために第２のデータセットから前記第１のサーバに選択的に送信するように構成された第２のサーバと
を備え、
前記データインデックステーブルは、前記第２のデータセット内に保持されたデータブロックの順序付け情報をさらに含んでおり、前記データインデックステーブルは、前記第１のサーバにおいて前記第２のサーバから新しいデータブロックが受信されたときに更新され、
前記第１のサーバにおいて前記第２のサーバから新しいデータブロックが受信されたときに、少なくとも前記データブロックの前記順序付け情報が前記チェックポインティングキャッシュに入れられ、次いで、前記第１のデータセット中に含めるべき新しいデータのブロックごとに、前記チェックポインティングスレッドが、前記データインデックステーブル中の前記データブロックの前記順序付け情報を前記チェックポインティングキャッシュ中の前記データブロックの前記順序付け情報と比較し、
比較により、前記第１のデータセット中に含めるべき前記データブロックの順序についての正しい順序付け情報が示されたときは、前記チェックポインティングスレッドがそのデータブロックを第１のデータセット中に含め、
さもなければ、前記比較により、前記第１のデータセット中に含めるべき前記データブロックについての不正確な順序付け情報が示されたときは、前記チェックポインティングスレッドが、そのデータブロックを廃棄し、前記チェックポインティングキャッシュからの前記正しい順序の前記データブロックを待つ、システム。
【請求項２】
前記チェックポインティングスレッドがさらに、正しい順序付け情報を有する前記データブロックを前記第１のサーバのメモリに入れる、請求項１に記載のシステム。
【請求項３】
前記第１のサーバが、前記第２のサーバに新しいデータを選択的に要求するようにさらに構成された、請求項１に記載のシステム。
【請求項４】
前記比較により、前記第１のデータセット中に含めるべき前記データブロックについての不正確な順序付け情報が示されたとき、前記チェックポインティングスレッドが、前記第２のサーバに正しい順序の前記データブロックをさらに要求する、請求項１に記載のシステム。
【請求項５】
前記第１のデータセットがワイヤレス通信デバイスの通信グループのためのグループ識別データベースである、請求項１に記載のシステム。
【請求項６】
前記第１のサーバがワイヤレス通信デバイスの通信グループのためのグループ通信サーバである、請求項５に記載のシステム。
【請求項７】
前記アプリケーションスレッドが、ワイヤレス通信デバイスの通信グループのためのグループ通信をセットアップするために前記第１のデータセットにアクセスする、請求項５に記載のシステム。
【請求項８】
複数のアプリケーションスレッドによってアクセスされる大きな且つ実質的に継続して変化するデータセットを継続的に更新するための方法であって、
実質的に継続して変化する第１のデータセットを選択的に制御するように構成された第１のサーバにおいて個別の順序付けブロックからなる、第２のデータセットからの新しいデータを受信することであって、前記第１のサーバが、その上に常駐する、チェックポインティングスレッドを含む複数のアプリケーションスレッドを含み、前記第１のサーバが、チェックポインティングキャッシュとデータインデックステーブルとをさらに含み、前記第１のデータセットが、少なくとも前記第１のサーバ上に常駐する前記アプリケーションスレッドによって実質的に連続してアクセスされる、受信することと、
前記第１のサーバにおいて新しいデータブロックが受信されたときに前記データインデックステーブルを更新することであって、前記データインデックステーブルが、前記第２のデータセット内に保持されたデータブロックの順序付け情報を含んでいる、更新することと、
前記データブロックの前記順序付け情報を前記チェックポインティングキャッシュに入れることと、
前記第１のデータセット中に含めるべき新しいデータのブロックごとに、前記チェックポインティングスレッドが、前記データインデックステーブル中の前記データブロックの前記順序付け情報を前記チェックポインティングキャッシュ中の前記データブロックの前記順序付け情報と比較すること、と、
前記比較により、前記第１のデータセット中に含めるべき前記データブロックの順序についての正しい順序付け情報が示されたときは、前記チェックポインティングスレッドがそのデータブロックを第１のデータセット中に含めること、と、
さもなければ、前記比較により、前記第１のデータセット中に含めるべき前記データブロックについての不正確な順序付け情報が示されたときは、前記チェックポインティングスレッドが、そのデータブロックを廃棄し、前記チェックポインティングキャッシュからの前記正しい順序の前記データブロックを待つこと、と
を備える方法。
【請求項９】
前記チェックポインティングスレッドが、正しい順序付け情報を有する前記データブロックを前記第１のサーバのメモリに入れること、をさらに備える、請求項８に記載の方法。
【請求項１０】
前記第１のサーバが、第２のサーバにおける前記第２のデータセットに新しいデータを選択的に要求すること、をさらに備える、請求項８に記載の方法。
【請求項１１】
前記比較により、前記第１のデータセット中に含めるべき前記データブロックについての不正確な順序付け情報が示されたとき、前記チェックポインティングスレッドが、前記第２のサーバに正しい順序の前記データブロックを要求すること、をさらに備える、請求項１０に記載の方法。
【請求項１２】
前記第１のデータセットがワイヤレス通信デバイスの通信グループのためのグループ識別データベースであり、ワイヤレス通信デバイスの通信グループのためのグループ通信をセットアップするために１つまたは複数のアプリケーションスレッドによって前記第１のデータセットにアクセスすることをさらに備える、請求項８に記載の方法。
【請求項１３】
実質的に継続して更新され変化する常駐データセットを選択的に制御するように構成されたサーバであって、
その上に常駐する、チェックポインティングスレッドを含む複数のアプリケーションスレッドと、
チェックポインティングキャッシュと、
データインデックステーブルと、
少なくとも第１のサーバ上に常駐する前記アプリケーションスレッドによって実質的に連続してアクセスされ、個別の順序付けブロックからなる第２のデータセットからのデータブロックで少なくとも周期的に更新される、第１のデータセットと
を備え、
前記データインデックステーブルは、前記サーバにおいて前記第２のデータセットから新しいデータブロックが受信されたときに更新され、前記データインデックステーブルは、前記第２のデータセット内に保持されたデータブロックの順序付け情報を含んでおり、
前記サーバにおいて新しいデータブロックが受信されたときに、少なくとも前記データブロックの前記順序付け情報が前記チェックポインティングキャッシュに入れられ、次いで、前記第１のデータセット中に含めるべき新しいデータのブロックごとに、前記チェックポインティングスレッドが、前記データインデックステーブル中の前記データブロックの前記順序付け情報を前記チェックポインティングキャッシュ中の前記データブロックの前記順序付け情報と比較し、
前記比較により、前記第１のデータセット中に含めるべき前記データブロックの順序についての正しい順序付け情報が示されたときは、前記チェックポインティングスレッドがそのデータブロックを第１のデータセット中に含め、
さもなければ、前記比較により、前記第１のデータセット中に含めるべき前記データブロックについての不正確な順序付け情報が示されたときは、前記チェックポインティングスレッドが、そのデータブロックを廃棄し、前記チェックポインティングキャッシュからの前記正しい順序の前記データブロックを待つ
サーバ。
【請求項１４】
前記チェックポインティングスレッドがさらに、正しい順序付け情報を有する前記データブロックを前記サーバのメモリに入れる、請求項１３に記載のサーバ。
【請求項１５】
前記サーバが、第２のサーバに新しいデータを選択的に要求するようにさらに構成された、請求項１３に記載のサーバ。
【請求項１６】
前記比較により、前記第１のデータセット中に含めるべき前記データブロックについての不正確な順序付け情報が示されたとき、前記チェックポインティングスレッドが、前記第２のサーバに正しい順序の前記データブロックをさらに要求する、請求項１５に記載のサーバ。
【請求項１７】
前記第１のデータセットがワイヤレス通信デバイスの通信グループのためのグループ識別データベースである、請求項１３に記載のサーバ。
【請求項１８】
前記第１のサーバがワイヤレス通信デバイスの通信グループのためのグループ通信サーバである、請求項１３に記載のサーバ。
【請求項１９】
前記アプリケーションスレッドが、ワイヤレス通信デバイスの通信グループのためのグループ通信をセットアップするために前記第１のデータセットにアクセスする、請求項１７に記載のサーバ。
【請求項２０】
実質的に継続して更新され変化するデータセットを選択的に制御するように構成されたサーバであって、
その上に常駐する複数の常駐アプリケーションスレッドを制御するための手段と、
チェックポインティングデータを記憶するための手段と、
データインデックスを記憶するための手段と、
少なくとも前記アプリケーションスレッドを制御するための前記手段によって実質的に常にアクセスされている第１のデータセットを記憶するための手段と、
前記第１のデータセットを第２のデータセットからのデータブロックで少なくとも周期的に更新するための手段と
を備え、
データインデックスを記憶するための前記手段はさらに、前記サーバにおいて新しいデータブロックが受信されたときに前記データインデックスを更新し、前記データインデックスが、前記第２のデータセット内に保持されたデータブロックの順序付け情報を含んでおり、
チェックポインティングデータを記憶するための前記手段がさらに、前記第２のデータセットからの前記データブロックの前記順序付け情報を記憶し、
データインデックスを記憶するための前記手段中の前記データブロックの前記順序付け情報を、チェックポインティングデータを記憶するための前記手段中の前記データブロックの前記順序付け情報と比較するための手段を備え、
前記第１のデータセット中に含めるべき新しいデータのブロックごとに、前記比較により、前記第１のデータセット中に含めるべき前記データブロックの順序についての正しい順序付け情報が示されたときは、更新するための前記手段が、次いでそのデータブロックで前記第１のデータセットを更新し、
さもなければ、前記比較により、前記第１のデータセット中に含めるべき前記データブロックについての不正確な順序付け情報が示されたときは、更新するための前記手段が、次いでそのデータブロックを廃棄し、チェックポインティングデータを記憶するための前記手段からの前記正しい順序の前記データブロックを待つ、サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータデータベース構造に関する。より詳細には、本発明は、ワイヤレス通信デバイスの通信グループの間のグループ通信制御において使用するのに特にフォールトトレラント(fault-tolerant)で有利である、スケーラブルマルチスレッド(scalable and multi-threaded)データベースアーキテクチャに関する。
【背景技術】
【０００２】
総称的に「プッシュツートーク(Push-To-Talk)」（ＰＴＴ）機能と呼ばれる１対１または１対多数の通信を提供するワイヤレス通信サービスが存在する。通信ワイヤレスデバイスのための受信デバイスの特定のＰＴＴグループは、通常、キャリアによってセットアップされ、グループ通信をセットアップおよび制御するサーバにアクセス可能なデータベース上に保持される。ＰＴＴ通信接続は、典型的に、ワイヤレスデバイス上で１回ボタンを押して、話者とグループの各メンバーデバイスとの間の半二重リンクをアクティブにすることによって開始され、ボタンを放すと、デバイスは、ボタンを放した後の入信ＰＴＴ送信を受信することができる。いくつかの構成では、ＰＴＴ話者は、話者が話している間は他のグループメンバーが話すことができない「フロア」を有することになり、どのデバイスがフロアを有するかを判断するのは通信サーバの役目である。話者がＰＴＴボタンを放すと、グループの他のどの個々のメンバーも、彼らのＰＴＴボタンを作動させることができ、フロアを有することになる。
【０００３】
ＰＴＴグループのグループ情報を保持するデータベースなどのデータベースが、新しい情報で常時更新される必要があり、たとえば、新しいＰＴＴグループがキャリアにおいて追加されており、しかも、新しいグループ通信が行われるときにアクセスされる必要もあるとき、問題が起こる。したがって、キャリア（または他のサーバ）は、その新しいグループデータを、典型的にグループ通信サーバによってアクセス可能であるデータベースに送信する必要があり、それにより、グループ通信サーバは、そのレコードをメモリにおいて順序正しく更新し、また、そのデータをそのデータベースにおいて順序正しくチェックポイントすること、すなわち、キャリアまたは他のエンティティによって供給される正しいグループ情報を照合することが可能になる。
【０００４】
この更新は、典型的に、順序正しく記憶された複数のレコードを各パケットが有する複数のパケットにおいて新しいデータを送信するキャリアサーバを用いて行われる。グループ通信サーバ（または他の受信サーバ）は、入信パケットごとに新しいスレッドを生成し、次いで、サーバのメモリを更新し、それをデータベース中にチェックポイントする。データベースが更新されているときのレコードが極めて多数であり、データベースのアクセスがほぼ常時である場合は、更新の失敗の可能性が増加する。その上、新しいデータを正しい順序で送信する際に送信のクラッシュまたは失敗が起こり、その結果、受信サーバが再始動する必要が生じた場合、受信サーバは、順序正しく記憶されたレコードのみをチェックポイントから読み取ることができ、さもなければ、受信サーバがチェックポイントから順序正しく読み取った最後のレコードからのデータを用いてキャリアサーバが受信サーバを再び更新することを要求する必要があり、それは最悪の場合、データ送信を最初から再始動することである。
【０００５】
常時更新およびアクセスする必要があるデータベースに伴うこの問題の一般的なソリューションは、入信パケットのためのキューを使用し、次いで、順序正しく更新するための特定のパケットを選択することである。アプリケーションスレッドが順序正しくパケットを制御すると、そのパケット順序は、キャッシュにおいて更新され、また、更新がどの程度進行したかを判断するためのチェックポイントを形成する。しかしながら、インターネットまたは他のＴＣＰ／ＩＰ交換ネットワークなどのパケットネットワークにおいて一般的である、パケットの順序受信のエラーがあると、更新プロセスのために、正しく順序付けされたパケットの位置が特定される前にキューがいっぱいになった場合、その記憶が失敗することになる。
【０００６】
したがって、障害の著しい危険および新しいデータ送信全体を再送信する必要なしに、新しい順序付けデータの受信と、新しいデータの正しい順序でのデータベースの更新とを確実に可能にする、改善されたデータベースアーキテクチャを提供することが有利であろう。データベース内のデータの更新は、他のアプリケーションによる更新データベースのアクセスを妨害すべきではない。したがって、本発明が主に対象とするのは、そのような改善されたデータベースアーキテクチャの提供である。
【発明の概要】
【０００７】
手短に説明すると、本発明は、ワイヤレス通信デバイスの通信グループ中のメンバーのグループ識別データベースなど、複数のアプリケーションスレッドによってアクセスされる大きな且つほぼ継続的に変化するデータセットの継続的な更新を可能にするアーキテクチャのための発明である。第１のサーバがグループ識別データベースにアクセスでき、アプリケーションスレッドがメンバーワイヤレス通信デバイスの間のグループ通信をセットアップするためにそのデータベースにアクセスすると、キャリアサーバなどの第２のサーバが、個別の順序付けブロックとして着信する新しいデータでそのデータベースを更新するために新しいグループ識別データを送信する。新しいデータブロックがグループ識別データベース中に更新されるとき、第１のサーバにおけるデータインデックステーブルが、新しいデータブロックの順序付け情報で更新され、第１のサーバ上のチェックポインティングスレッドが、新しいデータブロックの順序付け情報をチェックポイントキャッシュに入れ、順序付け情報をチェックポイントして、それによって、メモリ中のデータセットを更新するためにチェックポインティングキャッシュからデータが取り出されたときに、データインデックステーブルと比較してデータの順序付け（またはバージョン）が検証される。このようにして、本アーキテクチャは、単一のキャッシュ、バッファ、またはキューの使用に依拠せずに、入信データブロックを受信するとともに、メモリへのブロック挿入をチェックポイントする。
【０００８】
一実施形態では、複数のアプリケーションスレッドによってアクセスされる大型のほぼ継続的に変化するデータセットを継続的に更新するためのシステムが、（通信グループ識別データベースなどの）ほぼ継続的に変化する第１のデータセットを選択的に制御するように構成された第１のサーバを含み、第１のサーバは、その上に常駐する、チェックポインティングスレッドを含む複数のアプリケーションスレッドを含み、また、第１のサーバは、チェックポインティングキャッシュとデータインデックステーブルとをさらに含み、第１のデータセットは、少なくとも第１のサーバ上に常駐する、アプリケーションスレッドによってほぼ常にアクセスされる。本システムは、新しいグループ識別など、個別の順序付けブロックからなる新しいデータを、第１のデータセット中に含めるために第２のデータセットから第１のサーバに選択的に送信するように構成された第２のサーバを有する。新しいデータが受信されると、データインデックステーブルが更新され、少なくともデータブロックの順序付け情報がチェックポインティングキャッシュに入れられる。第１のデータセット中に含めるべき（またはその中に更新すべき）新しいデータのブロックごとに、チェックポインティングスレッドは、データインデックステーブル中のデータブロックの順序付け情報をチェックポインティングキャッシュ中のデータブロックの順序付け情報と比較し、比較により、第１のデータセット中に含めるべきデータブロックの順序についての正しい順序付け情報が示されたときは、チェックポインティングスレッドはそのデータブロックを第１のデータセット中に含め、さもなければ、比較により、第１のデータセット中に含めるべきデータブロックについての不正確な順序付け情報が示されたときは、チェックポインティングスレッドは、そのデータブロックを廃棄し、チェックポインティングキャッシュからの正しい順序のデータブロックを待つ。あるいは、チェックポインティングスレッドは、第２のサーバに、なくなっている（１つまたは複数の）データブロックを要求することができる。
【０００９】
一実施形態では、複数のアプリケーションスレッドによってアクセスされる大型のほぼ継続的に変化するデータセットを継続的に更新するための方法が、ほぼ継続的に変化する第１のデータセットを選択的に制御するように構成された第１のサーバにおいて個別の順序付けブロックからなる、第２のデータセットからの新しいデータを受信するステップを含み、第１のサーバは、その上に常駐する、チェックポインティングスレッドを含む複数のアプリケーションスレッドを含み、また、第１のサーバは、チェックポインティングキャッシュとデータインデックステーブルとをさらに含み、第１のデータセットは、少なくとも第１のサーバ上に常駐するアプリケーションスレッドによってほぼ連続的にアクセスされる。第１のサーバにおいて新しいデータブロックが受信されたときにデータインデックステーブルを更新することであって、データインデックステーブルが、第２のデータセット内に保持されたデータブロックの順序付け情報を含んでいる、更新することと、データブロックの順序付け情報をチェックポインティングキャッシュに入れることとを含む。次いで、第１のデータセット中に含めるべき新しいデータのブロックごとに、チェックポインティングスレッドが、データインデックステーブル中のデータブロックの順序付け情報をチェックポインティングキャッシュ中のデータブロックの順序付け情報と比較することと、比較により、第１のデータセット中に含めるべきデータブロックの順序についての正しい順序付け情報が示されたときは、チェックポインティングスレッドがそのデータブロックを第１のデータセット中に含めることと、さもなければ、比較により、第１のデータセット中に含めるべきデータブロックについての不正確な順序付け情報が示されたときは、チェックポインティングスレッドが、そのデータブロックを廃棄し、チェックポインティングキャッシュからの正しい順序のデータブロックを待つこととを含む。
【００１０】
一実施形態では、ほぼ継続的に更新され変化する常駐データセットを選択的に制御するように構成されたサーバであって、チェックポインティングスレッドを含む複数の常駐アプリケーションスレッドと、チェックポインティングキャッシュと、データインデックステーブルと、少なくとも第１のサーバ上に常駐するアプリケーションスレッドによってほぼ連続的にアクセスされる第１のデータセットとを含む、サーバが提供される。第１のデータセットは、個別の順序付けブロックからなる第２のデータセットからのデータブロックで少なくとも周期的に更新される。本サーバ上で、データインデックステーブルは、第２のデータセットから新しいデータブロックが受信されたときに更新され、データインデックステーブルは、第２のデータセット内に保持されたデータブロックの順序付け情報を含んでいる。したがって、本サーバにおいて新しいデータブロックが受信されたときに、少なくともデータブロックの順序付け情報がチェックポインティングキャッシュに入れられ（あるいは、データのブロック全体がそこに入れられ）、次いで、第１のデータセット中に含めるべき新しいデータのブロックごとに、チェックポインティングスレッドは、データインデックステーブル中のデータブロックの順序付け情報をチェックポインティングキャッシュ中のデータブロックの順序付け情報と比較し、比較により、第１のデータセット中に含めるべきデータブロックの順序についての正しい順序付け情報が示されたときは、チェックポインティングスレッドはそのデータブロックを第１のデータセット中に含める。さもなければ、比較により、第１のデータセット中に含めるべきデータブロックについての不正確な順序付け情報が示されたときは、チェックポインティングスレッドは、そのデータブロックを廃棄し（または、そのブロックが書き込まれないようにし）、チェックポインティングキャッシュからの正しい順序のデータブロックを待つ。
【００１１】
したがって、本アーキテクチャ、ならびに対応するシステム、方法、および構成要素は、新しい順序付けデータの受信と、新しいデータの正しい順序でのデータセットの更新とを可能にし、それによって、障害の危険と新しいデータ送信全体を再送信する必要とを最小限に抑えるという点で有利である。データセット（データベース）は、正しく順序付けされた新しいデータが追加される間、依然として他のアプリケーションによってアクセスできる。その上、データセットは、本アーキテクチャでは容易にスケーラブルである。
【００１２】
本発明の他の目的、特徴、および利点は、図面の簡単な説明、発明の詳細な説明、および特許請求の範囲の検討の後に明らかになろう。
【図面の簡単な説明】
【００１３】
【図１】ワイヤレス通信デバイスの指定されたＰＴＴグループがグループ通信サーバと通信し、キャリアサーバがそのグループ通信サーバに更新されたグループレコードを送信する、ワイヤレスネットワークの代表的な図。
【図２】グループ通信サーバにＰＴＴグループメンバーのワイヤレス通信デバイス間の通信を制御させる、一般的なセルラー通信構成におけるワイヤレスネットワークの一実施形態の代表的な図。
【図３】キャリアサーバから新しいグループデータを取り出し、局所的に記憶されたグループ情報を更新する、グループ通信サーバ（または地域グループ当局（regional group authority））を示す代表的な図。
【図４】グループ通信サーバにおいてグループ識別データベースを更新するためのプロセスの一実施形態のフローチャート。
【図５】グループ通信サーバが入信パケットを処理し、その入信パケットで常駐(resident)キャッシュを更新するためのプロセスの一実施形態の代表的な図。
【図６Ａ】パケットがメモリに書き込まれるためにチェックポインティングキャッシュから取り出されたときに、グループ通信サーバがパケットをチェックポイントし、そのパケットの順序が正しくない場合のプロセスの一実施形態の代表的な図。
【図６Ｂ】パケットがメモリに書き込まれるためにチェックポインティングキャッシュから取り出されたときに、グループ通信サーバがパケットをチェックポイントし、そのパケットの順序が正しい場合、そのパケットをメモリに更新するためのプロセスの一実施形態の代表的な図。
【発明を実施するための形態】
【００１４】
本明細書では、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス通信デバイス」、「ＰＴＴ通信デバイス」、「ハンドヘルドデバイス」、「モバイルデバイス」、および「ハンドセット」という用語は、互換的に使用される。「呼」および「通信」という用語も互換的に使用される。本明細書で使用する「アプリケーション」という用語は、実行可能および非実行可能ソフトウェアファイル、生データ、集合体データ、パッチ、ならびに他のコードセグメントを包含することを意図するものである。「例示的」という用語は、開示する要素または実施形態が一例にすぎないことを意味し、ユーザのいかなる選好をも示さない。さらに、複数の図を通して同様の数字は同様の要素を指し、本明細書において別段の規定がない限り、冠詞「ａ」および「ｔｈｅ」は複数の参照を含む。
【００１５】
全体を通して同様の数字が同様の要素を表す図を参照すると、図１は、ワイヤレスネットワーク２０上の他のワイヤレス通信デバイスとともに、ＰＴＴグループ１２中の、ワイヤレス電話１４、スマートページャ１６および携帯情報端末（ＰＤＡ）１８などのワイヤレス通信デバイスのためのグループ識別データベースを更新し、それにアクセスするための、改善されたアーキテクチャを提供するためのシステム１０の一実施形態を示す。システム１０では、各ワイヤレス通信デバイス１４、１６、１８は、ワイヤレス通信ネットワーク２０上で１つまたは複数の他の複数のワイヤレス通信デバイスのターゲットセットと選択的に直接的にまたは間接的に通信することが可能である。たとえば、携帯電話１４のターゲットセットは、通信グループ１２中のすべてのデバイス、またはページャ１６およびＰＤＡ１８など、そのサブセットとすることができる。
【００１６】
典型的に、ワイヤレス通信デバイス（携帯電話１４など）は、ワイヤレスネットワーク２０上のサーバ側ＬＡＮ３０上に存在する、ここではグループ通信サーバ３２として示されているグループ通信コンピュータデバイスに、そのワイヤレスデバイスがワイヤレスネットワーク２０上に存在し、すなわちアクセス可能であることを通知する。グループ通信コンピュータデバイスは、ワイヤレスネットワーク２０上のグループメンバーデバイスに関する情報を保つか、又はこの情報を第１のワイヤレス通信デバイスによって示されるターゲットワイヤレス通信デバイスのセットと共有するかのいずれかを行うことができ、あるいはサーバ側ＬＡＮ３０上に常駐するかまたはワイヤレスネットワーク２０上でアクセス可能な他のコンピュータデバイスとこの情報を共有することもできる。グループ通信サーバ３２は、ワイヤレスデバイスのグループ識別データを記憶する付属のまたはアクセス可能なグループ識別データベース３４を有することができる。ここで、サーバ側ＬＡＮ３０上に存在するか、またはグループ通信サーバ３２に電子的にアクセス可能であるかのいずれかである、キャリアサーバ３６は、そのサーバがホスティングを担当するグループメンバー情報の更新のためにグループ識別情報をグループ通信サーバ３２に送信する。サーバ側ＬＡＮ３０上、またはワイヤレスネットワーク２０上、またはインターネット全体に常駐するコンピュータ構成要素の数は限定されないことを諒解されたい。
【００１７】
ＰＴＴボイス通信などのグループ通信は、通信ワイヤレス通信デバイス１４、１６、１８とターゲットセットの１つまたは複数の他のワイヤレス通信デバイスとの間の半二重(half-duplex)チャネルを介して確立できる。また、グループ通信コンピュータデバイス３２は、送信されたＰＴＴ通信を実際に受信しているターゲットセットのワイヤレス通信デバイスについての知識なしに、そのターゲットセットとの要求された直接通信をブリッジしようと試みることができる。あるいは、グループ通信コンピュータデバイス３２は、ターゲットセット１２への直接通信をブリッジすることができないことをＰＴＴ送信ワイヤレス通信デバイス１４、１６、１８に通知することができる。さらに、グループ通信コンピュータデバイス３２は、ここではグループ識別データの付属データベース３４を有するものとして示されているが、他のコンピュータデバイスが、その上に常駐するグループ識別データを有し、本明細書で説明するすべての記憶機能を実行することができる。たとえば、グループ通信サーバ３２は、他のサーバ制御通信グループから要求されるようにグループ情報を管理するための専用の地域グループ当局とすることができる。したがって、本システム１０は、ＰＴＴ環境における２つのサーバ間でデータを送信するためのスケーラブルなマルチスレッドフォールトトレラント(multi-threaded and fault-tolerant)アーキテクチャである。
【００１８】
図２は、ＰＴＴシステムにおけるセットグループメンバー（デバイス７０、７２、７４、７６）のワイヤレス通信デバイス間の通信を制御する一連のグループ通信コンピュータデバイス（グループ通信サーバ）３２を有する、一般的なセルラー通信構成におけるワイヤレスネットワークの一実施形態の代表的な図である。本ワイヤレスネットワークは、例示的なものにすぎず、リモートモジュールが互いの間および中で、ならびに／あるいは、限定はしないが、ワイヤレスネットワークキャリアおよび／またはサーバを含むワイヤレスネットワーク２０の構成要素の間および中で、無線で通信するための任意のシステムを含むことができる。一連のグループ通信サーバ３２はグループ通信サーバＬＡＮ５０に接続される。ワイヤレス通信デバイス１４、１６、１８は、ＥｖＤＯまたはＣＤＭＡ２０００規格の信号などのデータサービスオプションを使用して、（１つまたは複数の）グループ通信サーバ３にパケットデータセッションを要求することができる。
【００１９】
（１つまたは複数の）グループ通信サーバ３２は、ここではキャリアネットワーク５４上に常駐するものとして示されているＰＳＤＮ５２など、ワイヤレスサービスプロバイダのパケットデータサービスノード（ＰＤＳＮ）に接続される。各ＰＳＤＮ５２は、パケット制御機能（ＰＣＦ）６２を介して基地局６０の基地局コントローラ６４とインターフェースすることができる。ＰＣＦ６２は一般に基地局６０中に位置する。キャリアネットワーク５４は、メッセージングサービスコントローラ（「ＭＳＣ」）５８に（一般にデータパケットの形態で）送信されるメッセージを制御する。キャリアネットワーク５４は、ネットワーク、インターネットおよび／またはＰＯＴＳ（「旧式電話システム（plain ordinary telephone system）」）によってＭＳＣ５８と通信する。一般に、キャリアネットワーク５４とＭＳＣ５８との間のネットワークまたはインターネット接続はデータを転送し、ＰＯＴＳはボイス情報を転送する。ＭＳＣ５８は１つまたは複数の基地局６０に接続できる。キャリアネットワークと同様の方法で、ＭＳＣ５８は、一般に、データ転送用のネットワークおよび／またはインターネットとボイス情報用のＰＯＴＳとの両方によってブランチツーソース（branch-to-source）（ＢＴＳ）６６に接続される。ＢＴＳ６６は、最終的に、ショートメッセージサービス（「ＳＭＳ」）、または当技術分野で知られている他の無線方法によって、メッセージをセルラー電話７０、７２、７４、７６などのワイヤレスデバイスにワイヤレスでブロードキャストし、ワイヤレスデバイスからメッセージを受信する。また、本明細書で説明するように、キャリア境界および／またはＰＴＴオペレータネットワーク境界はデータの共有を抑止または禁止しないことに留意されたい。
【００２０】
図３は、キャリアサーバ１０２から新しいグループデータを取り出し、グループ識別データベース１０８上で局所的に記憶されたグループ情報を更新する、地域グループ当局（ＲＧＡ）１００（または代わりにグループ通信サーバ）を示す代表的な図である。ここでは１つまたは複数のサーバであるＲＧＡ１００は、グループ識別データベース１０８においてほぼ継続的に変化する第１のデータセットを選択的に制御するように構成されている。ＲＧＡ１００は、その上に常駐する、スレッド１１２、１１４、１１６などの複数のアプリケーションスレッドを含み、チェックポインティングスレッド１１８をも含む。ＲＧＡ１００は、チェックポインティングキャッシュ１０４とデータインデックステーブル１０６とを有し、グループ識別データベース１０８は、少なくとも、ここではグループ通信をセットアップするためのスレッドである、ＲＧＡ１００上に常駐するデータベースアクセススレッド３８などのアプリケーションスレッドによってほぼ常にアクセスされる（とはいえ、必ずしも連続的にアクセスされるわけではない）。
【００２１】
キャリアサーバ１０２（またはサーバまたは他のコンピュータデバイス）は、新しい通信グループレコードの形態の新しいデータを、グループ識別データベース１０８（または他のデータセット）中に含めるためにＲＧＡ１００に選択的に送信する。その新しいグループデータは個別の順序付けブロックからなり、データインデックステーブル１０６は、ＲＧＡ１００において新しいデータブロックが受信されたときに、そのデータブロックの順序付け情報を反映するように更新される。ＲＧＡ１００においてキャリアサーバ１０２から新しいデータブロックが受信されたときに、少なくともデータブロックの順序付け情報、および好ましくはデータブロックが、チェックポインティングキャッシュ１０４に入れられる。グループ識別データベース１０８中に含めるべき新しいデータのブロックごとに、チェックポインティングスレッド１１８は、データインデックステーブル１０６中のデータブロックの順序付け情報をチェックポインティングキャッシュ１０４中のデータブロックの順序付け情報と比較し、比較により、グループ識別データベース１０８中に含めるべきデータブロックの順序についての正しい順序付け情報が示されたときは、チェックポインティングスレッド１１８はそのデータブロックをグループ識別データベース１０８中に含める。さもなければ、比較により、グループ識別データベース１０８中に含めるべきデータブロックについての不正確な順序付け情報が示されたときは、チェックポインティングスレッド１１８は、そのデータブロックを廃棄し、チェックポインティングキャッシュ１０４からの正しい順序のデータブロックを待つ。
【００２２】
一実施形態では、チェックポインティングスレッド１１８はさらに、正しい順序付け情報を有するデータブロックをＲＧＡ１００のグループ識別データベース１０８に入れる。ＲＧＡ１００は、要求スレッド１１０などによってキャリアサーバ１０２に新しいデータを選択的に要求するようにさらに構成できる。また、ここで、キャリアサーバ１０２は、キャリアサーバ１０２に新しいレコードを供給する２次オペレータデータベース１２０と接触しているものとして示されている。また、比較により、グループ識別データベース１０８中に含めるべきデータブロックについての不正確な順序付け情報が示されたとき、チェックポインティングスレッド１１８は、キャリアサーバ１０２に正しい順序のデータブロックをさらに要求することができる。
【００２３】
動作中、ＲＧＡ１００のメモリの更新は任意の順序で実行できるが、グループ識別データベース１０８が正しく最新であることを検証するために、最終更新バージョン番号の属性（またはデータ項目としては「ＬａｓｔＵｐｄａｔｅｄＶｅｒｓｉｏｎＮｕｍｂｅｒ」）を追跡しなければならない。また、これは、その更新がタイムアウトした場合、更新プロセスが中断したところからの正確なレコード番号を求める要求をキャリアサーバ１０２に対して行うことができるようにするために必要である。
【００２４】
一実施形態では、アプリケーションスレッド１１２、１１４、１１６は、キャリアサーバ１０２からのデータパケットを待ち続け、パケットが着信すると、そのパケットの順序が正しいか否かにかかわらず、どのスレッドもそのパケットを処理することができる。パケット中にはグローバルカウンタが含まれており、すなわち、「ＬａｓｔＵｐｄａｔｅｄＶｅｒｓｉｏｎＮｕｍｂｅｒ」、さらに（開始レコード番号、終了レコード番号）のような（キー、値）のペアをもつハッシュマップである。したがって、スレッドが「ｕｐｄａｔｅＧｒｏｕｐＤｅｆＲｅｑ」パケットを受信すると、すなわち新しいデータが入ってくると、チェックポインティングスレッド１１８は、最初にそのレコード番号について検査し、これを「ＬａｓｔＵｐｄａｔｅｄＶｅｒｓｉｏｎＮｕｍｂｅｒ」と照合する。それが一致した場合、それは、このパケットの−ＬａｓｔＵｐｄａｔｅｄＶｅｒｓｉｏｎＮｕｍｂｅｒ終了レコード番号を更新する。それが一致しなかった場合、それはハッシュテーブルにそれを追加する。このパケットの処理が終わった後、そのスレッドは、（何らかの他のスレッドがこのスレッドの前にそのパケットを更新した可能性があるので）そのスレッドが予想する次のパケットのクイックルックアップＯ（１）をハッシュテーブルにおいて行う。そのスレッドは、そのパケットの位置を特定した場合、ハッシュテーブルにおいて見つかったレコードの終了バージョン番号でＬａｓｔＵｐｄａｔｅｄＶｅｒｓｉｏｎＮｕｍｂｅｒを更新し、そのレコードをハッシュテーブルから除去する。このようにして、データインデックステーブル１０６において、「ＬａｓｔＵｐｄａｔｅｄＶｅｒｓｉｏｎＮｕｍｂｅｒ」の厳密な順序付けを維持している。
【００２５】
メモリ（またはグループ識別データベース１０８）への更新のチェックポインティングは、厳密に順序が正しくなければならず、ＲＧＡ１００のフェールオーバ(failover)後、そのプロセスはそのチェックポイントから最終更新バージョン番号を読み取り、次いで、キャリアサーバ１０２に残りのバージョン番号を要求することができる。一実施形態では、「ｍｙｓｑｌ」データベースに記憶された２つのテーブルがあり、すなわち、キャリアサーバ１０２のレコードの現行バージョンで存在するすべてのデータを含んでいる、データインデックステーブル１０６Ｔａｂｌｅ−Ｃａｃｈｅ、および「ＬａｓｔＶｅｒｓｉｏｎＮｕｍｂｅｒＣｈｅｃｋｐｏｉｎｔｅｄ」のテーブルとすることができる、チェックポイントキャッシュ１０４である。チェックポインティングキャッシュ１０４（ここではテーブル）は、ＲＧＡ１００の一般的なメモリキャッシュを更新するために使用されるテーブルとは異なる。ＬａｓｔＶｅｒｓｉｏｎＮｕｍｂｅｒＣｈｅｃｋｐｏｉｎｔｅｄ中のバージョン番号は、グループ識別データベース１０８においてチェックポインティングスレッド１１８によって順序正しくチェックポイントされた最後の動作を表し、その前のチェックポイントから読み取ることは、情報を失うことがなく、安全である。
【００２６】
チェックポインティングスレッド１１８は、チェックポインティングキュー１０４からメッセージを読み取るとき、最初に属性「ＬａｓｔＶｅｒｓｉｏｎＮｕｍｂｅｒＣｈｅｃｋｐｏｉｎｔｅｄｉｎＭｅｍｏｒｙ」（これは、グループ識別データベース１０８中の「ＬａｓｔＶｅｒｓｉｏｎＮｕｍｂｅｒＣｈｅｃｋｐｏｉｎｔｅｄ」と同じである）を見て、そのメッセージの順序が正しいのか、または正しくないのかを判断する。メッセージの順序が正しくない場合、チェックポインティングスレッド１１８は、開始バージョン番号および終了バージョン番号を、キーと値のペアとしてマップに記憶する。好ましくは、そのマップ中に追加のフィールドがあり、チェックポインティングスレッド１１８は、現在チェックポインティングを行っている場合は、そのフィールドを０に設定し、チェックポインティングを完了した場合は、そのフィールドを１に設定する。チェックポインティングスレッド１１８は（ＬａｓｔＶｅｒｓｉｏｎＮｕｍｂｅｒＣｈｅｃｋｐｏｉｎｔｅｄを見ることによって）最終的に正しい順序のパケットを得ると、そのパケットをチェックポイントし、次の開始バージョン番号についてデータインデックステーブル１０６を再帰的に見て、最後に、これをグループ識別データベース１０８のテーブル「ＬａｓｔＶｅｒｓｉｏｎＮｕｍｂｅｒＣｈｅｃｋｐｏｉｎｔｅｄ」にチェックポイントする。したがって、レコード番号「ＬａｓｔＶｅｒｓｉｏｎＮｕｒｎｂｅｒＣｈｅｃｋｐｏｉｎｔｅｄ」を下回るあらゆるレコードが、グループ識別データベース１０８の場合のようにチェックポイントされる。
【００２７】
したがって、グループ識別データベース１０８の更新中のチェックポインティングのこのプロセスの一実施形態を図４のフローチャートに示す。ステップ１３０に示すように、入信データブロック（またはパケット）を受信し、次いで、ステップ１３２に示すように、データブロックをメモリキャッシュに入れ、それはワーカースレッド（１１２、１１４）によって行われる。ステップ１３４に示すように、（データインデックステーブル１０６などの）メモリマップ中のデータブロックのバージョンを更新し、次いで、ステップ１３４に示すように、グループ識別データベース１０８への更新のためにチェックポインティングスレッド１１８によってデータブロックを取り出す。
【００２８】
決定１３６に示すように、データブロックについてバージョン番号が正しいかどうかに関する判断を最初に行い、そうでなければ、ステップ１４０に示すように、データブロックを廃棄し、ステップ１４２に示すように、キャリアサーバ１０２に次のバージョン番号（または正しいバージョン）を要求し、本プロセスは、ステップ１３６において次のデータブロックを取り出すために戻る。さもなければ、決定１３８においてバージョン番号が正しかった場合、決定１４４で示すように、メモリにおいて更新すべきこのブロックについてチェックポインティングキャッシュ１０４中のチェックポイント番号が正しいかどうかに関する判断を行う。
【００２９】
決定１４４において、ブロックが書き込まれるためにすでに取り出されているか、またはブロックがなくなっている場合など、チェックポインティング番号が不正確だった場合、ステップ１４６に示すように、チェックポインティングスレッド１１８は、正しいブロックについてチェックポインティングキュー（または代わりにチェックポインティングキャッシュ）１０４を検査し、次いで、決定１４８において、正しいチェックポインティングについての判断を行う。正しくチェックポイントされたデータブロックの位置が特定された場合、ステップ１５０に示すように、データセット（または、ここでは、グループ識別データベース１０８）中のデータブロックを更新し、チェックポインティングキュー中のチェックポイントを更新し、本プロセスは、ステップ１３６において更新するための次のデータブロックを取り出すために戻る。さもなければ、決定１４８において、正しくチェックポイントされたデータブロックの位置が特定されなかった場合、ステップ１４２において、本プロセスは、キャリアサーバ１０２に所望のデータブロックの正しいバージョン番号を要求し、次いで、ステップ１３６において更新するための次のデータブロックを取り出すために戻る。
【００３０】
決定１４４において、正しくチェックポイントされたデータブロックが存在した場合、ステップ１５０に示すように、データブロックを更新し、ステップ１５２に示すように、チェックポイントキュー中のチェックポイントを更新し、本プロセスは、ステップ１３６において更新するための次のデータブロックを取り出すために戻る。新しいグループレコードがほとんど常時ＲＧＡ１００に着信していると、本プロセスは、たいていの場合、連続となるが、更新するためのデータブロックが存在しないときは終了し、新しいデータブロックを受信したときは再始動することができる。
【００３１】
図５は、グループ通信サーバが入信パケットを処理し、その入信パケットで常駐キャッシュを更新するためのプロセスのタイムラインの一実施形態の代表的な図である。ここでは、（データブロックまたはパケットなどの）入信メッセージを保持する保留スレッドキュー１６０があり、ワーカースレッド１１２、１１４がワーカースレッドキュー１６２を利用し、ワーカースレッドはグループキャッシュ１６４を更新し、そのスレッドがそのメッセージをメモリマップに入れることができるかどうかを判断し、そうであれば、その受信をキャリアサーバ１０２に通知し、メモリマップ１６６中の次の開始番号を探し、次いで、データインデックステーブル１０６などのメモリ１６８中の最終バージョン番号を更新した。これで、データインデックステーブル１０６は最新であるので、ワーカースレッドは、次いで、そのレコードを処理し、そのメッセージをチェックポインティングキュー１７０に追加する。
【００３２】
図６Ａは、パケットがグループ識別データベース１０８に書き込まれるためにチェックポインティングキュー１８０から取り出されたときに、グループ通信サーバまたはＲＧＡがメッセージをチェックポイントするためのプロセスの一実施形態の代表的な図である。ここで、チェックポインティングスレッド１８２が、チェックポインティングキュー１８０からメッセージ（またはデータブロック、パケットなど）をピックアップし、チェックポインティングスレッド１８２は、メモリ１８６から最終バージョン番号を得て、パケットの順序が正しいかどうか、すなわち最新であるかどうかを判断する。メッセージの順序が正しくない場合、ここではダーティビット値を０に設定することによって、チェックポインティングスレッド１８２が有するバージョン番号が不正確であることが示され、メモリマップ１８４が更新され、そのメッセージは廃棄される。本実施形態では、チェックポインティングスレッド１８２はまた、次いで、メッセージの不正確なバージョンがグループ識別データベース１８８に書き込まれていないことを検証するか、またはさもなければ、正しい更新のためにどんな新しいデータが必要とされるかを判断することができる。
【００３３】
図６Ｂは、図６Ａにおける正しいバージョン一致に続くプロセスの一実施形態の代表的な図である。したがって、チェックポインティングスレッド１８２が、チェックポインティングキュー１８０からメッセージ（またはデータブロック、パケットなど）をピックアップした後、チェックポインティングスレッド１８２は、メモリ１８６から最終バージョン番号を得て、パケットの順序が正しいかどうかを判断し、次いで、チェックポイントスレッド１８２は、メモリ１８４中のアクティブマップ中の次の開始バージョン番号を判断し、次いで、メモリ１８６中の最終バージョン番号を更新し、（それは、ここではチェックポインティングキュー１８０をも更新することになる）次いで、実際のデータをグループ識別データベース１８８中に更新する。ある更新からグループ識別データベース１８８機能への単一のメモリ更新は、データインデックステーブル１０６およびチェックポインティングキュー（またはキャッシュ）１０４を同時に更新することができることを諒解されたい。
【００３４】
コンピュータプラットフォーム上で実行可能である方法に鑑みて、これらのステップは、それに応じて、コンピュータ可読媒体に常駐するプログラムによって実行でき、そのプログラムは、コンピュータプラットフォームを有する１つまたは複数のコンピュータデバイスに、本明細書で説明するそれらのステップを実行するように命令する。コンピュータ可読媒体は、サーバのメモリとすることができ、または接続可能なデータベース中にあってもよい。さらに、コンピュータ可読媒体は、磁気ディスクもしくはテープ、光ディスク、ハードディスク、フラッシュメモリ、または当技術分野で知られている他の記憶媒体など、ワイヤレス通信デバイスのコンピュータプラットフォーム上にロード可能な２次記憶媒体中にあってもよい。
【００３５】
１つまたは複数の例示的な実施形態では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装できる。ソフトウェアで実装する場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶するか、あるいはコンピュータ可読媒体を介して送信することができる。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスできる任意の利用可能な媒体とすることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態の所望のプログラムコードを担持または記憶するために使用でき、コンピュータによってアクセスできる任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザディスク（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー(登録商標)ディスク（disk）およびブルーレイディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【００３６】
本発明を特にその好ましい実施形態を参照しながら図示し説明したが、以下の特許請求の範囲に示す本発明の範囲を逸脱することなく形態および詳細の様々な変更を行うことができることが、当業者には理解されよう。さらに、本発明の要素は、単数形で説明または請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
【図１】
2011524718.tif 000003
【図２】
2011524718.tif 000004
【図３】
2011524718.tif 000005
【図４】
2011524718.tif 000006
【図５】
2011524718.tif 000007
【図６Ａ】
2011524718.tif 000008
【図６Ｂ】
2011524718.tif 000009
【国際調査報告】
2011524718.tif 000010
2011524718.tif 000011
2011524718.tif 000012