(57)【特許請求の範囲】
【請求項１】
装置のプロセッサでコンピュータプログラムが実行されることにより、前記装置が実行する方法であって、
エンティティ識別子および要求されるコンテンツを指定するクエリを受信および／または処理することと；
データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することと；
前記エンティティ識別子に対して、前記要求されたコンテンツへのアクセス権を示すことと；
を含み、前記データ構造はさらに、前記プロファイルフィールドおよび前記アクセス制御フィールドを含み、前記アクセス制御フィールドは、前記エンティティ識別子との比較によって前記アクセス権を指定するために利用され、前記要求されたコンテンツはキーワードを含み、前記検索は、前記キーワードに基づく前記プロファイルフィールドのテキスト検索を含み、
前記方法はさらに、少なくとも部分的に前記検索結果の伝送を行う、
方法。
【請求項２】
前記アクセス権に基づいて、前記要求されたコンテンツを読み出すことを含み、前記検索は、アクセスを有することが示される前記検索結果のみを与える、請求項１に記載の方法。
【請求項３】
前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索される、請求項１または２に記載の方法。
【請求項４】
前記アクセス制御フィールドは複数のエンティティ識別子を含む、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記プロファイルフィールドは基本プロファイルフィールドであり、前記データ構造はさらに拡張プロファイルフィールドを含み、前記アクセス制御フィールドは、前記基本プロファイルフィールドおよび前記拡張プロファイルフィールドへのアクセス権を指定するために利用される、請求項４に記載の方法。
【請求項６】
前記プロファイルフィールドはさらに、前記データ構造のうちの１つ以上に対応するプロファイル識別子に関連付けられ、前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索され、前記プロファイル識別子は、前記データ構造のうちの１つにおける前記エンティティ識別子にのみ関連付けられる、請求項１から５のいずれか１項に記載の方法。
【請求項７】
少なくとも１つのプロセッサと、コンピュータプログラムコードを格納する少なくとも１つのメモリとを備える装置であって、前記コンピュータプログラムコードは、前記少なくとも１つのプロセッサに実行されることにより、前記装置に処理を遂行させるように構成され、前記処理は少なくとも以下：
エンティティ識別子および要求されるコンテンツを指定するクエリを受信および／または処理することと；
データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することと；
前記エンティティ識別子に対して、前記要求されたコンテンツへのアクセス権を示すことと；
を含み、前記データ構造はさらに、前記プロファイルフィールドおよび前記アクセス制御フィールドを含み、前記アクセス制御フィールドは、前記エンティティ識別子との比較によって前記アクセス権を指定するために利用され、前記要求されたコンテンツはキーワードを含み、前記検索は、前記キーワードに基づく前記プロファイルフィールドのテキスト検索を含み、
前記処理はさらに、少なくとも部分的に、前記検索結果の伝送を、少なくとも部分的に行うことを含む、
装置。
【請求項８】
前記処理はさらに、少なくとも部分的に、
前記アクセス権に基づいて、前記要求されたコンテンツを読み出すことを含み、ここで前記検索は、アクセスを有することが示される前記検索結果のみを与える、請求項７に記載の装置。
【請求項９】
前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索される、請求項７または８に記載の装置。
【請求項１０】
前記アクセス制御フィールドは複数のエンティティ識別子を含む、請求項７から９のいずれか１項に記載の装置。
【請求項１１】
前記プロファイルフィールドは基本プロファイルフィールドであり、前記データ構造はさらに拡張プロファイルフィールドを含み、前記アクセス制御フィールドは、前記基本プロファイルフィールドおよび前記拡張プロファイルフィールドへのアクセス権を指定するために利用される、請求項１０に記載の装置。
【請求項１２】
前記プロファイルフィールドはさらに、前記データ構造のうちの１つ以上に対応するプロファイル識別子に関連付けられ、前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索され、前記プロファイル識別子は、前記データ構造のうちの１つにおける前記エンティティ識別子にのみ関連付けられる、請求項７から１１のいずれか１項に記載の装置。
【請求項１３】
前記装置は移動電話であって、
ディスプレイの使用を通じて、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成され、かつユーザ入力に応答するように構成される、ユーザインターフェース回路およびユーザインターフェースソフトウェアと；
前記移動電話のユーザインターフェースのうちの少なくとも一部分を表示するように構成される、ディスプレイおよび表示回路であって、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成される、ディスプレイおよび表示回路と、
をさらに備える、請求項７から１２のいずれか１項に記載の装置。
【請求項１４】
１つ以上のプロセッサによって実行される時、装置に、少なくとも請求項１から６のいずれか１項に記載の方法を遂行させる、１つ以上の命令の１つ以上のシーケンスを格納する、コンピュータ可読記憶媒体。
【請求項１５】
請求項１から６のいずれか１項に記載の方法を遂行するための手段を備える、装置。
【請求項１６】
前記装置は移動電話であり、
ディスプレイの使用を通じて、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成され、かつユーザ入力に応答するように構成される、ユーザインターフェース回路およびユーザインターフェースソフトウェアと；
前記移動電話のユーザインターフェースのうちの少なくとも一部分を表示するように構成される、ディスプレイおよび表示回路であって、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成される、ディスプレイおよび表示回路と、
をさらに備える、請求項１５に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
ワイヤレス技術やセルラ技術等のサービスプロバイダやハードウェアメーカーは、例えば、強力なネットワークサービスを提供することによって、消費者に価値や利便性を提供することを常に課題としている。当該産業における重要な差別化要因は、アプリケーションやネットワークサービス、またこれらのサービスをサポートし拡大するための能力である。特に、これらのアプリケーションやサービスは、例えば、ソーシャルサービスによって利用されるデータのアクセスおよび管理を含んでもよい。これらのサービスは、データアクセスに関連する、多大な量のユーザプロファイルの管理を伴う。従来から、アクセス制御やデータ管理形態には、別々の機構が用いられてきた。ユーザの数が増加するにつれ、これらの機構はうまく規模の拡大に対応できず、また情報読出に関して、ますます大きな遅延をもたらす可能性がある。
【いくつかの例示的な実施形態】
【０００２】
したがって、プロファイル（例えば、ユーザプロファイル、エンティティプロファイル等）を検索するために、スケーラブルなデータ構造を利用するための手法に対する必要性が存在する。
【０００３】
一実施形態によると、方法は、エンティティ識別子および要求されるコンテンツを指定するクエリを受信することを含む。該方法はまた、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することを含む。該方法はさらに、前記エンティティ識別子に対して、前記要求されたコンテンツへのアクセス権を示すことを含む。前記データ構造はさらに、前記プロファイルフィールドおよび前記アクセス制御フィールドを含む。
【０００４】
別の実施形態によると、装置は、少なくとも１つのプロセッサと、コンピュータプログラムコードを格納する少なくとも１つのメモリと、を備え、少なくとも１つのメモリおよびコンピュータプログラムコードは、少なくとも１つのプロセッサとともに、少なくとも部分的に、装置に、エンティティ識別子および要求されるコンテンツを指定するクエリに受信させるように構成される。該装置はまた、少なくとも部分的に、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することを行わせられる。該装置はさらに、エンティティ識別子に対して、要求されたコンテンツへのアクセス権を示すことを行わせられる。データ構造はさらに、プロファイルフィールドおよびアクセス制御フィールドを含む。
【０００５】
別の実施形態によると、コンピュータ可読記憶媒体は、１つ以上のプロセッサによって実行される時、少なくとも部分的に、装置に、エンティティ識別子および要求されるコンテンツを指定するクエリを受信させる、１つ以上の命令の１つ以上のシーケンスを格納する。該装置はまた、少なくとも部分的に、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することを行わせられる。該装置はさらに、エンティティ識別子に対して、要求されたコンテンツへのアクセス権を示すことを行わせられる。データ構造はさらに、プロファイルフィールドおよびアクセス制御フィールドを含む。
【０００６】
別の実施形態によると、装置は、エンティティ識別子および要求されるコンテンツを指定するクエリを受信するための手段を備える。該装置はまた、少なくとも部分的に、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせる手段を素なる。ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定する。該装置はさらに、エンティティ識別子に対して、要求されたコンテンツへのアクセス権を示すための手段を備える。データ構造はさらに、プロファイルフィールドおよびアクセス制御フィールドを含む。
【０００７】
本発明のさらなる他の側面、特性、および利点は、単に、本発明を実行するために企図される最良の形態を含む、いくつかの特定の実施形態および実装を例示することにより、以下の詳細な説明から容易に明らかとなる。本発明はまた、他のおよび異なる実施形態が可能であり、かつそのいくつかの詳細は、全て本発明の精神および範囲から逸脱することなく、種々の明らかな点において修正することができる。したがって、図面および説明は、事実上、制限としてではなく、例示として見なされるものとする。
【図面の簡単な説明】
【０００８】
本発明の実施形態を、限定する意図ではなく例示の目的のために、添付図面を用いて説明する。
【図１Ａ】一実施形態に従う、スケーラブルなデータ構造を利用することが可能なシステムの図である。
【図１Ｂ】一実施形態に従う、分散インデックスエンジン（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｉｎｄｅｘ  Ｅｎｇｉｎｅ）の構成要素を示す図である。
【図１Ｃ】一実施形態に従う、分散キー値ストア（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）の構成要素を示す図である。
【図２】一実施形態に従う、スケーラブルなデータ構造の使用状況を例示する図である。
【図３】一実施形態に従う、分散キー値ストアにおいて利用され得る、例示的なデータ構造の図である。
【図４】一実施形態に従う、プロファイルを作成およびインデックス化するためのプロセスのフローチャートである。
【図５】一実施形態に従う、プロファイルを検索するために、スケーラブルなデータ構造を利用するためのプロセスのフローチャートである。
【図６】本発明の実施形態を実装するために使用することができる、ハードウェアの図である。
【図７】本発明の実施形態を実装するために使用することができる、チップセットの図である。
【図８】本発明の実施形態を実装するために使用することができる、移動端末（例えば、ハンドセット）の図である。
【いくつかの実施形態の説明】
【０００９】
ユーザプロファイルを検索するために、スケーラブルなデータ構造を利用するための方法、装置、およびコンピュータプログラムの実施例を開示する。以下の説明において、説明の目的上、本発明の実施形態の完全な理解を提供するために、数々の具体的な詳細が記載される。しかしながら、本発明の実施形態は、これらの具体的な詳細を伴うことなく、または同じような構成を用いて実施され得ることが、当業者には明白である。他の例において、よく知られる構造およびデバイスは、本発明の実施形態を不必要に不明瞭にすることを回避するために、ブロック図形態で示される。
【００１０】
図１Ａは、一実施形態に従う、スケーラブルなデータ構造を利用することが可能なシステムの図である。ネットワークサービス（特に、ソーシャルネットワーキングサービス）に対する需要の増加とともに、例えば、ユーザ連絡先データ、プロファイルデータ、およびユーザの接続データのアクセスを適切に管理する必要性は、最重要な懸念事項である。ソーシャルネットワークサービスの不可欠な部分として、これらのデータの連続的な検索および更新がある。これらの検索および読出機能は、必然的に、ますます大きなデータベースをもたらしている。データベースのサイズ、効率性、および待ち時間は、どのようにデータが記憶されるかに基づいて制限され得ることに留意されたい。
【００１１】
この問題に対処するために、図１のシステム１００は、スケーラブルなデータ構造を利用する能力を導入する。データ構造は、人物、企業、組織、グループ等といった、１つ以上のエンティティに関する情報を記憶してもよい。ある実施形態において、データ構造は、アクセス制御フィールド、プロファイル識別子、プロファイルデータに関連付けられる１つ以上のフィールド（例えば、アドレスデータ、電子メールデータ、電話番号データ等といった連絡先情報、名前データ、他の識別子、友人データ、コメントデータといったプロファイルに関連付けられる他のデータ、エンティティに関する他のデータ等）、またはこれらの組み合わせを含んでもよい。さらに、他のデータが利用されてもよい。例えば、アクセス制御フィールドは、その識別子が、プロファイル識別子や、１つ以上の関連付けられたフィールドへのアクセスを有することを表す、１つ以上のエンティティ識別子や他の識別子に関連付けることができる。ある実施形態において、エンティティ識別子は、ユーザ、グループ、組織等に関連付けられる識別子である。種々の実施形態が、ユーザ識別子に関して説明されているが、本明細書において説明される手法は、グループ識別子、組織識別子、メンバ識別子、被雇用者識別子等を含む、他のエンティティ識別子とともに使用されてもよいことが企図されている。さらに、エンティティ、またはエンティティに属するユーザは、エンティティ識別子、またはエンティティ識別子にリンクされる別の識別子を提供することによって、システム１００で認証してもよい。換言すると、ユーザ識別子は、ユーザ識別子のユーザに関連付けられる、複数のエンティティ識別子（例えば、雇用者識別子、グループ識別子等）にリンクされてもよい。一状況下において、ユーザは、通信ネットワーク１０５上でソーシャルサービスプラットフォーム１０３と相互作用する、ユーザのユーザ機器（ＵＥ）１０１ａ〜１０１ｎを使用して、サービスを利用することができる。ＵＥ１０１ａ〜１０１ｎの各々は、１つ以上のアプリケーション１０７を使用することにより、ソーシャルサービスプラットフォーム１０３を利用して、データ構造を使用したエンティティに関する情報を受信するようにされてもよい。
【００１２】
さらに、一実施形態において、データ構造のアクセス制御フィールドは、あるバージョンのテキストインデックス化（ｔｅｘｔ  ｉｎｄｅｘｉｎｇ）を使用して、インデックス化されてもよい。テキストインデックス化において、変数（例えばドキュメントまたはプロファイル）は、真（Ｔｒｕｅ）である変数内に含まれる各単語（ｗｏｒｄ）に基づいて、インデックス化されてもよい。例えば、「ｔｈｉｓ  ｉｓ  ｔｈｅ  ｆｉｒｓｔ  ｖｅｒｓｉｏｎ，  ｎｏｔ  ｔｈｅ  ｂｅｔａ  ｖｅｒｓｉｏｎ」という文字列変数は、「ｔｈｉｓ」、「ｉｓ」、「ｔｈｅ」、「ｆｉｒｓｔ」、「ｖｅｒｓｉｏｎ」、「ｎｏｔ」、および「ｂｅｔａ」という単語を含む。それはまた、何らかの単語を複数回、ならびにある一般的な単語を含む。一状況において、アクセス制御フィールドは、各単語がユーザ識別子またはエンティティ識別子である場合、インデックス化されうる。さらに、データ構造は、逆インデックス（ｉｎｖｅｒｔｅｄ  ｉｎｄｅｘ）を作成するために使用されてもよい。逆インデックスは、コンテンツ（例えば、ユーザプロファイルとともに記憶される単語または数）から、データベースファイル、ドキュメント、ドキュメントの組などにおける当該コンテンツの場所へのマッピングを記憶することができる、インデックスデータ構造である。ある状況において、各エンティティ識別子に対して、ユーザまたはエンティティのプロファイルに関連付けられるデータの場所への異なる可視性を定義する、いくつかの線（ｌｉｎｅ）が存在する。加えて、データ構造をインデックス化するために、逆インデックスの代わりに、または逆インデックスに加えて、他のインデックスが利用されてもよい。例えば、ハッシュテーブルデータ構造、またはＢツリーインデックスといったツリーデータ構造を用いてもよい。Ｂツリーは、バイナリ検索ツリーと類似するが、さらにノードから分岐する２つ以上のパスを有する能力を有する、ツリーデータ構造である。Ｂツリーインデックスは、データベースのセグメントの最初の記録を含んでもよい。そのようにして、Ｂツリーインデックスは、どのデータ構造のデータベースのセグメントを検索するかを判断するために使用することができる。加えて、ハッシュテーブルは、識別子またはキー（例えば、名前）を値（例えば数）にマップするために利用されてもよい。次いで、その値は、キーを検索するためのハッシュを使用して、インデックス化することができる。ハッシュインデックス化のさらに例示的な実装詳細を、図１Ｃで述べる。
【００１３】
さらに、サービスプラットフォーム１０９は、ソーシャルサービスプラットフォーム１０３と規定通りに相互作用してもよい。サービスプラットフォーム１０９は、ソーシャルサービス、メッセージングサービス、保険サービス、小売サービス、音楽サービス、またはソーシャルサービスプラットフォーム１０３に記憶されるデータを利用し得る他の同様のサービスを提供してもよい。例えば、サービスのうちの一部は、１人以上のユーザのプロファイルデータにアクセスするために、ソーシャルサービスプラットフォーム１０３にアクセスし、その情報を、ユーザのそれぞれのＵＥ１０１上のアプリケーション１０７を利用して、サービスプラットフォーム１０９の１人以上のユーザに提供してもよい。さらに、サービスプラットフォーム１０９の１つ以上のサービスは、ソーシャルサービスプラットフォーム１０３を使用して記憶されるプロファイル情報を有する、エンティティであってもよい。
【００１４】
ソーシャルネットワーキングアプリケーション１０７を利用するサービスまたはユーザは、ソーシャルサービスプラットフォーム１０３に要求を送信することによって、プロファイルを作成、管理、更新、検索、または読み出してもよい。ソーシャルサービスプラットフォーム１０３は、要求を受信すべく、ソーシャルアプリケーションプログラミングインターフェース（ＡＰＩ）１１１を利用してもよい。ある実施形態において、ソーシャルＡＰＩ １１１は、１つ以上のプラットフォーム（例えば、サーバ、コンピュータ、電子機械等）上で実装され、レプレセンテーショナル・ステイト・トランスファ（ＲＥＳＴ）、ＳＯＡＰ、拡張可能なメッセージングおよびプレゼンスプロトコル（ＸＭＰＰ）、ＪａｖａＳｃｒｉｐｔ  ＡＰＩ、他の類似のＡＰＩ、またはこれらの組み合わせを利用してもよい。ある実施形態において、ユーザは、ＸＭＰＰを介してサービスプラットフォーム１０９上のサービスに連絡し、サービスプラットフォーム１０９は、ＵＥ１０１とソーシャルサービスプラットフォーム１０３との間の仲介として機能する。
【００１５】
例として、システム１００の通信ネットワーク１０５は、データネットワーク（図示せず）、ワイヤレスネットワーク（図示せず）、テレフォニーネットワーク（図示せず）、または任意のこれらの組み合わせといった、１つ以上のネットワークを含む。データネットワークは、任意のローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、公的データネットワーク（例えば、インターネット）、または商業的に所有される、専用パケット交換ネットワーク、例えば、専用ケーブルもしくは光ファイバネットワークといった、任意の他の好適なパケット交換ネットワークであってもよい。加えて、ワイヤレスネットワークは、例えば、セルラネットワークであってもよく、ＥＤＧＥ、汎用パケット無線サービス（ＧＰＲＳ）、移動通信用グローバルシステム（ＧＳＭ）、インターネットプロトコルマルチメディアサブシステム（ＩＭＳ）、ユニバーサル移動通信システム（ＵＭＴＳ）等、ならびに任意の他の好適なワイヤレス媒体、例えば、マイクロ波アクセスの国際的相互運用性（ＷｉＭＡＸ）、長期展開（ＬＴＥ）ネットワーク、符号分割多重アクセス（ＣＤＭＡ）、広帯域符合分割多重アクセス（ＷＣＤＭＡ）、ワイヤレスフィデリティ（ＷｉＦｉ）、衛星、移動アドホックネットワーク（ＭＡＮＥＴ）および同じようなもの含む、種々の技術を採用してもよい。
【００１６】
ＵＥ１０１は、移動ハンドセット、局、ユニット、デバイス、マルチメディアコンピュータ、マルチメディアタブレット、インターネットノード、コミュニケータ、デスクトップコンピュータ、ラップトップコンピュータ、個人用デジタル補助装置（ＰＤＡ）、もしくはこれらの任意の組み合わせを含む、任意のタイプの移動端末、固定端末、または携帯型端末である。ＵＥ１０１が、ユーザへの任意のタイプのインターフェース（「ウェアラブル」回路等といった）をサポートすることができるということもまた企図される。
【００１７】
例として、ＵＥ１０１、サービスプラットフォーム１０９、およびソーシャルサービスプラットフォーム１０３は、よく知られる、新たな、または依然として開発中のプロトコルを使用して、相互に、および通信ネットワーク１０５の他の構成要素と通信する。ここで、プロトコルは、通信ネットワーク１０５内のネットワークノードが、どのように、通信リンク上で送信される情報に基づいて相互に相互作用するかを定義する、一組の規則を含む。プロトコルは、種々のタイプの物理信号を生成および受信することから、それらの信号を、それらの信号によって示される情報の形式へ転送するためのリンクを選択すること、どのコンピュータシステム上で実行するソフトウェアアプリケーションが、情報を送信または受信するかを識別することまで、各ノードにおける様々なレイヤーの動作で有効である。ネットワーク上で情報を交換するための様々なプロトコルのレイヤーの概念は、開放型システム間相互接続（ＯＳＩ）参照モデルにおいて説明される。
【００１８】
ネットワークノード間の通信は、典型的に、個別のデータパケットを交換することによって、達成される。各パケットは、典型的に、（１）特定のプロトコルに関連付けられるヘッダ情報、および（２）ヘッダ情報に続き、かつその特定のプロトコルとは独立して処理され得る情報を格納する、ペイロード情報を含む。一部のプロトコルにおいて、パケットは、（３）ペイロードに続き、かつペイロード情報の終了を示す、トレイラ情報を含む。ヘッダは、パケットのソース、その送り先、ペイロードの長さ、およびプロトコルによって使用される他の特性といった、情報を含む。しばしば、特定のプロトコルに対する、ペイロードにおけるデータは、異なる、より高い層のＯＳＩ参照モデルと関連付けられる、異なるプロトコルに対する、ヘッダおよびペイロードを含む。特定のプロトコルに対するヘッダは、典型的に、そのペイロードに格納される次のプロトコルに対するタイプを示す。より高い層のプロトコルは、より低い層のプロトコルにカプセル化されると言われる。インターネットといった複数の異種ネットワークを横断するパケットに含まれるヘッダは、典型的に、ＯＳＩ参照モデルによって定義されるように、物理（層１）ヘッダ、データリンク（層２）ヘッダ、インターネットワーク（層３）ヘッダ、および輸送（層４）ヘッダ、ならびに種々のアプリケーションヘッダ（層５、層６、および層７）を含む。
【００１９】
一実施形態において、ソーシャルネットワーキングアプリケーション１０７、およびソーシャルサービスプラットフォーム１０３は、クライアント・サーバモデルに従って相互作用する。クライアント・サーバモデルに従って、クライアントプロセスは、要求を含むメッセージをサーバプロセスに送信し、サーバプロセスは、サービスを提供することによって応答する。サーバプロセスはまた、クライアントプロセスへの応答とともに、メッセージを返してもよい。しばしば、クライアントプロセスおよびサーバプロセスは、ホストと呼ばれる、異なるコンピュータデバイス上で実行し、ネットワーク通信のための１つ以上のプロトコルを使用して、ネットワークを介して通信する。「サーバ」という用語は、サービスを提供するプロセス、またはそのプロセスが動作するホストコンピュータを指すために従来使用される。同様に、「クライアント」という用語は、要求を行うプロセス、またはそのプロセスが動作するホストコンピュータを指すために従来使用される。本明細書において使用される際、「クライアント」および「サーバ」という用語は、別途文脈から明白でない限り、ホストコンピュータというよりもむしろ、プロセスを指す。加えて、サーバによって遂行されるプロセスは、とりわけ信頼性、スケーラビリティ、および冗長性を含む理由から、複数のホスト（ティアと呼ばれる場合もある）上で複数のプロセスとして実行させるように、細分化することができる。
【００２０】
一状況下において、ソーシャルＡＰＩ １１１は、プロファイルを作成するために必要とされる情報を収集し、分散キー値ストア１１３を利用してプロファイルを記憶してもよい。種々の実施形態が、分散キー値ストア１１３に関して説明されているが、本明細書において説明される手法は、他のデータベース（例えば、記憶デバイスが全て共通のプロセッサに取説されている、データベース管理システムの制御下の分散データベース、または非分散データベース）とともに使用されてもよいことが企図されている。プロファイルを作成するために必要とされる情報は、認証情報（例えば、ユーザ名およびパスワード）、ユーザ識別子、プロファイルに関連付けられるサービス、１つ以上のプロファイルフィールドに対するプロファイルデータ、または同じようなもののうちの１つ以上を含んでもよい。次いで、ソーシャルＡＰＩ １１１および／または分散キー値ストア１１３は、分散インデックスエンジン１１５に、プロファイルの作成を通知してもよい。
【００２１】
分散インデックスエンジン１１５は、プロファイルにおける情報を、プロファイルに関連付けられ得るデータ構造のインデックスに追加してもよい。インデックス化されると、プロファイルは、データ構造を介してアクセス制御を実装しつつ、有利にも検索され得るようになる。ある状況下において、プロファイル全体がインデックス化され、他の状況においては、プロファイルのある部分のみがインデックス化される（例えば、テキスト部分）。しかしながら、データ構造は、このインデックス化されていない情報に対する、場所表示情報を含んでもよい。先に述べたように、インデックスは、プロファイルに設定されるパラメータ（例えば、関連付けられたサービス、連絡先リスト、プロファイルに関連付けられる領域またはアドレスといったエリア等）に基づいて、プロファイルに関連付けられてもよい。インデックスは、データ構造の１つ以上のインスタンスを含んでもよい。ソーシャルサービスプラットフォーム１０３によって利用され得るデータ構造の例示的なインデックスを、図２に詳述する。さらに、インデックスに関連付けられるデータフィールドを更新するために、分散インデックスエンジン１１５が利用されてもよい。
【００２２】
図１Ｂは、一実施形態に従う、分散インデックスエンジン１１５の構成要素の図である。例として、分散インデックスエンジン１１５は、ソーシャルサービスプラットフォーム１０３のユーザに、サービスのインデックス化および検索を提供するための１つ以上の構成要素を含む。これらの構成要素の機能は、１つ以上の構成要素と組み合わされる他の構成要素や、同じような機能性を有する他の構成要素によって遂行されてもよい。本実施形態において、分散インデックスエンジン１１５は、１つ以上のインデックスエンジン１２０ａ〜１２０ｎを含み、これらの各々は、クエリに基づいて、情報をインデックス化および／または検索、ならびに読み出すために利用されてもよい。各インデックスエンジン１２０は、ＡＰＩ １２１と、データ構造のインデックスを記憶、検索、および利用するためのメモリと、インデックスを生成、検索、および更新するためのインデックス化モジュール１２５と、分散キー値ストア１１３から情報を読み出すために利用される記憶インターフェース１２７と、を備えてもよい。
【００２３】
ある実施形態において、分散インデックスエンジン１１５は、コンピューティングクラウドを利用して実装されてもよい。ここで分散インデックスエンジン１１５は、異なる地理的場所に対応する、インデックスエンジン１２０を備えてもよい。インデックスエンジン１２０は、例えば、ソーシャルサービスプラットフォーム１０３の外側のクライアントやサービスと相互接続し得る、ソーシャルＡＰＩ １１１と通信するために使用される、ＡＰＩ １２１を備えてもよい。ある状況下において、ＡＰＩ １２１は、ソーシャルＡＰＩ １１１を使用することなく、クライアントおよびサービスと直接通信してもよく、またはＡＰＩ １２１は、ソーシャルＡＰＩ １１１を備えてもよい。
【００２４】
ある状況において、記憶インターフェース１２７は、分散キー値ストア１１３に作成および記憶されたプロファイルをインデックス化するための要求を受信するように、分散キー値ストア１１３と相互作用してもよい。図４のプロセスにおいてさらに詳述されるように、インデックスエンジン１２０がプロファイルをインデックス化する要求を受信する時、インデックスエンジン１２０のインデックス化モジュール１２５は、プロファイルに対する１つ以上のデータ構造をインスタンス化し、メモリ１２３において、関連付けられたインデックスに、データ構造インスタンスを追加してもよい。先で言及されるように、データ構造は、アクセス制御フィールド、およびデータフィールドを備えてもよい。ある実施形態において、データ構造がインデックスに追加されると、インスタンス化されたデータ構造は、インデックスの複製を更新するために、他のインデックスエンジンへと送信される。２つ以上のインデックスが存在するため、特定のインデックスエンジン１２０ａがオーバーロードまたは故障する場合、ロードは、他のインデックスエンジン（例えば、インデックスエンジン１２０ｎ）に分散されてもよい。
【００２５】
さらに、記憶インターフェース１２７は、１つ以上のインターフェースを使用して、分散キー値ストア１１３と通信してもよい。例えば、記憶インターフェース１２７は、特定のプロファイルを使用して、インデックスを生成するために、新たなプロファイルに関するデータを受信し、別のインターフェースを利用して、記憶された情報を読み出してもよい。例えば、記憶された情報を読み出すために、記憶インターフェース１２７は、ｇｅｔ、ｐｕｔ、ｄｅｌｅｔｅ、およびｓｃａｎコマンドを利用する、単純なインターフェースを使用してもよい。代替として、または加えて、記憶インターフェース１２７は、分散キー値ストア１１３と通信するように、別のＡＰＩを利用してもよく、これは、通信を単純なインターフェースに変換してもよい。
【００２６】
図１Ｃは、一実施形態に従う、分散キー値ストア１１３の構成要素の図である。例として、キー値ストア１１３は、インデックス化、記憶、読出、および検索の対象となるデータの記憶手段を提供するための、１つ以上の構成要素を含む。このため、新たなプロファイルは、分散キー値ストア１１３に記憶されてもよい。これらの構成要素の機能は、１つ以上の構成要素において組み合わされていてもよく、または同じような機能性を有する他の構成要素によって遂行されてもよい。他の形態のデータベースが、分散キー値ストア１１３の代わりに、またはそれに加えて、利用されてもよい。本実施形態において、分散キー値ストア１１３は、サーバ１４３、およびデータベース１４５ａ〜１４５ｎと通信するために使用されうるクライアントライブラリ１４１を含む。
【００２７】
インデックスエンジン１２０ａ〜１２０ｎの記憶インターフェース１２７、およびソーシャルＡＰＩ １１１は、クライアントライブラリ１４１を使用して、分散キー値ストア１１３と通信してもよい。ある実施形態において、インデックスエンジン１２０ａ〜１２０ｎ、およびソーシャルＡＰＩ １１１は、分散キー値ストア１１３からデータベースサービスを受信するクライアントと見なされてもよい。クライアントライブラリ１４１は、データベース１４５からコンテンツを読み出すために、どのサーバ１４３と通信するかを判断することができる、インターフェースを備えてもよい。ある実施形態において、データベース１４５は、キー、およびキーを使用して記憶を可能にする値機構を利用して記憶される。各データベースの一部分（例えば、部分Ａ〜Ｉ）は、キーにリンクすることができる。一実施形態において、キーは、キーがどの部分にリンクされるかを判断するように、ハッシュ化される。キーは、例えば、リング法（ｒｉｎｇ  ｍｅｔｈｏｄ）を使用してハッシュ化されてもよい。リングを使用して、各キーおよび部分は、一次場所（例えば、数ｋにハッシュ化される識別子を有するキーに基づいて）、ならびに１つ以上のバックアップ場所にハッシュ化されてもよい。バックアップ場所は、ハッシュに関連付けられる次のサーバまたはホストに関連付けられる場所であってもよい。クライアントライブラリ１４１は、どのサーバ１４３が、キーハッシュを使用して、情報を読み取るおよび書き込むかを判断する。クライアントライブラリ１４１およびサーバ１４３は、各々、どの部分がどのサーバ１４３に属するかを含む、ルックアップテーブルを備えてもよい。
【００２８】
ある実施形態において、部分（例えば、部分Ａ１４７ａ〜１４７ｃ）は、複数のサーバを使用して、複数のデータベース１４５上に記憶されてもよい。ある実装において、冗長性、フェイルオーバのために、および待ち時間を低減するために、部分は、ｎ個（例えば、複製＝３）のサーバ１４３およびデータベース１４５上に複製されてもよい。さらに、その部分は、クライアントライブラリ１４１によって、同時に書き込みおよび読み取られてもよい。データベース１４５から読み取る時、クライアントライブラリは、いずれかの一貫性問題（例えば、部分１４７ａが部分１４７ｂと一致しない）があるかどうかを判断してもよい。さらに、ある実施形態において、例示的な記憶スキームは、書き込みまたは読み取りが遂行される時、少なくともある数（例えば、必要とされる書き込み＝２、必要とされる読み取り＝２等）の部分が、書き込みまたは読み取りに成功することが必要であることを必要とし得る。これは、冗長性およびクオラムの一貫性を可能にする。データベース１４５ａが故障する、またはそうでなければ不能となる場合、データベース１４５ａに関連付けられる部分１４７ａは、複製された部分１４７ｂ、１４７ｃを有するサーバ１４３によって、それが含むべきコンテンツで後で更新されてもよい。
【００２９】
ソーシャルＡＰＩ １１１は、新たなプロファイルが、分散キー値ストア１１３に記憶されることを必要とし得る。新たなプロファイルは、新たなプロファイルに関連付けられるアカウント識別子に基づいて、キーを割り当てられてもよい。次いで、キーは、新たなプロファイルを格納するための部分（例えば、部分Ａ１４７）を判断するように、ハッシュ化されてもよい。次に、プロファイルは、一次データベース、ならびにバックアップデータベースに記憶される。プロファイルは、キーに関連付けられる値と見なされてもよい。後でプロファイルを読み出すために、キーのハッシュを使用して、その部分に関連付けられるサーバからプロファイルを要求してもよい。次いで、キーを利用して、プロファイルに対する部分を検索してもよい。プロファイルが分散キー値ストア１１３に記憶されると、クライアントライブラリ１４１は、プロファイルがインデックスに追加されることを、インデックスエンジン１２０に通知してもよい。
【００３０】
インデックスが作成され、プロファイルが分散キー値ストア１１３に記憶されると、ソーシャルＡＰＩ １１１は、ＵＥ１０１やサービスからクエリを受信することができるが、このクエリは、インデックスエンジン１２０に、ユーザ識別子および要求されたコンテンツに基づいて、情報を検索および読出させるためのものである。インデックスエンジン１２０は、クエリに関連付けられるインデックスを読み出し、アクセス制御フィールドにおいてユーザ識別子に対するインデックスを検索することができる。検索は、テキストベースの検索であってもよい。さらに、要求されたコンテンツは、クエリが関心対象とするプロファイルの１つ以上のプロファイル識別子、またはクエリが関心対象とするコンテンツ（例えば、基本プロファイル情報）のタイプを指定してもよい。分散インデックスエンジン１１５は、要求されたコンテンツをソーシャルＡＰＩ １１１に返す。コンテンツを読み出すためのプロセスを、図２および５のプロセスにおいてさらに詳述する。
【００３１】
図２は、一実施形態に従う、スケーラブルなデータ構造２００の使用状況を例示する図である。データ構造は、アクセス制御フィールド２０１や、プロファイル識別子（プロファイルＩＤ）２０３、基本プロファイル２０５、拡張プロファイル２０７ａ〜２０７ｎ、および連絡先情報２０９といったデータフィールドとを備えてもよい。先に述べたように、アクセス制御フィールドは、１つ以上のユーザ識別子（例えば、ユーザ識別子１〜５、ユニバーサルユーザ識別子＊等）に関連付けられてもよい。ある実施形態において、データ構造は、アクセス制御フィールド２０１におけるエンティティ識別子（例えば、ユーザ識別子）が、一度だけ、プロファイルＩＤ２０３に関連付けられることを可能にする。ある状況において、プロファイルＩＤ２０３は、コンテンツを、ユーザまたはエンティティプロファイルに関連付けるために使用することができる、グローバル一意識別子である。加えて、ユーザ識別子は、クエリを、プロファイルを有する場合がある、または有しない場合がある、特定のユーザに関連付ける、識別子であってもよい。アクセス制御フィールドは、プロファイルに関連付けられるユーザに関して、どのユーザまたはエンティティ識別子が、友人、家族、同僚、知人、一方向フォロワ、被雇用者、メンバ等といった、連絡先または接続と見なされるかに基づいてもよい。ユーザは、ソーシャルネットワーキングアプリケーション１０７、およびソーシャルＡＰＩ １１１を介して、これらの接続を入力してもよい。
【００３２】
複数のレベルのアクセスを、アクセス制御フィールド２０１を使用して提供することができる。例えば、プロファイルＩＤ１は、アクセス制御権に基づいて、異なるユーザ識別子には異なるコンテンツアクセスを可能にしてもよい。本実施例において、ユーザ識別子２、３、および４は、プロファイルＩＤ１の基本プロファイル２０５、拡張プロファイル２０７ａおよび２０７ｎ、ならびに連絡先情報２０９へのアクセスを許可される。このアクセスは、グループのステータス（例えば、各々が友人と見なされる）により、提供されてもよい。しかしながら、ユーザ識別子５は、ユーザ識別子５が知人と見なされているため、基本プロファイル２０５および第１の拡張プロファイル２０７へのアクセスを有するのみであり得る。ゲストユーザを含む、全てのユーザが、プロファイルＩＤ１の基本プロファイル２０５へのアクセスを有してもよい。プロファイルＩＤ２０３に関連付けられるユーザまたはエンティティは、プロファイルを作成しつつ、またはプロファイルを更新することによって、これらのアクセス制御を判断してもよい。プロファイルＩＤ１の場合、インデックスエンジン１２０は、プロファイルＩＤ１をインデックスに追加する時、３つのデータ構造２１１、２１３、２１５（列として図示）を生成する。データ構造２１１、２１３、２１５の各々は、"DATA"とマークされたフィールドにデータを有してもよい。ある実施形態において、このデータは検索可能である。さらに、プロファイルＩＤ２は、それに関連付けられる２つのデータ構造２１７、２１９を有してもよく、プロファイルＩＤ３は、それに関連付けられる１つのデータ構造２２１のみを有してもよく、各々が、ある情報へのアクセスを可能にする、アクセス制御フィールドを有する。一状況下において、プロファイルＩＤ３に対するデータ構造２２１は、ゲストユーザに提供することができるいかなる情報も含まず、ユーザ識別子４への基本プロファイルデータへのアクセスのみを含む。さらに、（列によって表される）各データ構造は、アクセス制御２０１フィールドを使用してインデックス化されてもよく、それによって、（例えばエンティティ識別子またはユーザ識別子を介して）どのエンティティが、特定のデータ構造列へのアクセスを有するかを判断してもよい。
【００３３】
一状況下において、ソーシャルＡＰＩ １１１は、インデックス上で遂行されるべきクエリを要求するユーザまたはサービスからの要求を受信する。ソーシャルＡＰＩ １１１は、クエリに関連付けられるべきユーザ識別子を決定するべく、ユーザまたはサービスで認証してもよい。ある実施形態において、サービスまたはユーザは、ゲストとしてログインし、ゲストステータスを受信する。他の実施形態において、ユーザ名およびパスワードは、ユーザ識別子にマップされる。ユーザの認証はまた、別のサービスにパススルーされてもよい。ユーザまたはサービスはまた、クエリにおいて、ユーザまたはサービスが読み出したいコンテンツを指定してもよい。
【００３４】
一実施形態において、ユーザは、ユーザが読み出すことができる全ての情報に対して、検索クエリを開始してもよい。ソーシャルＡＰＩ １１１は、クエリに対するユーザ識別子が、ユーザ識別子４であることを判断する。クエリは、分散インデックスエンジン１１５に渡され、データ構造２００のインデックス上で検索を開始する。分散インデックスエンジン１１５は、ユーザ識別子４が、プロファイルＩＤ１の基本プロファイル２０５、第１の拡張プロファイル２０７ａ、第２の拡張プロファイル２０７ｎ、および連絡先情報２０９、ならびにプロファイルＩＤ２の基本プロファイル２０５、第１の拡張プロファイル２０７ａ、および連絡先情報２０９、ならびにプロファイルＩＤ３の基本プロファイル２０５へのアクセスを有することを決定する。次いで、このデータを、ユーザへの伝送のために、値として、ソーシャルＡＰＩ １１１に返すことができる。別の状況において、クエリに対するユーザ識別子は、ユーザ識別子５である。分散インデックスエンジン１１５は、データ構造２１３および２１９に格納される情報を返す。分散インデックスエンジン１１５がこのデータを帰す理由は、ユーザ識別子が、せいぜいプロファイルＩＤ１のデータ構造２１３へのアクセスと、プロファイルＩＤ２への少なくともゲストレベルアクセス（全ての要求元に与えられるアクセス）とを有するのみで、プロファイルＩＤ３へのアクセスを有しないからであってもよい。実施形態によっては、クエリを形成するユーザまたはサービスは、クエリが、単純に誰でも持てるアクセス権よりも、ユーザがより高いレベルのアクセス権（例えば、友人アクセス、知人アクセス、同僚アクセス等）を有するプロファイルのみを検索することを要求してもよい。
【００３５】
ある状況において、要求されたコンテンツは、キーワードといった、１つ以上の検索用語を有していてもよい。このような状況において、プロファイルＩＤ２０３、基本プロファイル２０５、拡張プロファイル２０７、および連絡先情報２０９は、素早く且つ容易に検索可能である。分散インデックスエンジン１１５は、検索用語に対して、コンテンツフィールド２０３、２０５、２０７、２０９を検索してもよい。代替として、または加えて、コンテンツフィールド２０３、２０５、２０７、２０９に関連付けられるデータは、分散キー値ストア１１３、または他の検索不可能なコンテンツへのポインタ（例えば、キー）を備えてもよい。一部の実施形態において、クエリがアクセスを有するプロファイル情報のみが、検索される。これは、プロファイル情報の読出において、低い待ち時間を可能にする。さらに、この方法は、より多い数の検索および膨大な量のインデックスコンテンツが、検索に含まれることを可能にする。
【００３６】
図３は、一実施形態に従う、分散キー値ストアにおいて利用され得る、例示的なデータ構造の図である。さらに、データ構造３００の部分は、インデックスで利用され得る。データ構造３００は、プロファイルＩＤまたはアカウントＩＤに関連付けることができるキー３０１を指定してもよい。このキー３０１は、分散キー値ストア１１３からプロファイルを読み出すために使用することができる。さらに、キー３０１は、基本プロファイル３０５、第１の拡張プロファイル３０７、および他のコンテンツフィールドを含む、値３０３に関連付けられる。さらに加えて、値は、インデックスに含まれない場合がある情報を備えてもよい。例えば、第３の拡張プロファイル３０９は、検索することができず、したがって、インデックスに記憶される必要がない、画図データ３１１を備えてもよい。そのようなものとして、インデックス内の第３の拡張プロファイル３０９データは、コンテンツが分散キー値ストア１１３において利用可能であることを、分散インデックスエンジン１１５に通知する、フラグまたは他のデータを備えてもよい。
【００３７】
図４は、一実施形態に従う、プロファイルを作成およびインデックス化するためのプロセスのフローチャートである。一実施形態において、ソーシャルＡＰＩ １１１、および分散インデックスエンジン１１５は、プロセス４００を遂行し、例えば、図７に示されるようなプロセッサおよびメモリを含むチップセットにおいて実装される。そのようなものとして、ソーシャルＡＰＩ １１１および／または分散インデックスエンジン１１５は、プロセス４００、および本明細書において説明される他のプロセスのステップを遂行するための手段を提供してもよい。ステップ４０１において、ソーシャルＡＰＩ １１１は、クライアント（例えば、サービス、ユーザ、エンティティ等）から、プロファイルを作成するための要求を受信する。次いで、ソーシャルＡＰＩ １１１は、認証証明を要求することによって、ユーザが、プロファイルをアカウントに関連付けるためのユーザの認証を提供することを要求してもよい。次に、ユーザが証明を送信してもよく、ソーシャルＡＰＩ １１１が証明を受信してもよく、ソーシャルＡＰＩ １１１がプロファイルのユーザ作成者の認証を実証してもよい（ステップ４０３）。
【００３８】
次いで、ステップ４０５において、ソーシャルＡＰＩは、アクセス制御フィールド、ユーザ識別子、および他のデータフィールドを備えてもよい、プロファイルを作成してもよい。ソーシャルＡＰＩ １１１は、何の情報をプロファイルに記憶するかに関する追加情報に対して、ユーザにクエリを行ってもよい。ユーザは、データフィールド、および他のカスタマイズ可能なデータを、プロファイルに入力してもよい。クエリの複数の繰り返しが、プロファイルを完成させるために必要であり得る。次いで、ステップ４０７において、図１Ｂおよび１Ｃの説明において詳述されるように、ソーシャルＡＰＩ １１１は、分散キー値ストア１１３にプロファイルを記憶してもよい。
【００３９】
プロファイルが記憶されると、ソーシャルＡＰＩ １１１は、少なくとも部分的に、分散インデックスエンジン１１５に、インデックス構造中にプロファイルをインデックス化させてもよい（ステップ４０９）。分散インデックスエンジン１１５は、プロファイルをインデックスに追加してもよい。プロファイルは、１つ以上のユーザ入力に基づいて、プロファイルの関連（例えば、場所、関連付けられたサービス、連絡先接続等）に基づいて、または他のデータに基づいて、インデックスに関連付けることができる。次いで、プロファイルに関連付けられる１つ以上のフィールドが、ユーザによって設定され得るアクセス制御特性に基づいて、インデックス化される。アクセス制御フィールド２０１は、あるユーザが何の情報を検索および／または読み出すことができるかを区別するために利用されてもよい。新たなデータ構造が、各区別されたグループに対してインスタンス化されてもよい。ある実施形態において、ユーザは、（例えばプロファイルＩＤ２０３に基づいて、）所与のプロファイルに対するインスタンス化されたデータ構造のうちの多くとも１つに配置される。加えて、インスタンス化されたデータ構造（例えば、データ構造２１５）は、一般公衆（例えば、ゲスト、全てのユーザ等）にアクセス可能であってもよい。
【００４０】
さらに、ステップ４１１において、プロファイルおよびインデックス構造を、更新することができる。ステップ４０１から４０７において詳述されたようにしてユーザプロファイルを作成する代わりに、ユーザは、ユーザプロファイルを認証および更新することができる。プロファイルが更新されると、分散インデックスエンジン１１５は、変更されたプロファイルに基づいて、インデックスの更新を開始させられてもよい。プロファイルへの変更は、アクセス制御リストを介して、あるエンティティへのアクセスを追加するもしくは除去すること、コンテンツを追加もしくは削除すること、あるアクセス制御フィールドグループにおいて、ユーザに利用可能なコンテンツを修正すること、インスタンス化されたデータ構造を追加もしくは削除すること、インスタンス化されたデータ構造を組み合わせること、これらの組み合わせ、または似たような処理を含んでもよい。
【００４１】
図５は、一実施形態に従うプロセスのフローチャートであって、プロファイルを検索するために、スケーラブルなデータ構造を利用するためのプロセスのフローチャートである。一実施形態において、分散インデックスエンジン１１５は、例えば、図７に示されるようなプロセッサおよびメモリを含むチップセットによって実装され、プロセス５００を遂行する。ここで分散インデックスエンジン１１５は、プロセス５００に関連付けられるステップを実装するための手段であってもよい。ステップ５０１において、分散インデックスエンジン１１５は、エンティティ識別子および要求されるコンテンツを指定するクエリを受信する。ユーザは、要求されたコンテンツを入力することによって、キーワード検索を開始し、ユーザ識別子を検索クエリの中に含めてもよい。先に説明されるように、クエリは、ソーシャルＡＰＩ １１１を介して、ＵＥ１０１またはサービスから受信されてもよい。エンティティ識別子（例えばユーザ識別子）は、要求を行うユーザを指定してもよく、認証プロセスを通じて、ソーシャルＡＰＩ １１１を介して得られてもよい。認証プロセスは、ユーザ名およびパスワード、トークン、または他の認証機構を、ユーザ識別子に関連付けることを含んでもよい。要求されたコンテンツは、１つ以上のフィールド名（例えば、アクセス制御２０１、プロファイルＩＤ２０３、基本プロファイル２０５、拡張プロファイル２０７ａ〜２０７ｎ、連絡先情報２０９等）を含んでもよく、またはフィールドに存在し得る１つ以上の検索用語を含んでもよい。
【００４２】
次いで、ステップ５０３において、分散インデックスエンジン１１５は、データ構造のプロファイルインデックスのユーザ識別子に基づく検索を少なくとも部分的に生じさせる。このデータ構造は、各々、検索結果を与えるべく、アクセス制御フィールド２０１に関連付けられるプロファイルフィールドを少なくとも指定する。ここで分散インデックスエンジン１１５は、ステップ５０３を実装するための手段を提供してもよい。データ構造はさらに、プロファイルフィールド（例えば、プロファイルＩＤ２０３、基本プロファイル２０５、拡張プロファイル２０７ａ〜２０７ｎ、連絡先情報２０９等）、およびアクセス制御フィールド２０１を備えてもよい。検索は、ユーザ識別子を、インデックスのアクセス制御フィールド２０１に比較することによって、ユーザ識別子に対する、要求されたコンテンツへのアクセス権を示すこと（ステップ５０５）によって開始してもよい。ここで分散インデックスエンジン１１５は、ユーザ識別子に対する、要求されたコンテンツへのアクセス権を示すための手段を提供する。さらに、要求されたコンテンツは、キーワードといった検索用語を備えてもよい。検索用語（または２つ以上の用語）に対するテキスト検索は、ユーザ識別子がアクセスを有する、データ構造のいずれかのプロファイルフィールド上で行われてもよい。このテキスト検索は、アクセス制御フィールドに基づいて、ユーザに対して検索するために、逆インデックスまたは別のインデックス（例えば、ハッシュもしくはＢツリー）を開発および記憶することを介して、実装されてもよい。逆インデックスアクセス制御フィールドは、ゲストまたは「＊」識別子を備えてもよい、１つ以上のユーザ識別子と関連付けられる「単語」を備えてもよい。逆インデックスは、ユーザ識別子がアクセスを有するデータ列を迅速に見つけることができる。さらに、これは、ユーザがテキスト検索へのアクセスも有し、かつその一部でもある、検索結果をもたらし得る。このように、テキスト検索は、通常の検索の副効果として、アクセス制御を実装するために使用される。
【００４３】
さらに、ステップ５０７において、要求されたコンテンツは、アクセス権に基づいて、読み出すことができる。先に述べられるように、分散インデックスエンジン１１５は、ステップ５０７を実装するための手段を提供することができる。ある実施形態において、要求されたコンテンツは、プロファイルインデックスにおいてインデックス化されていない情報が要求されていることを示してもよい。データ構造は、関連付けられたコンテンツはあるが、そのコンテンツは完全なプロファイルに記憶されていることを示す、データ（例えば、フラグまたはポインタ）を提供してもよい。ここで、要求されたコンテンツのプロファイルＩＤ２０３をキー識別子として使用してプロファイルに対する要求を生成し、分散キー値ストア１１３への要求の伝送の少なくとも一部を生じさせることにより、コンテンツが分散キー値ストア１１３から読み出される。そしてプロファイルは、受信され、転送されてもよい。他の実施形態において、要求されたコンテンツは、プロファイルフィールドのうちの１つ以上であってもよく、これは、インデックスから直接読み出されてもよい。ある状況において、要求されたコンテンツは、インデックスから、またはプロファイルからのデータ構造３００であってもよい。次いで、ステップ５０９にあるように、要求されたコンテンツは、少なくとも部分的に、ソーシャルＡＰＩ １１１を介して、要求元に伝送させられる。
【００４４】
上記の手法および実施例は、有利にスケーラブルなデータ構造の使用を詳述する。データ構造は、加えて、上記のインデックス化手法を利用して、低い待ち時間検索を提供し得る。これは、データ構造のインデックスにおいて、テキスト検索可能なプロファイルフィールドと併せて、アクセス制御フィールドを記憶することを介して実装されうる。さらに、インデックスは、データ構造に関連付けられる一意プロファイルＩＤを単に使用して、分散データストア（例えば、図１のストア１１３）からコンテンツを迅速に読み出すことによって、より大きなデータコンテンツを含みうるように拡張されてもよい。さらに、データ構造は、分散アーキテクチャにおいて使用されてもよいため、データ構造を使用して記憶される情報の使用の利用可能性は、極めて利用可能である。データを含むより多くの数の部分が、いくつかの物理的機械に拡散しているため、この機能性が実装され得る。
【００４５】
スケーラブルなデータ構造を利用するための本明細書において説明されるプロセスは、ソフトウェア、ハードウェア（例えば、汎用プロセッサ、デジタル信号処理（ＤＳＰ）チップ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）等）、ファームウェア、またはこれらの組み合わせを介して、有利に実装され得る。説明された機能を遂行するためのかかる例示的なハードウェアを、以下で詳述する。
【００４６】
図６は、本発明の実施形態が実装され得る、コンピュータシステム６００を例解する。コンピュータシステム６００は、特定のデバイスまたは機器に関して描写されているが、図６内の他のデバイスまたは機器（例えば、ネットワーク要素、サーバ等）は、システム６００の例解されたハードウェアおよび構成要素によって展開することができる。コンピュータシステム６００は、本明細書において説明されるように、スケーラブルなデータ構造を利用するように、（例えば、コンピュータプログラムコードまたは命令によって）プログラムされ、コンピュータシステム６００の他の内部構成要素と外部構成要素との間で情報を渡すために、バス６１０といった通信機構を含む。情報（データとも呼ばれる）は、典型的には、電圧であるが、他の実施形態において、磁気、電磁、気圧、化学、生物学、分子、原子、素粒子、および量子相互作用といった、現象を含む、測定可能な現象の物理表現として表される。例えば、ＮおよびＳの磁場や、ゼロおよび非ゼロ電圧は、バイナリ桁（ビット）の２つの状態（０、１）を表す。他の現象は、より高い基数の桁を示し得る。測定前の複数の同時の量子状態の重ね合わせは、量子ビット（キュービット）を表す。１つ以上の桁のシーケンスは、文字に対する数またはコードを表すために使用される、デジタルデータを構成する。一部の実施形態において、アナログデータと呼ばれる情報は、特定の範囲内の測定可能な値の準連続体によって表される。コンピュータシステム６００、またはその一部分は、スケーラブルなデータ構造を利用する１つ以上のステップを遂行するための手段を構成する。
【００４７】
バス６１０は、情報が、バス６１０に連結されるデバイス間で迅速に転送されるように、情報の１つ以上の平行導体を含む。情報を処理するための１つ以上のプロセッサ６０２は、バス６１０と連結される。
【００４８】
プロセッサ６０２は、スケーラブルなデータ構造を利用することに関連するコンピュータプログラムコードの指示に従って、情報に対して一連の演算を遂行する。コンピュータプログラムコードは、指定された機能を遂行するように、プロセッサおよび／またはコンピュータシステムの動作に対する命令を提供する、一組の命令またはステートメントである。例えば、コードは、プロセッサのネイティブ命令セットにコンパイルされる、コンピュータプログラミング言語で書かれてもよい。コードはまた、ネイティブ命令セット（例えば、機械言語）を使用して、直接書かれてもよい。一組の演算は、バス６１０から情報を取り入れることと、情報をバス６１０上に配置することとを含む。一組の演算はまた、典型的に、２つ以上の情報単位を比較することと、情報単位の位置をシフトすることと、例えば、加算もしくは乗算、またはＯＲ、排他的ＯＲ（ＸＯＲ）、およびＡＮＤのような論理演算によって、２つ以上の情報単位を組み合わせることと、を含む。プロセッサによって遂行することができる一組の演算の各演算は、１つ以上の桁の演算コードといった、命令と呼ばれる情報によって、プロセッサに対して表される。演算コードのシーケンスといった、プロセッサ６０２によって実行されるべき演算のシーケンスは、コンピュータシステム命令、または単にコンピュータ命令とも呼ばれる、プロセッサ命令を構成する。プロセッサは、単独で、または組み合わせて、とりわけ機械、電気、磁気、光学、化学、または量子構成要素として実装されてもよい。
【００４９】
コンピュータシステム６００はまた、バス６１０に連結されるメモリ６０４を含む。ランダムアクセスメモリ（ＲＡＭ）または他の動的記憶デバイスといった、メモリ６０４は、スケーラブルなデータ構造を利用するためのプロセッサ命令を含む、情報を記憶する。動的メモリは、その中に記憶される情報が、コンピュータシステム６００によって変更されることを可能にする。ＲＡＭは、メモリアドレスと呼ばれる場所に記憶される情報単位が、近隣のアドレスの情報とは独立して、記憶され、読み出されることを可能にする。メモリ６０４はまた、プロセッサ命令の実行中に、一時的な値を記憶するように、プロセッサ６０２によって使用される。コンピュータシステム６００はまた、コンピュータシステム６００によって変更されない、命令を含む、静的情報を記憶するために、バス６１０に接続される、読み取り専用メモリ（ＲＯＭ）６０６または他の静的記憶デバイスを含む。一部のメモリは、電力を喪失した時に、その中に記憶される情報を喪失する、揮発性記憶装置から成る。コンピュータシステム６００がオフにされるか、またはそうでなければ電力を喪失する時でさえ持続する命令を含む、情報を記憶するための、磁気ディスク、光学ディスク、またはフラッシュカードといった、非揮発性（持続性）記憶デバイス６０８もまた、バス６１０に接続される。
【００５０】
スケーラブルなデータ構造を利用するための命令を含む情報は、外部入力デバイス６１２からバス６１０に提供され、プロセッサにより使用される。外部入力デバイス６１２は、ユーザによって操作される英数字キーやセンサを備えるキーボードのようなものであることができる。センサは、その近傍の条件を検出し、それらの検出を、コンピュータシステム６００において、情報を表すために使用される、測定可能な現象と互換性のある、物理表現に変換する。主にヒトと相互作用するために使用される、バス６１０に接続される他の外部デバイスとしては、テキストもしくは画像を提示するための陰極線管（ＣＲＴ）もしくは液晶ディスプレイ（ＬＣＤ）、またはプラズマ画面もしくはプリンタといった、表示デバイス６１４、およびディスプレイ６１４上に提示される小さなカーソル画像の位置を制御し、ディスプレイ６１４上に提示されるグラフィック要素に関連付けられるコマンドを発行するための、マウスもしくはトラックボールもしくはカーソル方向キー、または運動センサといった、ポインティングデバイス６１６が挙げられる。一部の実施形態において、例えば、コンピュータシステム６００が、ヒトの入力を伴わずに、自動で、全ての機能を遂行する実施形態において、外部入力デバイス６１２、表示デバイス６１４、およびポインティングデバイス６１６のうちの１つ以上は、省略される。
【００５１】
例解される実施形態において、特定用途向け集積回路（ＡＳＩＣ）６２０といった特殊用途ハードウェアが、バス６１０に連結される。特殊用途ハードウェアは、特殊用途に対して十分に迅速に、プロセッサ６０２によって遂行されない動作を遂行するように構成される。特定用途向けＩＣの例としては、ディスプレイ６１４に対して画像を生成するためのグラフィックアクセラレータカード、ネットワーク上で送信されるメッセージを暗号化および復号するための暗号ボード、音声認識、ならびにハードウェアにおいてより効率的に実装される、一部の複雑な動作シーケンスを繰り返して遂行する、ロボットアームや医療用走査機器といった、特別な外部デバイスへのインターフェースが挙げられる。
【００５２】
コンピュータシステム６００はまた、バス６１０に連結される通信インターフェース６７０の１つ以上のインスタンスを含む。通信インターフェース６７０は、プリンタ、スキャナ、および外部ディスクといった、それら自身のプロセッサとともに動作する多様な外部デバイスに、１方向または双方向通信接続を提供する。この接続は、一般的に、ネットワークリンク６８０との間で確立される。ネットワークリンク６８０は、自身でプロセッサを有する多様な外部デバイスが接続される、ローカルネットワーク６７８に接続される。例えば、通信インターフェース６７０は、パーソナルコンピュータ上のパラレルポートもしくはシリアルポート、またはユニバーサルシリアルバス（ＵＳＢ）ポートであってもよい。一部の実施形態において、通信インターフェース６７０は、総合サービスデジタルネットワーク（ＩＳＤＮ）カードもしくはデジタル加入者回線（ＤＳＬ）カード、または対応するタイプの電話線に情報通信接続を提供する電話モデムである。一部の実施形態において、通信インターフェース６７０は、バス６１０上の信号を、同軸ケーブル上の通信接続のための信号、または光ファイバケーブル上の通信接続のための光学信号に変換する、ケーブルモデムである。別の実施例として、通信インターフェース６７０は、イーサネットといった互換性のあるＬＡＮに、データ通信接続を提供するためのローカルエリアネットワーク（ＬＡＮ）カードであってもよい。ワイヤレスリンクもまた、実装されてもよい。ワイヤレスリンクに関して、通信インターフェース６７０は、デジタルデータといった情報流を担持する、赤外線および光学信号を含む、電気、音響、または電磁信号を送信する、または受信する、または送信および受信の両方をする。例えば、携帯電話のような移動電話といった、ワイヤレスハンドヘルドデバイスにおいて、通信インターフェース６７０は、無線送受信器と呼ばれる、無線帯域電磁伝送器および受信器を含む。ある実施形態において、通信インターフェース６７０は、ＵＥ１０１に対する、通信ネットワーク１０５への接続を可能にする。
【００５３】
「コンピュータ可読媒体」という用語は、実行のための命令を含む、プロセッサ６０２への情報の提供に関与する、任意の媒体を指すように、本明細書において使用される。かかる媒体は、非揮発性媒体、揮発性媒体、および伝送媒体を含むが、これらに限定されない、多くの形態を採ってもよい。非揮発性媒体としては、例えば、記憶デバイス６０８といった光学もしくは磁気ディスクが挙げられる。揮発性媒体としては、例えば、動的メモリ６０４が挙げられる。伝送媒体としては、例えば、同軸ケーブル、銅ワイヤ、光ファイバケーブル、および無線、光学、および赤外線波を含む、音波および電磁波といった、ワイヤもしくはケーブルを伴わずに空間を通って移動する搬送波が挙げられる。信号は、伝送媒体を通って伝送される、振幅、周波数、位相、極性、または他の物理特性における、人為的な過渡変動を含む。一般的な形態のコンピュータ可読媒体としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、ＣＤ−ＲＯＭ、ＣＤＲＷ、ＤＶＤ、任意の他の光学媒体、パンチカード、紙テープ、光学マークシート、孔もしくは他の光学的に認識可能な標識のパターンを有する任意の他の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、任意の他のメモリチップもしくはカートリッジ、搬送波、またはコンピュータが読み取ることができる任意の他の媒体が挙げられる。コンピュータ可読記憶媒体という用語は、伝送媒体を除く、任意のコンピュータ可読媒体を指すように、本明細書において使用される。
【００５４】
１つ以上の有形媒体に符号化された論理は、コンピュータ可読記憶媒体、およびＡＳＩＣ６２０といった特殊用途ハードウェア上のプロセッサ命令のうちの一方または両方を含む。
【００５５】
ネットワークリンク６７８は、典型的に、情報を使用または処理する他のデバイスに、１つ以上のネットワークを通って、伝送媒体を使用して、情報通信を提供する。例えば、ネットワークリンク６７８は、ローカルネットワーク６８０を通って、ホストコンピュータ６８２へ、またはインターネットサービスプロバイダ（ＩＳＰ）によって動作する機器６８４へ、接続を提供してもよい。ＩＳＰ機器６８４は同様に、現在では一般的にインターネット６９０と称されるネットワークの公的な、グローバルなパケット交換通信ネットワークを通って、データ通信サービスを提供する。
【００５６】
インターネットに接続される、サーバホスト６９２と呼ばれるコンピュータは、インターネット上で受信される情報に応答して、サービスを提供するプロセスをホストする。例えば、サーバホスト６９２は、ディスプレイ６１４での提示のためにビデオデータを表す情報を提供するプロセスをホストする。システム６００の構成要素は、他のコンピュータシステム、例えば、ホスト６８２およびサーバ６９２内で、種々の構成において展開することができる。
【００５７】
本発明の少なくとも一部の実施形態は、本明細書において説明される技術のうちの一部または全てを実装するための、コンピュータシステム６００の使用に関連する。本発明の一実施形態によると、それらの技術は、メモリ６０４に格納される、１つ以上のプロセッサ命令の１つ以上のシーケンスを実行する、プロセッサ６０２に応答して、コンピュータシステム６００によって遂行される。コンピュータ命令、ソフトウェア、およびプログラムコードとも呼ばれる、かかる命令は、記憶デバイス６０８またはネットワークリンク６７８といった、別のコンピュータ可読媒体から、メモリ６０４に読み込まれてもよい。メモリ６０４に格納される命令シーケンスの実行は、プロセッサ６０２に、本明細書において説明される方法ステップのうちの１つ以上を遂行させる。代替的な実施形態において、ＡＳＩＣ６２０といったハードウェアは、本発明を実装するように、ソフトウェアの代わりに、またはそれと組み合わせて、使用されてもよい。このため、本発明の実施形態は、本明細書において別途明記されない限り、ハードウェアおよびソフトウェアの任意の特定の組み合わせに限定されない。
【００５８】
通信インターフェース６７０を通って、ネットワークリンク６７８および他のネットワーク上で伝送される信号は、コンピュータシステム６００へ、およびコンピュータシステム６００から情報を搬送する。コンピュータシステム６００は、とりわけネットワーク６８０、６９０を通って、ネットワークリンク６７８および通信インターフェース６７０を通って、プログラムコードを含む情報を送信および受信することができる。インターネット６９０を使用する実施例において、サーバホスト６９２は、インターネット６９０、ＩＳＰ機器６８４、ローカルネットワーク６８０、および通信インターフェース６７０を通って、コンピュータ６００から送信されるメッセージによって要求される、特定のアプリケーションに対するプログラムコードを伝送する。受信されたコードは、受信される際に、プロセッサ６０２によって実行されてもよく、または、後の実行のために、メモリ６０４に、または記憶デバイス６０８もしくは他の非揮発性記憶装置、あるいは両方に記憶されてもよい。このように、コンピュータシステム６００は、搬送波上の信号の形態で、アプリケーションプログラムコードを得てもよい。
【００５９】
種々の形態のコンピュータ可読媒体は、命令もしくはデータまたは両方の１つ以上のシーケンスを、実行のためにプロセッサ６０２に搬送することに関与されてもよい。例えば、命令およびデータは、最初、ホスト６８２といったリモートコンピュータの磁気ディスク上に担持されてもよい。リモートコンピュータは、命令およびデータを、その動的メモリの中へロードし、モデムを使用して、電話線上で命令およびデータを送信する。コンピュータシステム６００にローカルなモデムは、電話線上で命令およびデータを受信し、ネットワークリンク６７８として機能する赤外線搬送波上で、命令およびデータを信号に変換するために、赤外線伝送器を使用する。通信インターフェース６７０として機能する赤外線検出器は、赤外線信号に担持される命令およびデータを受信し、命令およびデータを表す情報を、バス６１０上に配置する。バス６１０は、情報を、プロセッサ６０４が、命令を読み出し、命令とともに送信されるデータのうちの一部を使用して、命令を実行する、メモリ６０２へ搬送する。メモリ６０４に受信された命令およびデータは、実施形態によっては、プロセッサ６０８による実行の前または後のいずれかに、記憶デバイス６０２上に記憶されてもよい。
【００６０】
図７は、本発明の実施形態が実装され得る、チップセット７００を例解する。チップセット７００は、本明細書において説明されるように、スケーラブルなデータ構造を利用するようにプログラムされ、例えば、１つ以上の物理パッケージ（例えば、チップ）に組み込まれる、図６に関して説明される、プロセッサ、およびメモリ構成要素を含む。例として、物理パッケージは、物理強度、サイズの保存、および／または電気的相互作用の制限といった、１つ以上の特徴を提供するように、構造的アセンブリ（例えば、ベースボード）上の１つ以上の材料、構成要素、および／またはワイヤによる構成を含む。ある実施形態において、チップセットは、単一のチップにおいて実装することができる。チップセット７００、またはその一部分は、スケーラブルなデータ構造を利用する１つ以上のステップを遂行するための手段を構成する。
【００６１】
一実施形態において、チップセット７００は、チップセット７０１の構成要素間で情報を渡すための、バス７００といった通信機構を含む。プロセッサ７０３は、命令を実行し、例えば、メモリ７０１に記憶される情報を処理するために、バス７０５への接続を有する。プロセッサ７０３は、各コアが独立して遂行するように構成される、１つ以上の処理コアを備えてもよい。マルチコアプロセッサは、単一の物理パッケージ内での多重処理を可能にする。マルチコアプロセッサの例は、２つ、４つ、８つ以上の数の処理コアを含む。代替として、または加えて、プロセッサ７０３は、命令の独立した実行、パイプライン化、およびマルチスレッド化を可能にするように、バス７０１を介して、縦列して構成される、１つ以上のマイクロプロセッサを備えてもよい。プロセッサ７０３はまた、１つ以上のデジタル信号プロセッサ（ＤＳＰ）７０７、または１つ以上の特定用途向け集積回路（ＡＳＩＣ）７０９といった、ある処理機能およびタスクを遂行するための１つ以上の特殊化した構成要素を伴ってもよい。ＤＳＰ７０７は、典型的に、プロセッサ７０３とは独立して、リアルタイムで現実世界の信号（例えば、音）を処理するように構成される。同様に、ＡＳＩＣ７０９は、汎用プロセッサによっては容易に遂行されない、特殊化した機能を遂行するように構成することができる。本明細書において説明される本発明の機能を遂行する上で支援するための他の特殊化した構成要素としては、１つ以上のフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）（図示せず）、１つ以上のコントローラ（図示せず）、または１つ以上の他の特殊用途コンピュータチップが挙げられる。
【００６２】
プロセッサ７０３および付属構成要素は、バス７０１を介して、メモリ７０５への接続を有する。メモリ７０５は、実行される時に、スケーラブルなデータ構造を利用するように、本明細書において説明される本発明のステップを遂行する、実行可能な命令を記憶するための、動的メモリ（例えば、ＲＡＭ、磁気ディスク、書き込み可能な光学ディスク等）、および静的メモリ（例えば、ＲＯＭ、ＣＤ−ＲＯＭ等）の両方を含む。メモリ７０５はまた、本発明のステップの実行に関連付けられる、または本発明のステップによって生成される、データを記憶する。
【００６３】
図８は、一実施形態に従う、図１のシステムを動作させることができる、通信のための移動端末（例えば、ハンドセット）の例示的な構成要素の図である。一部の実施形態において、移動端末８００、またはその一部分は、スケーラブルなデータ構造を利用するプラットフォームからコンテンツを要求する、１つ以上のステップを遂行するための手段を構成する。一般的に、無線受信器は、しばしば、フロントエンドおよびバックエンドの特性に関連して定義される。受信器のフロントエンドは、無線周波数（ＲＦ）回路の全てを包含するが、バックエンドは、ベースバンド処理回路の全てを包含する。本出願において使用される際、「回路」という用語は、（１）ハードウェアのみの実装（アナログおよび／またはデジタル回路のみにおける実装といった）、ならびに（２）回路およびソフトウェア（および／もしくはファームウェア）の組み合わせ（特定の文脈に該当する場合、移動電話もしくはサーバといった装置に、種々の機能を遂行させるように協働する、デジタル信号プロセッサ（複数を含む）、ソフトウェア、およびメモリ（複数を含む）を含む、プロセッサ（複数を含む）の組み合わせといった）の両方を指す。「回路」のこの定義は、いずれの請求項も含む、本出願におけるこの用語の全ての使用に該当する。さらなる実施例として、本出願において使用される際、および特定の文脈に該当する場合、「回路」という用語はまた、単に、プロセッサ（もしくは複数のプロセッサ）、およびその（もしくはそれらの）付属ソフトウェア／またはファームウェアの実装を網羅する。「回路」という用語はまた、特定の文脈に該当する場合、例えば、移動電話におけるベースバンド集積回路もしくはアプリケーションプロセッサ集積回路、またはセルラネットワークデバイスもしくは他のネットワークデバイスにおける類似の集積回路を網羅する。
【００６４】
電話に関連する内部構成要素は、主制御ユニット（ＭＣＵ）８０３と、デジタル信号プロセッサ（ＤＳＰ）８０５と、マイクロホン利得制御ユニットおよびスピーカ利得制御ユニットを含む、受信器／伝送器ユニットと、を含む。主表示ユニット８０７は、スケーラブルなデータ構造を利用するプラットフォームからコンテンツを要求するステップを遂行またはサポートする、種々のアプリケーションおよび移動端末機能をサポートして、ユーザに表示を提供する。ディスプレイ８０７は、移動端末（例えば、移動電話）のユーザインターフェースのうちの少なくとも一部分を表示するように構成される、表示回路を含む。加えて、ディスプレイ８０７および表示回路は、移動端末の少なくとも一部の機能のユーザ制御を円滑化するように構成される。オーディオ機能回路８０９は、マイクロホン８１１と、マイクロホン８１１からの音声信号出力を増幅するマイクロホン増幅器と、を含む。マイクロホン８１１からの増幅された音声信号出力は、符号器／復号器（ＣＯＤＥＣ）８１３に送給される。
【００６５】
無線セクション８１５は、アンテナ８１７を介して、移動通信システムに含まれる基地局と通信するために、電力を増幅し、周波数を変換する。電力増幅器（ＰＡ）８１９および伝送器／変調回路は、当該技術分野において知られるように、デュプレクサ８２１またはサーキュレータもしくはアンテナスイッチに連結されるＰＡ８１９からの出力を伴って、ＭＣＵ８０３に動作可能に応答する。ＰＡ８１９はまた、バッテリインターフェースおよび電力制御ユニット８２０に接続される。
【００６６】
使用中、移動端末８０１のユーザは、マイクロホン８１１に向かって話し、任意の検出された背景雑音とともに、ユーザの音声は、アナログ電圧に変換される。次いで、アナログ電圧は、アナログ／デジタル変換器（ＡＤＣ）８２３を通って、デジタル信号に変換される。制御ユニット８０３は、音声符号化、チャネル符号化、暗号化、およびインターリービングといった、その中での処理のために、デジタル信号をＤＳＰ８０５に発送する。一実施形態において、処理された音声信号は、ＥＤＧＥ、汎用パケット無線サービス（ＧＰＲＳ）、移動通信用グローバルシステム（ＧＳＭ）、インターネットプロトコルマルチメディアサブシステム（ＩＭＳ）、ユニバーサル移動通信システム（ＵＭＴＳ）等、ならびに任意の他の好適なワイヤレス媒体、例えば、マイクロ波アクセス（ＷｉＭＡＸ）、長期展開（ＬＴＥ）ネットワーク、符号分割多重アクセス（ＣＤＭＡ）、広帯域符合分割多重アクセス（ＷＣＤＭＡ）、ワイヤレスフィデリティ（ＷｉＦｉ）、衛星、および同じようなセルラ伝送プロトコルを使用して、別個には図示されていないユニットによって、符号化される。
【００６７】
次いで、符号化された信号は、位相および振幅歪みといった、空気を通っての伝送中に生じる、様々な周波数依存性障害の補償のための等化器８２５に送られる。ビット流を等化した後、変調器８２７は、信号を、ＲＦインターフェース８２９において生成されるＲＦ信号と組み合わせる。変調器８２７は、周波数または位相変調を経て正弦波を生成する。伝送のための信号を準備するために、アップコンバータ８３１は、所望の伝送周波数を得るために、変調器８２７からの正弦波出力を、合成器８３３によって生成される別の正弦波と組み合わせる。次いで、信号は、信号を適切な電力レベルまで増幅するべく、ＰＡ８１９を通って送信される。実際的なシステムにおいて、ＰＡ８１９は可変利得増幅器として作用し、その利得は、ネットワーク基地局から受信される情報に基づいて、ＤＳＰ８０５によって制御される。次いで、信号は、デュプレクサ８２１においてフィルタされ、実施形態によっては、インピーダンスを整合して最大電力転送を提供するように、アンテナ結合器８３５に送信される。最後に、信号は、アンテナ８１７を介して、ローカル基地局に伝送される。受信器の最終段階の利得を制御するために、自動利得制御（ＡＧＣ）を設けてもよい。信号は、そこから、公衆交換電話ネットワーク（ＰＳＴＮ）や他のテレフォニーネットワークに接続される、別のセルラ電話や他の移動電話、固定電話等のリモートの電話に転送されてもよい。
【００６８】
移動端末８０１に伝送される音声信号は、アンテナ８１７を介して受信され、即座に、低雑音増幅器（ＬＮＡ）８３７によって増幅される。復調器８３９が、ＲＦを除去して、デジタルビット流のみを残す間に、ダウンコンバータ８４１は、搬送波周波数を低下させる。次いで、信号は、等化器８２５を通過し、ＤＳＰ８０５によって処理される。デジタル／アナログ変換器（ＤＡＣ）８４３は、信号を変換し、得られた出力は、スピーカ８４５を通ってユーザに伝送され、これらは全て中央処理ユニット（ＣＰＵ）（図示せず）として実装することができる、主制御ユニット（ＭＣＵ）８０３の制御下で行われる。
【００６９】
ＭＣＵ８０３は、キーボード８４７からの入力信号を含む、種々の信号を受信する。他のユーザ入力構成要素（例えば、マイクロホン８１１）と組み合わせて、キーボード８４７および／またはＭＣＵ８０３は、ユーザ入力を管理するためのユーザインターフェース回路を備える。ＭＣＵ８０３は、スケーラブルなデータ構造を利用するプラットフォームからコンテンツを要求するために、移動端末８０１の少なくとも一部の機能のユーザ制御を円滑化するように、ユーザインターフェースソフトウェアを実行させる。ＭＣＵ８０３はまた、ディスプレイコマンドおよび切替コマンドを、ディスプレイ８０７に、および音声出力切替コントローラに、それぞれ伝達する。さらに、ＭＣＵ８０３は、ＤＳＰ８０５と情報を交換し、実施形態によって組み込まれるＳＩＭカード８４９およびメモリ８５１にアクセスすることができる。加えて、ＭＣＵ８０３は、端末に必要とされる種々の制御機能を実行する。ＤＳＰ８０５は、実装に依存して、音声信号における、多様な従来のデジタル処理機能のうちのいずれも遂行してもよい。加えて、ＤＳＰ８０５は、マイクロホン８１１によって検出される信号から、ローカル環境の背景雑音レベルを判断し、マイクロホン８１１の利得を、移動端末８０１のユーザの自然な傾向を補償するために選択されるレベルに設定する。
【００７０】
ＣＯＤＥＣ８１３は、ＡＤＣ８２３と、ＤＡＣ８４３とを含む。メモリ８５１は、着信呼音データを含む種々のデータを記憶し、例えば、グローバルなインターネットを介して受信される音楽データを含む、他のデータを記憶することができる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、レジスタ、または当該技術分野において知られる任意の他の形態の書き込み可能な記憶媒体に存在し得る。メモリデバイス８５１は、単一のメモリ、ＣＤ、ＤＶＤ、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭ、光学記憶装置、またはデジタルデータを記憶することができる任意の他の非揮発性記憶媒体であってもよいが、これらに限定されない。
【００７１】
任意に組み込まれたＳＩＭカード８４９は、例えば、セルラ電話番号、搬送波供給サービス、加入詳細、およびセキュリティ情報といった、重要な情報を担持する。ＳＩＭカード８４９は、主に、無線ネットワーク上の移動端末８０１を識別するように機能する。カード８４９はまた、個人用電話番号レジストリ、テキストメッセージ、およびユーザ固有移動端末設定を記憶するためのメモリを格納する。
【００７２】
本発明を、いくつかの実施形態および実装と併せて説明してきたが、本発明はそのように限定されず、添付の請求項の範囲内にある、種々の明らかな修正および同じような構成をその範囲に含む。本発明の特性は、請求項間のある組み合わせにおいて表されるが、これらの特性は任意の組み合わせおよび順序において構成することができる。
【図１Ａ】
0005544431.tif 000002
【図１Ｂ】
0005544431.tif 000003
【図１Ｃ】
0005544431.tif 000004
【図２】
0005544431.tif 000005
【図３】
0005544431.tif 000006
【図４】
0005544431.tif 000007
【図５】
0005544431.tif 000008
【図６】
0005544431.tif 000009
【図７】
0005544431.tif 000010
【図８】
0005544431.tif 000011