JP5544431B2 - スケーラブルなデータ構造を利用するための方法および装置 - Google Patents

スケーラブルなデータ構造を利用するための方法および装置 Download PDF

Info

Publication number
JP5544431B2
JP5544431B2 JP2012545363A JP2012545363A JP5544431B2 JP 5544431 B2 JP5544431 B2 JP 5544431B2 JP 2012545363 A JP2012545363 A JP 2012545363A JP 2012545363 A JP2012545363 A JP 2012545363A JP 5544431 B2 JP5544431 B2 JP 5544431B2
Authority
JP
Japan
Prior art keywords
profile
field
access
access control
search
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012545363A
Other languages
English (en)
Other versions
JP2013515308A (ja
Inventor
イェケサ コスル
ヤリ カルヤラ
マッティ オイカリネン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Oyj
Original Assignee
Nokia Oyj
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Oyj filed Critical Nokia Oyj
Publication of JP2013515308A publication Critical patent/JP2013515308A/ja
Application granted granted Critical
Publication of JP5544431B2 publication Critical patent/JP5544431B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying

Description

ワイヤレス技術やセルラ技術等のサービスプロバイダやハードウェアメーカーは、例えば、強力なネットワークサービスを提供することによって、消費者に価値や利便性を提供することを常に課題としている。当該産業における重要な差別化要因は、アプリケーションやネットワークサービス、またこれらのサービスをサポートし拡大するための能力である。特に、これらのアプリケーションやサービスは、例えば、ソーシャルサービスによって利用されるデータのアクセスおよび管理を含んでもよい。これらのサービスは、データアクセスに関連する、多大な量のユーザプロファイルの管理を伴う。従来から、アクセス制御やデータ管理形態には、別々の機構が用いられてきた。ユーザの数が増加するにつれ、これらの機構はうまく規模の拡大に対応できず、また情報読出に関して、ますます大きな遅延をもたらす可能性がある。
いくつかの例示的な実施形態
したがって、プロファイル(例えば、ユーザプロファイル、エンティティプロファイル等)を検索するために、スケーラブルなデータ構造を利用するための手法に対する必要性が存在する。
一実施形態によると、方法は、エンティティ識別子および要求されるコンテンツを指定するクエリを受信することを含む。該方法はまた、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することを含む。該方法はさらに、前記エンティティ識別子に対して、前記要求されたコンテンツへのアクセス権を示すことを含む。前記データ構造はさらに、前記プロファイルフィールドおよび前記アクセス制御フィールドを含む。
別の実施形態によると、装置は、少なくとも1つのプロセッサと、コンピュータプログラムコードを格納する少なくとも1つのメモリと、を備え、少なくとも1つのメモリおよびコンピュータプログラムコードは、少なくとも1つのプロセッサとともに、少なくとも部分的に、装置に、エンティティ識別子および要求されるコンテンツを指定するクエリに受信させるように構成される。該装置はまた、少なくとも部分的に、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することを行わせられる。該装置はさらに、エンティティ識別子に対して、要求されたコンテンツへのアクセス権を示すことを行わせられる。データ構造はさらに、プロファイルフィールドおよびアクセス制御フィールドを含む。
別の実施形態によると、コンピュータ可読記憶媒体は、1つ以上のプロセッサによって実行される時、少なくとも部分的に、装置に、エンティティ識別子および要求されるコンテンツを指定するクエリを受信させる、1つ以上の命令の1つ以上のシーケンスを格納する。該装置はまた、少なくとも部分的に、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することを行わせられる。該装置はさらに、エンティティ識別子に対して、要求されたコンテンツへのアクセス権を示すことを行わせられる。データ構造はさらに、プロファイルフィールドおよびアクセス制御フィールドを含む。
別の実施形態によると、装置は、エンティティ識別子および要求されるコンテンツを指定するクエリを受信するための手段を備える。該装置はまた、少なくとも部分的に、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせる手段を素なる。ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定する。該装置はさらに、エンティティ識別子に対して、要求されたコンテンツへのアクセス権を示すための手段を備える。データ構造はさらに、プロファイルフィールドおよびアクセス制御フィールドを含む。
本発明のさらなる他の側面、特性、および利点は、単に、本発明を実行するために企図される最良の形態を含む、いくつかの特定の実施形態および実装を例示することにより、以下の詳細な説明から容易に明らかとなる。本発明はまた、他のおよび異なる実施形態が可能であり、かつそのいくつかの詳細は、全て本発明の精神および範囲から逸脱することなく、種々の明らかな点において修正することができる。したがって、図面および説明は、事実上、制限としてではなく、例示として見なされるものとする。
本発明の実施形態を、限定する意図ではなく例示の目的のために、添付図面を用いて説明する。
一実施形態に従う、スケーラブルなデータ構造を利用することが可能なシステムの図である。 一実施形態に従う、分散インデックスエンジン(Distributed Index Engine)の構成要素を示す図である。 一実施形態に従う、分散キー値ストア(Distributed Key Value Store)の構成要素を示す図である。 一実施形態に従う、スケーラブルなデータ構造の使用状況を例示する図である。 一実施形態に従う、分散キー値ストアにおいて利用され得る、例示的なデータ構造の図である。 一実施形態に従う、プロファイルを作成およびインデックス化するためのプロセスのフローチャートである。 一実施形態に従う、プロファイルを検索するために、スケーラブルなデータ構造を利用するためのプロセスのフローチャートである。 本発明の実施形態を実装するために使用することができる、ハードウェアの図である。 本発明の実施形態を実装するために使用することができる、チップセットの図である。 本発明の実施形態を実装するために使用することができる、移動端末(例えば、ハンドセット)の図である。
いくつかの実施形態の説明
ユーザプロファイルを検索するために、スケーラブルなデータ構造を利用するための方法、装置、およびコンピュータプログラムの実施例を開示する。以下の説明において、説明の目的上、本発明の実施形態の完全な理解を提供するために、数々の具体的な詳細が記載される。しかしながら、本発明の実施形態は、これらの具体的な詳細を伴うことなく、または同じような構成を用いて実施され得ることが、当業者には明白である。他の例において、よく知られる構造およびデバイスは、本発明の実施形態を不必要に不明瞭にすることを回避するために、ブロック図形態で示される。
図1Aは、一実施形態に従う、スケーラブルなデータ構造を利用することが可能なシステムの図である。ネットワークサービス(特に、ソーシャルネットワーキングサービス)に対する需要の増加とともに、例えば、ユーザ連絡先データ、プロファイルデータ、およびユーザの接続データのアクセスを適切に管理する必要性は、最重要な懸念事項である。ソーシャルネットワークサービスの不可欠な部分として、これらのデータの連続的な検索および更新がある。これらの検索および読出機能は、必然的に、ますます大きなデータベースをもたらしている。データベースのサイズ、効率性、および待ち時間は、どのようにデータが記憶されるかに基づいて制限され得ることに留意されたい。
この問題に対処するために、図1のシステム100は、スケーラブルなデータ構造を利用する能力を導入する。データ構造は、人物、企業、組織、グループ等といった、1つ以上のエンティティに関する情報を記憶してもよい。ある実施形態において、データ構造は、アクセス制御フィールド、プロファイル識別子、プロファイルデータに関連付けられる1つ以上のフィールド(例えば、アドレスデータ、電子メールデータ、電話番号データ等といった連絡先情報、名前データ、他の識別子、友人データ、コメントデータといったプロファイルに関連付けられる他のデータ、エンティティに関する他のデータ等)、またはこれらの組み合わせを含んでもよい。さらに、他のデータが利用されてもよい。例えば、アクセス制御フィールドは、その識別子が、プロファイル識別子や、1つ以上の関連付けられたフィールドへのアクセスを有することを表す、1つ以上のエンティティ識別子や他の識別子に関連付けることができる。ある実施形態において、エンティティ識別子は、ユーザ、グループ、組織等に関連付けられる識別子である。種々の実施形態が、ユーザ識別子に関して説明されているが、本明細書において説明される手法は、グループ識別子、組織識別子、メンバ識別子、被雇用者識別子等を含む、他のエンティティ識別子とともに使用されてもよいことが企図されている。さらに、エンティティ、またはエンティティに属するユーザは、エンティティ識別子、またはエンティティ識別子にリンクされる別の識別子を提供することによって、システム100で認証してもよい。換言すると、ユーザ識別子は、ユーザ識別子のユーザに関連付けられる、複数のエンティティ識別子(例えば、雇用者識別子、グループ識別子等)にリンクされてもよい。一状況下において、ユーザは、通信ネットワーク105上でソーシャルサービスプラットフォーム103と相互作用する、ユーザのユーザ機器(UE)101a〜101nを使用して、サービスを利用することができる。UE101a〜101nの各々は、1つ以上のアプリケーション107を使用することにより、ソーシャルサービスプラットフォーム103を利用して、データ構造を使用したエンティティに関する情報を受信するようにされてもよい。
さらに、一実施形態において、データ構造のアクセス制御フィールドは、あるバージョンのテキストインデックス化(text indexing)を使用して、インデックス化されてもよい。テキストインデックス化において、変数(例えばドキュメントまたはプロファイル)は、真(True)である変数内に含まれる各単語(word)に基づいて、インデックス化されてもよい。例えば、「this is the first version, not the beta version」という文字列変数は、「this」、「is」、「the」、「first」、「version」、「not」、および「beta」という単語を含む。それはまた、何らかの単語を複数回、ならびにある一般的な単語を含む。一状況において、アクセス制御フィールドは、各単語がユーザ識別子またはエンティティ識別子である場合、インデックス化されうる。さらに、データ構造は、逆インデックス(inverted index)を作成するために使用されてもよい。逆インデックスは、コンテンツ(例えば、ユーザプロファイルとともに記憶される単語または数)から、データベースファイル、ドキュメント、ドキュメントの組などにおける当該コンテンツの場所へのマッピングを記憶することができる、インデックスデータ構造である。ある状況において、各エンティティ識別子に対して、ユーザまたはエンティティのプロファイルに関連付けられるデータの場所への異なる可視性を定義する、いくつかの線(line)が存在する。加えて、データ構造をインデックス化するために、逆インデックスの代わりに、または逆インデックスに加えて、他のインデックスが利用されてもよい。例えば、ハッシュテーブルデータ構造、またはBツリーインデックスといったツリーデータ構造を用いてもよい。Bツリーは、バイナリ検索ツリーと類似するが、さらにノードから分岐する2つ以上のパスを有する能力を有する、ツリーデータ構造である。Bツリーインデックスは、データベースのセグメントの最初の記録を含んでもよい。そのようにして、Bツリーインデックスは、どのデータ構造のデータベースのセグメントを検索するかを判断するために使用することができる。加えて、ハッシュテーブルは、識別子またはキー(例えば、名前)を値(例えば数)にマップするために利用されてもよい。次いで、その値は、キーを検索するためのハッシュを使用して、インデックス化することができる。ハッシュインデックス化のさらに例示的な実装詳細を、図1Cで述べる。
さらに、サービスプラットフォーム109は、ソーシャルサービスプラットフォーム103と規定通りに相互作用してもよい。サービスプラットフォーム109は、ソーシャルサービス、メッセージングサービス、保険サービス、小売サービス、音楽サービス、またはソーシャルサービスプラットフォーム103に記憶されるデータを利用し得る他の同様のサービスを提供してもよい。例えば、サービスのうちの一部は、1人以上のユーザのプロファイルデータにアクセスするために、ソーシャルサービスプラットフォーム103にアクセスし、その情報を、ユーザのそれぞれのUE101上のアプリケーション107を利用して、サービスプラットフォーム109の1人以上のユーザに提供してもよい。さらに、サービスプラットフォーム109の1つ以上のサービスは、ソーシャルサービスプラットフォーム103を使用して記憶されるプロファイル情報を有する、エンティティであってもよい。
ソーシャルネットワーキングアプリケーション107を利用するサービスまたはユーザは、ソーシャルサービスプラットフォーム103に要求を送信することによって、プロファイルを作成、管理、更新、検索、または読み出してもよい。ソーシャルサービスプラットフォーム103は、要求を受信すべく、ソーシャルアプリケーションプログラミングインターフェース(API)111を利用してもよい。ある実施形態において、ソーシャルAPI 111は、1つ以上のプラットフォーム(例えば、サーバ、コンピュータ、電子機械等)上で実装され、レプレセンテーショナル・ステイト・トランスファ(REST)、SOAP、拡張可能なメッセージングおよびプレゼンスプロトコル(XMPP)、JavaScript API、他の類似のAPI、またはこれらの組み合わせを利用してもよい。ある実施形態において、ユーザは、XMPPを介してサービスプラットフォーム109上のサービスに連絡し、サービスプラットフォーム109は、UE101とソーシャルサービスプラットフォーム103との間の仲介として機能する。
例として、システム100の通信ネットワーク105は、データネットワーク(図示せず)、ワイヤレスネットワーク(図示せず)、テレフォニーネットワーク(図示せず)、または任意のこれらの組み合わせといった、1つ以上のネットワークを含む。データネットワークは、任意のローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、公的データネットワーク(例えば、インターネット)、または商業的に所有される、専用パケット交換ネットワーク、例えば、専用ケーブルもしくは光ファイバネットワークといった、任意の他の好適なパケット交換ネットワークであってもよい。加えて、ワイヤレスネットワークは、例えば、セルラネットワークであってもよく、EDGE、汎用パケット無線サービス(GPRS)、移動通信用グローバルシステム(GSM)、インターネットプロトコルマルチメディアサブシステム(IMS)、ユニバーサル移動通信システム(UMTS)等、ならびに任意の他の好適なワイヤレス媒体、例えば、マイクロ波アクセスの国際的相互運用性(WiMAX)、長期展開(LTE)ネットワーク、符号分割多重アクセス(CDMA)、広帯域符合分割多重アクセス(WCDMA)、ワイヤレスフィデリティ(WiFi)、衛星、移動アドホックネットワーク(MANET)および同じようなもの含む、種々の技術を採用してもよい。
UE101は、移動ハンドセット、局、ユニット、デバイス、マルチメディアコンピュータ、マルチメディアタブレット、インターネットノード、コミュニケータ、デスクトップコンピュータ、ラップトップコンピュータ、個人用デジタル補助装置(PDA)、もしくはこれらの任意の組み合わせを含む、任意のタイプの移動端末、固定端末、または携帯型端末である。UE101が、ユーザへの任意のタイプのインターフェース(「ウェアラブル」回路等といった)をサポートすることができるということもまた企図される。
例として、UE101、サービスプラットフォーム109、およびソーシャルサービスプラットフォーム103は、よく知られる、新たな、または依然として開発中のプロトコルを使用して、相互に、および通信ネットワーク105の他の構成要素と通信する。ここで、プロトコルは、通信ネットワーク105内のネットワークノードが、どのように、通信リンク上で送信される情報に基づいて相互に相互作用するかを定義する、一組の規則を含む。プロトコルは、種々のタイプの物理信号を生成および受信することから、それらの信号を、それらの信号によって示される情報の形式へ転送するためのリンクを選択すること、どのコンピュータシステム上で実行するソフトウェアアプリケーションが、情報を送信または受信するかを識別することまで、各ノードにおける様々なレイヤーの動作で有効である。ネットワーク上で情報を交換するための様々なプロトコルのレイヤーの概念は、開放型システム間相互接続(OSI)参照モデルにおいて説明される。
ネットワークノード間の通信は、典型的に、個別のデータパケットを交換することによって、達成される。各パケットは、典型的に、(1)特定のプロトコルに関連付けられるヘッダ情報、および(2)ヘッダ情報に続き、かつその特定のプロトコルとは独立して処理され得る情報を格納する、ペイロード情報を含む。一部のプロトコルにおいて、パケットは、(3)ペイロードに続き、かつペイロード情報の終了を示す、トレイラ情報を含む。ヘッダは、パケットのソース、その送り先、ペイロードの長さ、およびプロトコルによって使用される他の特性といった、情報を含む。しばしば、特定のプロトコルに対する、ペイロードにおけるデータは、異なる、より高い層のOSI参照モデルと関連付けられる、異なるプロトコルに対する、ヘッダおよびペイロードを含む。特定のプロトコルに対するヘッダは、典型的に、そのペイロードに格納される次のプロトコルに対するタイプを示す。より高い層のプロトコルは、より低い層のプロトコルにカプセル化されると言われる。インターネットといった複数の異種ネットワークを横断するパケットに含まれるヘッダは、典型的に、OSI参照モデルによって定義されるように、物理(層1)ヘッダ、データリンク(層2)ヘッダ、インターネットワーク(層3)ヘッダ、および輸送(層4)ヘッダ、ならびに種々のアプリケーションヘッダ(層5、層6、および層7)を含む。
一実施形態において、ソーシャルネットワーキングアプリケーション107、およびソーシャルサービスプラットフォーム103は、クライアント・サーバモデルに従って相互作用する。クライアント・サーバモデルに従って、クライアントプロセスは、要求を含むメッセージをサーバプロセスに送信し、サーバプロセスは、サービスを提供することによって応答する。サーバプロセスはまた、クライアントプロセスへの応答とともに、メッセージを返してもよい。しばしば、クライアントプロセスおよびサーバプロセスは、ホストと呼ばれる、異なるコンピュータデバイス上で実行し、ネットワーク通信のための1つ以上のプロトコルを使用して、ネットワークを介して通信する。「サーバ」という用語は、サービスを提供するプロセス、またはそのプロセスが動作するホストコンピュータを指すために従来使用される。同様に、「クライアント」という用語は、要求を行うプロセス、またはそのプロセスが動作するホストコンピュータを指すために従来使用される。本明細書において使用される際、「クライアント」および「サーバ」という用語は、別途文脈から明白でない限り、ホストコンピュータというよりもむしろ、プロセスを指す。加えて、サーバによって遂行されるプロセスは、とりわけ信頼性、スケーラビリティ、および冗長性を含む理由から、複数のホスト(ティアと呼ばれる場合もある)上で複数のプロセスとして実行させるように、細分化することができる。
一状況下において、ソーシャルAPI 111は、プロファイルを作成するために必要とされる情報を収集し、分散キー値ストア113を利用してプロファイルを記憶してもよい。種々の実施形態が、分散キー値ストア113に関して説明されているが、本明細書において説明される手法は、他のデータベース(例えば、記憶デバイスが全て共通のプロセッサに取説されている、データベース管理システムの制御下の分散データベース、または非分散データベース)とともに使用されてもよいことが企図されている。プロファイルを作成するために必要とされる情報は、認証情報(例えば、ユーザ名およびパスワード)、ユーザ識別子、プロファイルに関連付けられるサービス、1つ以上のプロファイルフィールドに対するプロファイルデータ、または同じようなもののうちの1つ以上を含んでもよい。次いで、ソーシャルAPI 111および/または分散キー値ストア113は、分散インデックスエンジン115に、プロファイルの作成を通知してもよい。
分散インデックスエンジン115は、プロファイルにおける情報を、プロファイルに関連付けられ得るデータ構造のインデックスに追加してもよい。インデックス化されると、プロファイルは、データ構造を介してアクセス制御を実装しつつ、有利にも検索され得るようになる。ある状況下において、プロファイル全体がインデックス化され、他の状況においては、プロファイルのある部分のみがインデックス化される(例えば、テキスト部分)。しかしながら、データ構造は、このインデックス化されていない情報に対する、場所表示情報を含んでもよい。先に述べたように、インデックスは、プロファイルに設定されるパラメータ(例えば、関連付けられたサービス、連絡先リスト、プロファイルに関連付けられる領域またはアドレスといったエリア等)に基づいて、プロファイルに関連付けられてもよい。インデックスは、データ構造の1つ以上のインスタンスを含んでもよい。ソーシャルサービスプラットフォーム103によって利用され得るデータ構造の例示的なインデックスを、図2に詳述する。さらに、インデックスに関連付けられるデータフィールドを更新するために、分散インデックスエンジン115が利用されてもよい。
図1Bは、一実施形態に従う、分散インデックスエンジン115の構成要素の図である。例として、分散インデックスエンジン115は、ソーシャルサービスプラットフォーム103のユーザに、サービスのインデックス化および検索を提供するための1つ以上の構成要素を含む。これらの構成要素の機能は、1つ以上の構成要素と組み合わされる他の構成要素や、同じような機能性を有する他の構成要素によって遂行されてもよい。本実施形態において、分散インデックスエンジン115は、1つ以上のインデックスエンジン120a〜120nを含み、これらの各々は、クエリに基づいて、情報をインデックス化および/または検索、ならびに読み出すために利用されてもよい。各インデックスエンジン120は、API 121と、データ構造のインデックスを記憶、検索、および利用するためのメモリと、インデックスを生成、検索、および更新するためのインデックス化モジュール125と、分散キー値ストア113から情報を読み出すために利用される記憶インターフェース127と、を備えてもよい。
ある実施形態において、分散インデックスエンジン115は、コンピューティングクラウドを利用して実装されてもよい。ここで分散インデックスエンジン115は、異なる地理的場所に対応する、インデックスエンジン120を備えてもよい。インデックスエンジン120は、例えば、ソーシャルサービスプラットフォーム103の外側のクライアントやサービスと相互接続し得る、ソーシャルAPI 111と通信するために使用される、API 121を備えてもよい。ある状況下において、API 121は、ソーシャルAPI 111を使用することなく、クライアントおよびサービスと直接通信してもよく、またはAPI 121は、ソーシャルAPI 111を備えてもよい。
ある状況において、記憶インターフェース127は、分散キー値ストア113に作成および記憶されたプロファイルをインデックス化するための要求を受信するように、分散キー値ストア113と相互作用してもよい。図4のプロセスにおいてさらに詳述されるように、インデックスエンジン120がプロファイルをインデックス化する要求を受信する時、インデックスエンジン120のインデックス化モジュール125は、プロファイルに対する1つ以上のデータ構造をインスタンス化し、メモリ123において、関連付けられたインデックスに、データ構造インスタンスを追加してもよい。先で言及されるように、データ構造は、アクセス制御フィールド、およびデータフィールドを備えてもよい。ある実施形態において、データ構造がインデックスに追加されると、インスタンス化されたデータ構造は、インデックスの複製を更新するために、他のインデックスエンジンへと送信される。2つ以上のインデックスが存在するため、特定のインデックスエンジン120aがオーバーロードまたは故障する場合、ロードは、他のインデックスエンジン(例えば、インデックスエンジン120n)に分散されてもよい。
さらに、記憶インターフェース127は、1つ以上のインターフェースを使用して、分散キー値ストア113と通信してもよい。例えば、記憶インターフェース127は、特定のプロファイルを使用して、インデックスを生成するために、新たなプロファイルに関するデータを受信し、別のインターフェースを利用して、記憶された情報を読み出してもよい。例えば、記憶された情報を読み出すために、記憶インターフェース127は、get、put、delete、およびscanコマンドを利用する、単純なインターフェースを使用してもよい。代替として、または加えて、記憶インターフェース127は、分散キー値ストア113と通信するように、別のAPIを利用してもよく、これは、通信を単純なインターフェースに変換してもよい。
図1Cは、一実施形態に従う、分散キー値ストア113の構成要素の図である。例として、キー値ストア113は、インデックス化、記憶、読出、および検索の対象となるデータの記憶手段を提供するための、1つ以上の構成要素を含む。このため、新たなプロファイルは、分散キー値ストア113に記憶されてもよい。これらの構成要素の機能は、1つ以上の構成要素において組み合わされていてもよく、または同じような機能性を有する他の構成要素によって遂行されてもよい。他の形態のデータベースが、分散キー値ストア113の代わりに、またはそれに加えて、利用されてもよい。本実施形態において、分散キー値ストア113は、サーバ143、およびデータベース145a〜145nと通信するために使用されうるクライアントライブラリ141を含む。
インデックスエンジン120a〜120nの記憶インターフェース127、およびソーシャルAPI 111は、クライアントライブラリ141を使用して、分散キー値ストア113と通信してもよい。ある実施形態において、インデックスエンジン120a〜120n、およびソーシャルAPI 111は、分散キー値ストア113からデータベースサービスを受信するクライアントと見なされてもよい。クライアントライブラリ141は、データベース145からコンテンツを読み出すために、どのサーバ143と通信するかを判断することができる、インターフェースを備えてもよい。ある実施形態において、データベース145は、キー、およびキーを使用して記憶を可能にする値機構を利用して記憶される。各データベースの一部分(例えば、部分A〜I)は、キーにリンクすることができる。一実施形態において、キーは、キーがどの部分にリンクされるかを判断するように、ハッシュ化される。キーは、例えば、リング法(ring method)を使用してハッシュ化されてもよい。リングを使用して、各キーおよび部分は、一次場所(例えば、数kにハッシュ化される識別子を有するキーに基づいて)、ならびに1つ以上のバックアップ場所にハッシュ化されてもよい。バックアップ場所は、ハッシュに関連付けられる次のサーバまたはホストに関連付けられる場所であってもよい。クライアントライブラリ141は、どのサーバ143が、キーハッシュを使用して、情報を読み取るおよび書き込むかを判断する。クライアントライブラリ141およびサーバ143は、各々、どの部分がどのサーバ143に属するかを含む、ルックアップテーブルを備えてもよい。
ある実施形態において、部分(例えば、部分A147a〜147c)は、複数のサーバを使用して、複数のデータベース145上に記憶されてもよい。ある実装において、冗長性、フェイルオーバのために、および待ち時間を低減するために、部分は、n個(例えば、複製=3)のサーバ143およびデータベース145上に複製されてもよい。さらに、その部分は、クライアントライブラリ141によって、同時に書き込みおよび読み取られてもよい。データベース145から読み取る時、クライアントライブラリは、いずれかの一貫性問題(例えば、部分147aが部分147bと一致しない)があるかどうかを判断してもよい。さらに、ある実施形態において、例示的な記憶スキームは、書き込みまたは読み取りが遂行される時、少なくともある数(例えば、必要とされる書き込み=2、必要とされる読み取り=2等)の部分が、書き込みまたは読み取りに成功することが必要であることを必要とし得る。これは、冗長性およびクオラムの一貫性を可能にする。データベース145aが故障する、またはそうでなければ不能となる場合、データベース145aに関連付けられる部分147aは、複製された部分147b、147cを有するサーバ143によって、それが含むべきコンテンツで後で更新されてもよい。
ソーシャルAPI 111は、新たなプロファイルが、分散キー値ストア113に記憶されることを必要とし得る。新たなプロファイルは、新たなプロファイルに関連付けられるアカウント識別子に基づいて、キーを割り当てられてもよい。次いで、キーは、新たなプロファイルを格納するための部分(例えば、部分A147)を判断するように、ハッシュ化されてもよい。次に、プロファイルは、一次データベース、ならびにバックアップデータベースに記憶される。プロファイルは、キーに関連付けられる値と見なされてもよい。後でプロファイルを読み出すために、キーのハッシュを使用して、その部分に関連付けられるサーバからプロファイルを要求してもよい。次いで、キーを利用して、プロファイルに対する部分を検索してもよい。プロファイルが分散キー値ストア113に記憶されると、クライアントライブラリ141は、プロファイルがインデックスに追加されることを、インデックスエンジン120に通知してもよい。
インデックスが作成され、プロファイルが分散キー値ストア113に記憶されると、ソーシャルAPI 111は、UE101やサービスからクエリを受信することができるが、このクエリは、インデックスエンジン120に、ユーザ識別子および要求されたコンテンツに基づいて、情報を検索および読出させるためのものである。インデックスエンジン120は、クエリに関連付けられるインデックスを読み出し、アクセス制御フィールドにおいてユーザ識別子に対するインデックスを検索することができる。検索は、テキストベースの検索であってもよい。さらに、要求されたコンテンツは、クエリが関心対象とするプロファイルの1つ以上のプロファイル識別子、またはクエリが関心対象とするコンテンツ(例えば、基本プロファイル情報)のタイプを指定してもよい。分散インデックスエンジン115は、要求されたコンテンツをソーシャルAPI 111に返す。コンテンツを読み出すためのプロセスを、図2および5のプロセスにおいてさらに詳述する。
図2は、一実施形態に従う、スケーラブルなデータ構造200の使用状況を例示する図である。データ構造は、アクセス制御フィールド201や、プロファイル識別子(プロファイルID)203、基本プロファイル205、拡張プロファイル207a〜207n、および連絡先情報209といったデータフィールドとを備えてもよい。先に述べたように、アクセス制御フィールドは、1つ以上のユーザ識別子(例えば、ユーザ識別子1〜5、ユニバーサルユーザ識別子*等)に関連付けられてもよい。ある実施形態において、データ構造は、アクセス制御フィールド201におけるエンティティ識別子(例えば、ユーザ識別子)が、一度だけ、プロファイルID203に関連付けられることを可能にする。ある状況において、プロファイルID203は、コンテンツを、ユーザまたはエンティティプロファイルに関連付けるために使用することができる、グローバル一意識別子である。加えて、ユーザ識別子は、クエリを、プロファイルを有する場合がある、または有しない場合がある、特定のユーザに関連付ける、識別子であってもよい。アクセス制御フィールドは、プロファイルに関連付けられるユーザに関して、どのユーザまたはエンティティ識別子が、友人、家族、同僚、知人、一方向フォロワ、被雇用者、メンバ等といった、連絡先または接続と見なされるかに基づいてもよい。ユーザは、ソーシャルネットワーキングアプリケーション107、およびソーシャルAPI 111を介して、これらの接続を入力してもよい。
複数のレベルのアクセスを、アクセス制御フィールド201を使用して提供することができる。例えば、プロファイルID1は、アクセス制御権に基づいて、異なるユーザ識別子には異なるコンテンツアクセスを可能にしてもよい。本実施例において、ユーザ識別子2、3、および4は、プロファイルID1の基本プロファイル205、拡張プロファイル207aおよび207n、ならびに連絡先情報209へのアクセスを許可される。このアクセスは、グループのステータス(例えば、各々が友人と見なされる)により、提供されてもよい。しかしながら、ユーザ識別子5は、ユーザ識別子5が知人と見なされているため、基本プロファイル205および第1の拡張プロファイル207へのアクセスを有するのみであり得る。ゲストユーザを含む、全てのユーザが、プロファイルID1の基本プロファイル205へのアクセスを有してもよい。プロファイルID203に関連付けられるユーザまたはエンティティは、プロファイルを作成しつつ、またはプロファイルを更新することによって、これらのアクセス制御を判断してもよい。プロファイルID1の場合、インデックスエンジン120は、プロファイルID1をインデックスに追加する時、3つのデータ構造211、213、215(列として図示)を生成する。データ構造211、213、215の各々は、"DATA"とマークされたフィールドにデータを有してもよい。ある実施形態において、このデータは検索可能である。さらに、プロファイルID2は、それに関連付けられる2つのデータ構造217、219を有してもよく、プロファイルID3は、それに関連付けられる1つのデータ構造221のみを有してもよく、各々が、ある情報へのアクセスを可能にする、アクセス制御フィールドを有する。一状況下において、プロファイルID3に対するデータ構造221は、ゲストユーザに提供することができるいかなる情報も含まず、ユーザ識別子4への基本プロファイルデータへのアクセスのみを含む。さらに、(列によって表される)各データ構造は、アクセス制御201フィールドを使用してインデックス化されてもよく、それによって、(例えばエンティティ識別子またはユーザ識別子を介して)どのエンティティが、特定のデータ構造列へのアクセスを有するかを判断してもよい。
一状況下において、ソーシャルAPI 111は、インデックス上で遂行されるべきクエリを要求するユーザまたはサービスからの要求を受信する。ソーシャルAPI 111は、クエリに関連付けられるべきユーザ識別子を決定するべく、ユーザまたはサービスで認証してもよい。ある実施形態において、サービスまたはユーザは、ゲストとしてログインし、ゲストステータスを受信する。他の実施形態において、ユーザ名およびパスワードは、ユーザ識別子にマップされる。ユーザの認証はまた、別のサービスにパススルーされてもよい。ユーザまたはサービスはまた、クエリにおいて、ユーザまたはサービスが読み出したいコンテンツを指定してもよい。
一実施形態において、ユーザは、ユーザが読み出すことができる全ての情報に対して、検索クエリを開始してもよい。ソーシャルAPI 111は、クエリに対するユーザ識別子が、ユーザ識別子4であることを判断する。クエリは、分散インデックスエンジン115に渡され、データ構造200のインデックス上で検索を開始する。分散インデックスエンジン115は、ユーザ識別子4が、プロファイルID1の基本プロファイル205、第1の拡張プロファイル207a、第2の拡張プロファイル207n、および連絡先情報209、ならびにプロファイルID2の基本プロファイル205、第1の拡張プロファイル207a、および連絡先情報209、ならびにプロファイルID3の基本プロファイル205へのアクセスを有することを決定する。次いで、このデータを、ユーザへの伝送のために、値として、ソーシャルAPI 111に返すことができる。別の状況において、クエリに対するユーザ識別子は、ユーザ識別子5である。分散インデックスエンジン115は、データ構造213および219に格納される情報を返す。分散インデックスエンジン115がこのデータを帰す理由は、ユーザ識別子が、せいぜいプロファイルID1のデータ構造213へのアクセスと、プロファイルID2への少なくともゲストレベルアクセス(全ての要求元に与えられるアクセス)とを有するのみで、プロファイルID3へのアクセスを有しないからであってもよい。実施形態によっては、クエリを形成するユーザまたはサービスは、クエリが、単純に誰でも持てるアクセス権よりも、ユーザがより高いレベルのアクセス権(例えば、友人アクセス、知人アクセス、同僚アクセス等)を有するプロファイルのみを検索することを要求してもよい。
ある状況において、要求されたコンテンツは、キーワードといった、1つ以上の検索用語を有していてもよい。このような状況において、プロファイルID203、基本プロファイル205、拡張プロファイル207、および連絡先情報209は、素早く且つ容易に検索可能である。分散インデックスエンジン115は、検索用語に対して、コンテンツフィールド203、205、207、209を検索してもよい。代替として、または加えて、コンテンツフィールド203、205、207、209に関連付けられるデータは、分散キー値ストア113、または他の検索不可能なコンテンツへのポインタ(例えば、キー)を備えてもよい。一部の実施形態において、クエリがアクセスを有するプロファイル情報のみが、検索される。これは、プロファイル情報の読出において、低い待ち時間を可能にする。さらに、この方法は、より多い数の検索および膨大な量のインデックスコンテンツが、検索に含まれることを可能にする。
図3は、一実施形態に従う、分散キー値ストアにおいて利用され得る、例示的なデータ構造の図である。さらに、データ構造300の部分は、インデックスで利用され得る。データ構造300は、プロファイルIDまたはアカウントIDに関連付けることができるキー301を指定してもよい。このキー301は、分散キー値ストア113からプロファイルを読み出すために使用することができる。さらに、キー301は、基本プロファイル305、第1の拡張プロファイル307、および他のコンテンツフィールドを含む、値303に関連付けられる。さらに加えて、値は、インデックスに含まれない場合がある情報を備えてもよい。例えば、第3の拡張プロファイル309は、検索することができず、したがって、インデックスに記憶される必要がない、画図データ311を備えてもよい。そのようなものとして、インデックス内の第3の拡張プロファイル309データは、コンテンツが分散キー値ストア113において利用可能であることを、分散インデックスエンジン115に通知する、フラグまたは他のデータを備えてもよい。
図4は、一実施形態に従う、プロファイルを作成およびインデックス化するためのプロセスのフローチャートである。一実施形態において、ソーシャルAPI 111、および分散インデックスエンジン115は、プロセス400を遂行し、例えば、図7に示されるようなプロセッサおよびメモリを含むチップセットにおいて実装される。そのようなものとして、ソーシャルAPI 111および/または分散インデックスエンジン115は、プロセス400、および本明細書において説明される他のプロセスのステップを遂行するための手段を提供してもよい。ステップ401において、ソーシャルAPI 111は、クライアント(例えば、サービス、ユーザ、エンティティ等)から、プロファイルを作成するための要求を受信する。次いで、ソーシャルAPI 111は、認証証明を要求することによって、ユーザが、プロファイルをアカウントに関連付けるためのユーザの認証を提供することを要求してもよい。次に、ユーザが証明を送信してもよく、ソーシャルAPI 111が証明を受信してもよく、ソーシャルAPI 111がプロファイルのユーザ作成者の認証を実証してもよい(ステップ403)。
次いで、ステップ405において、ソーシャルAPIは、アクセス制御フィールド、ユーザ識別子、および他のデータフィールドを備えてもよい、プロファイルを作成してもよい。ソーシャルAPI 111は、何の情報をプロファイルに記憶するかに関する追加情報に対して、ユーザにクエリを行ってもよい。ユーザは、データフィールド、および他のカスタマイズ可能なデータを、プロファイルに入力してもよい。クエリの複数の繰り返しが、プロファイルを完成させるために必要であり得る。次いで、ステップ407において、図1Bおよび1Cの説明において詳述されるように、ソーシャルAPI 111は、分散キー値ストア113にプロファイルを記憶してもよい。
プロファイルが記憶されると、ソーシャルAPI 111は、少なくとも部分的に、分散インデックスエンジン115に、インデックス構造中にプロファイルをインデックス化させてもよい(ステップ409)。分散インデックスエンジン115は、プロファイルをインデックスに追加してもよい。プロファイルは、1つ以上のユーザ入力に基づいて、プロファイルの関連(例えば、場所、関連付けられたサービス、連絡先接続等)に基づいて、または他のデータに基づいて、インデックスに関連付けることができる。次いで、プロファイルに関連付けられる1つ以上のフィールドが、ユーザによって設定され得るアクセス制御特性に基づいて、インデックス化される。アクセス制御フィールド201は、あるユーザが何の情報を検索および/または読み出すことができるかを区別するために利用されてもよい。新たなデータ構造が、各区別されたグループに対してインスタンス化されてもよい。ある実施形態において、ユーザは、(例えばプロファイルID203に基づいて、)所与のプロファイルに対するインスタンス化されたデータ構造のうちの多くとも1つに配置される。加えて、インスタンス化されたデータ構造(例えば、データ構造215)は、一般公衆(例えば、ゲスト、全てのユーザ等)にアクセス可能であってもよい。
さらに、ステップ411において、プロファイルおよびインデックス構造を、更新することができる。ステップ401から407において詳述されたようにしてユーザプロファイルを作成する代わりに、ユーザは、ユーザプロファイルを認証および更新することができる。プロファイルが更新されると、分散インデックスエンジン115は、変更されたプロファイルに基づいて、インデックスの更新を開始させられてもよい。プロファイルへの変更は、アクセス制御リストを介して、あるエンティティへのアクセスを追加するもしくは除去すること、コンテンツを追加もしくは削除すること、あるアクセス制御フィールドグループにおいて、ユーザに利用可能なコンテンツを修正すること、インスタンス化されたデータ構造を追加もしくは削除すること、インスタンス化されたデータ構造を組み合わせること、これらの組み合わせ、または似たような処理を含んでもよい。
図5は、一実施形態に従うプロセスのフローチャートであって、プロファイルを検索するために、スケーラブルなデータ構造を利用するためのプロセスのフローチャートである。一実施形態において、分散インデックスエンジン115は、例えば、図7に示されるようなプロセッサおよびメモリを含むチップセットによって実装され、プロセス500を遂行する。ここで分散インデックスエンジン115は、プロセス500に関連付けられるステップを実装するための手段であってもよい。ステップ501において、分散インデックスエンジン115は、エンティティ識別子および要求されるコンテンツを指定するクエリを受信する。ユーザは、要求されたコンテンツを入力することによって、キーワード検索を開始し、ユーザ識別子を検索クエリの中に含めてもよい。先に説明されるように、クエリは、ソーシャルAPI 111を介して、UE101またはサービスから受信されてもよい。エンティティ識別子(例えばユーザ識別子)は、要求を行うユーザを指定してもよく、認証プロセスを通じて、ソーシャルAPI 111を介して得られてもよい。認証プロセスは、ユーザ名およびパスワード、トークン、または他の認証機構を、ユーザ識別子に関連付けることを含んでもよい。要求されたコンテンツは、1つ以上のフィールド名(例えば、アクセス制御201、プロファイルID203、基本プロファイル205、拡張プロファイル207a〜207n、連絡先情報209等)を含んでもよく、またはフィールドに存在し得る1つ以上の検索用語を含んでもよい。
次いで、ステップ503において、分散インデックスエンジン115は、データ構造のプロファイルインデックスのユーザ識別子に基づく検索を少なくとも部分的に生じさせる。このデータ構造は、各々、検索結果を与えるべく、アクセス制御フィールド201に関連付けられるプロファイルフィールドを少なくとも指定する。ここで分散インデックスエンジン115は、ステップ503を実装するための手段を提供してもよい。データ構造はさらに、プロファイルフィールド(例えば、プロファイルID203、基本プロファイル205、拡張プロファイル207a〜207n、連絡先情報209等)、およびアクセス制御フィールド201を備えてもよい。検索は、ユーザ識別子を、インデックスのアクセス制御フィールド201に比較することによって、ユーザ識別子に対する、要求されたコンテンツへのアクセス権を示すこと(ステップ505)によって開始してもよい。ここで分散インデックスエンジン115は、ユーザ識別子に対する、要求されたコンテンツへのアクセス権を示すための手段を提供する。さらに、要求されたコンテンツは、キーワードといった検索用語を備えてもよい。検索用語(または2つ以上の用語)に対するテキスト検索は、ユーザ識別子がアクセスを有する、データ構造のいずれかのプロファイルフィールド上で行われてもよい。このテキスト検索は、アクセス制御フィールドに基づいて、ユーザに対して検索するために、逆インデックスまたは別のインデックス(例えば、ハッシュもしくはBツリー)を開発および記憶することを介して、実装されてもよい。逆インデックスアクセス制御フィールドは、ゲストまたは「*」識別子を備えてもよい、1つ以上のユーザ識別子と関連付けられる「単語」を備えてもよい。逆インデックスは、ユーザ識別子がアクセスを有するデータ列を迅速に見つけることができる。さらに、これは、ユーザがテキスト検索へのアクセスも有し、かつその一部でもある、検索結果をもたらし得る。このように、テキスト検索は、通常の検索の副効果として、アクセス制御を実装するために使用される。
さらに、ステップ507において、要求されたコンテンツは、アクセス権に基づいて、読み出すことができる。先に述べられるように、分散インデックスエンジン115は、ステップ507を実装するための手段を提供することができる。ある実施形態において、要求されたコンテンツは、プロファイルインデックスにおいてインデックス化されていない情報が要求されていることを示してもよい。データ構造は、関連付けられたコンテンツはあるが、そのコンテンツは完全なプロファイルに記憶されていることを示す、データ(例えば、フラグまたはポインタ)を提供してもよい。ここで、要求されたコンテンツのプロファイルID203をキー識別子として使用してプロファイルに対する要求を生成し、分散キー値ストア113への要求の伝送の少なくとも一部を生じさせることにより、コンテンツが分散キー値ストア113から読み出される。そしてプロファイルは、受信され、転送されてもよい。他の実施形態において、要求されたコンテンツは、プロファイルフィールドのうちの1つ以上であってもよく、これは、インデックスから直接読み出されてもよい。ある状況において、要求されたコンテンツは、インデックスから、またはプロファイルからのデータ構造300であってもよい。次いで、ステップ509にあるように、要求されたコンテンツは、少なくとも部分的に、ソーシャルAPI 111を介して、要求元に伝送させられる。
上記の手法および実施例は、有利にスケーラブルなデータ構造の使用を詳述する。データ構造は、加えて、上記のインデックス化手法を利用して、低い待ち時間検索を提供し得る。これは、データ構造のインデックスにおいて、テキスト検索可能なプロファイルフィールドと併せて、アクセス制御フィールドを記憶することを介して実装されうる。さらに、インデックスは、データ構造に関連付けられる一意プロファイルIDを単に使用して、分散データストア(例えば、図1のストア113)からコンテンツを迅速に読み出すことによって、より大きなデータコンテンツを含みうるように拡張されてもよい。さらに、データ構造は、分散アーキテクチャにおいて使用されてもよいため、データ構造を使用して記憶される情報の使用の利用可能性は、極めて利用可能である。データを含むより多くの数の部分が、いくつかの物理的機械に拡散しているため、この機能性が実装され得る。
スケーラブルなデータ構造を利用するための本明細書において説明されるプロセスは、ソフトウェア、ハードウェア(例えば、汎用プロセッサ、デジタル信号処理(DSP)チップ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)等)、ファームウェア、またはこれらの組み合わせを介して、有利に実装され得る。説明された機能を遂行するためのかかる例示的なハードウェアを、以下で詳述する。
図6は、本発明の実施形態が実装され得る、コンピュータシステム600を例解する。コンピュータシステム600は、特定のデバイスまたは機器に関して描写されているが、図6内の他のデバイスまたは機器(例えば、ネットワーク要素、サーバ等)は、システム600の例解されたハードウェアおよび構成要素によって展開することができる。コンピュータシステム600は、本明細書において説明されるように、スケーラブルなデータ構造を利用するように、(例えば、コンピュータプログラムコードまたは命令によって)プログラムされ、コンピュータシステム600の他の内部構成要素と外部構成要素との間で情報を渡すために、バス610といった通信機構を含む。情報(データとも呼ばれる)は、典型的には、電圧であるが、他の実施形態において、磁気、電磁、気圧、化学、生物学、分子、原子、素粒子、および量子相互作用といった、現象を含む、測定可能な現象の物理表現として表される。例えば、NおよびSの磁場や、ゼロおよび非ゼロ電圧は、バイナリ桁(ビット)の2つの状態(0、1)を表す。他の現象は、より高い基数の桁を示し得る。測定前の複数の同時の量子状態の重ね合わせは、量子ビット(キュービット)を表す。1つ以上の桁のシーケンスは、文字に対する数またはコードを表すために使用される、デジタルデータを構成する。一部の実施形態において、アナログデータと呼ばれる情報は、特定の範囲内の測定可能な値の準連続体によって表される。コンピュータシステム600、またはその一部分は、スケーラブルなデータ構造を利用する1つ以上のステップを遂行するための手段を構成する。
バス610は、情報が、バス610に連結されるデバイス間で迅速に転送されるように、情報の1つ以上の平行導体を含む。情報を処理するための1つ以上のプロセッサ602は、バス610と連結される。
プロセッサ602は、スケーラブルなデータ構造を利用することに関連するコンピュータプログラムコードの指示に従って、情報に対して一連の演算を遂行する。コンピュータプログラムコードは、指定された機能を遂行するように、プロセッサおよび/またはコンピュータシステムの動作に対する命令を提供する、一組の命令またはステートメントである。例えば、コードは、プロセッサのネイティブ命令セットにコンパイルされる、コンピュータプログラミング言語で書かれてもよい。コードはまた、ネイティブ命令セット(例えば、機械言語)を使用して、直接書かれてもよい。一組の演算は、バス610から情報を取り入れることと、情報をバス610上に配置することとを含む。一組の演算はまた、典型的に、2つ以上の情報単位を比較することと、情報単位の位置をシフトすることと、例えば、加算もしくは乗算、またはOR、排他的OR(XOR)、およびANDのような論理演算によって、2つ以上の情報単位を組み合わせることと、を含む。プロセッサによって遂行することができる一組の演算の各演算は、1つ以上の桁の演算コードといった、命令と呼ばれる情報によって、プロセッサに対して表される。演算コードのシーケンスといった、プロセッサ602によって実行されるべき演算のシーケンスは、コンピュータシステム命令、または単にコンピュータ命令とも呼ばれる、プロセッサ命令を構成する。プロセッサは、単独で、または組み合わせて、とりわけ機械、電気、磁気、光学、化学、または量子構成要素として実装されてもよい。
コンピュータシステム600はまた、バス610に連結されるメモリ604を含む。ランダムアクセスメモリ(RAM)または他の動的記憶デバイスといった、メモリ604は、スケーラブルなデータ構造を利用するためのプロセッサ命令を含む、情報を記憶する。動的メモリは、その中に記憶される情報が、コンピュータシステム600によって変更されることを可能にする。RAMは、メモリアドレスと呼ばれる場所に記憶される情報単位が、近隣のアドレスの情報とは独立して、記憶され、読み出されることを可能にする。メモリ604はまた、プロセッサ命令の実行中に、一時的な値を記憶するように、プロセッサ602によって使用される。コンピュータシステム600はまた、コンピュータシステム600によって変更されない、命令を含む、静的情報を記憶するために、バス610に接続される、読み取り専用メモリ(ROM)606または他の静的記憶デバイスを含む。一部のメモリは、電力を喪失した時に、その中に記憶される情報を喪失する、揮発性記憶装置から成る。コンピュータシステム600がオフにされるか、またはそうでなければ電力を喪失する時でさえ持続する命令を含む、情報を記憶するための、磁気ディスク、光学ディスク、またはフラッシュカードといった、非揮発性(持続性)記憶デバイス608もまた、バス610に接続される。
スケーラブルなデータ構造を利用するための命令を含む情報は、外部入力デバイス612からバス610に提供され、プロセッサにより使用される。外部入力デバイス612は、ユーザによって操作される英数字キーやセンサを備えるキーボードのようなものであることができる。センサは、その近傍の条件を検出し、それらの検出を、コンピュータシステム600において、情報を表すために使用される、測定可能な現象と互換性のある、物理表現に変換する。主にヒトと相互作用するために使用される、バス610に接続される他の外部デバイスとしては、テキストもしくは画像を提示するための陰極線管(CRT)もしくは液晶ディスプレイ(LCD)、またはプラズマ画面もしくはプリンタといった、表示デバイス614、およびディスプレイ614上に提示される小さなカーソル画像の位置を制御し、ディスプレイ614上に提示されるグラフィック要素に関連付けられるコマンドを発行するための、マウスもしくはトラックボールもしくはカーソル方向キー、または運動センサといった、ポインティングデバイス616が挙げられる。一部の実施形態において、例えば、コンピュータシステム600が、ヒトの入力を伴わずに、自動で、全ての機能を遂行する実施形態において、外部入力デバイス612、表示デバイス614、およびポインティングデバイス616のうちの1つ以上は、省略される。
例解される実施形態において、特定用途向け集積回路(ASIC)620といった特殊用途ハードウェアが、バス610に連結される。特殊用途ハードウェアは、特殊用途に対して十分に迅速に、プロセッサ602によって遂行されない動作を遂行するように構成される。特定用途向けICの例としては、ディスプレイ614に対して画像を生成するためのグラフィックアクセラレータカード、ネットワーク上で送信されるメッセージを暗号化および復号するための暗号ボード、音声認識、ならびにハードウェアにおいてより効率的に実装される、一部の複雑な動作シーケンスを繰り返して遂行する、ロボットアームや医療用走査機器といった、特別な外部デバイスへのインターフェースが挙げられる。
コンピュータシステム600はまた、バス610に連結される通信インターフェース670の1つ以上のインスタンスを含む。通信インターフェース670は、プリンタ、スキャナ、および外部ディスクといった、それら自身のプロセッサとともに動作する多様な外部デバイスに、1方向または双方向通信接続を提供する。この接続は、一般的に、ネットワークリンク680との間で確立される。ネットワークリンク680は、自身でプロセッサを有する多様な外部デバイスが接続される、ローカルネットワーク678に接続される。例えば、通信インターフェース670は、パーソナルコンピュータ上のパラレルポートもしくはシリアルポート、またはユニバーサルシリアルバス(USB)ポートであってもよい。一部の実施形態において、通信インターフェース670は、総合サービスデジタルネットワーク(ISDN)カードもしくはデジタル加入者回線(DSL)カード、または対応するタイプの電話線に情報通信接続を提供する電話モデムである。一部の実施形態において、通信インターフェース670は、バス610上の信号を、同軸ケーブル上の通信接続のための信号、または光ファイバケーブル上の通信接続のための光学信号に変換する、ケーブルモデムである。別の実施例として、通信インターフェース670は、イーサネットといった互換性のあるLANに、データ通信接続を提供するためのローカルエリアネットワーク(LAN)カードであってもよい。ワイヤレスリンクもまた、実装されてもよい。ワイヤレスリンクに関して、通信インターフェース670は、デジタルデータといった情報流を担持する、赤外線および光学信号を含む、電気、音響、または電磁信号を送信する、または受信する、または送信および受信の両方をする。例えば、携帯電話のような移動電話といった、ワイヤレスハンドヘルドデバイスにおいて、通信インターフェース670は、無線送受信器と呼ばれる、無線帯域電磁伝送器および受信器を含む。ある実施形態において、通信インターフェース670は、UE101に対する、通信ネットワーク105への接続を可能にする。
「コンピュータ可読媒体」という用語は、実行のための命令を含む、プロセッサ602への情報の提供に関与する、任意の媒体を指すように、本明細書において使用される。かかる媒体は、非揮発性媒体、揮発性媒体、および伝送媒体を含むが、これらに限定されない、多くの形態を採ってもよい。非揮発性媒体としては、例えば、記憶デバイス608といった光学もしくは磁気ディスクが挙げられる。揮発性媒体としては、例えば、動的メモリ604が挙げられる。伝送媒体としては、例えば、同軸ケーブル、銅ワイヤ、光ファイバケーブル、および無線、光学、および赤外線波を含む、音波および電磁波といった、ワイヤもしくはケーブルを伴わずに空間を通って移動する搬送波が挙げられる。信号は、伝送媒体を通って伝送される、振幅、周波数、位相、極性、または他の物理特性における、人為的な過渡変動を含む。一般的な形態のコンピュータ可読媒体としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD−ROM、CDRW、DVD、任意の他の光学媒体、パンチカード、紙テープ、光学マークシート、孔もしくは他の光学的に認識可能な標識のパターンを有する任意の他の物理媒体、RAM、PROM、EPROM、FLASH−EPROM、任意の他のメモリチップもしくはカートリッジ、搬送波、またはコンピュータが読み取ることができる任意の他の媒体が挙げられる。コンピュータ可読記憶媒体という用語は、伝送媒体を除く、任意のコンピュータ可読媒体を指すように、本明細書において使用される。
1つ以上の有形媒体に符号化された論理は、コンピュータ可読記憶媒体、およびASIC620といった特殊用途ハードウェア上のプロセッサ命令のうちの一方または両方を含む。
ネットワークリンク678は、典型的に、情報を使用または処理する他のデバイスに、1つ以上のネットワークを通って、伝送媒体を使用して、情報通信を提供する。例えば、ネットワークリンク678は、ローカルネットワーク680を通って、ホストコンピュータ682へ、またはインターネットサービスプロバイダ(ISP)によって動作する機器684へ、接続を提供してもよい。ISP機器684は同様に、現在では一般的にインターネット690と称されるネットワークの公的な、グローバルなパケット交換通信ネットワークを通って、データ通信サービスを提供する。
インターネットに接続される、サーバホスト692と呼ばれるコンピュータは、インターネット上で受信される情報に応答して、サービスを提供するプロセスをホストする。例えば、サーバホスト692は、ディスプレイ614での提示のためにビデオデータを表す情報を提供するプロセスをホストする。システム600の構成要素は、他のコンピュータシステム、例えば、ホスト682およびサーバ692内で、種々の構成において展開することができる。
本発明の少なくとも一部の実施形態は、本明細書において説明される技術のうちの一部または全てを実装するための、コンピュータシステム600の使用に関連する。本発明の一実施形態によると、それらの技術は、メモリ604に格納される、1つ以上のプロセッサ命令の1つ以上のシーケンスを実行する、プロセッサ602に応答して、コンピュータシステム600によって遂行される。コンピュータ命令、ソフトウェア、およびプログラムコードとも呼ばれる、かかる命令は、記憶デバイス608またはネットワークリンク678といった、別のコンピュータ可読媒体から、メモリ604に読み込まれてもよい。メモリ604に格納される命令シーケンスの実行は、プロセッサ602に、本明細書において説明される方法ステップのうちの1つ以上を遂行させる。代替的な実施形態において、ASIC620といったハードウェアは、本発明を実装するように、ソフトウェアの代わりに、またはそれと組み合わせて、使用されてもよい。このため、本発明の実施形態は、本明細書において別途明記されない限り、ハードウェアおよびソフトウェアの任意の特定の組み合わせに限定されない。
通信インターフェース670を通って、ネットワークリンク678および他のネットワーク上で伝送される信号は、コンピュータシステム600へ、およびコンピュータシステム600から情報を搬送する。コンピュータシステム600は、とりわけネットワーク680、690を通って、ネットワークリンク678および通信インターフェース670を通って、プログラムコードを含む情報を送信および受信することができる。インターネット690を使用する実施例において、サーバホスト692は、インターネット690、ISP機器684、ローカルネットワーク680、および通信インターフェース670を通って、コンピュータ600から送信されるメッセージによって要求される、特定のアプリケーションに対するプログラムコードを伝送する。受信されたコードは、受信される際に、プロセッサ602によって実行されてもよく、または、後の実行のために、メモリ604に、または記憶デバイス608もしくは他の非揮発性記憶装置、あるいは両方に記憶されてもよい。このように、コンピュータシステム600は、搬送波上の信号の形態で、アプリケーションプログラムコードを得てもよい。
種々の形態のコンピュータ可読媒体は、命令もしくはデータまたは両方の1つ以上のシーケンスを、実行のためにプロセッサ602に搬送することに関与されてもよい。例えば、命令およびデータは、最初、ホスト682といったリモートコンピュータの磁気ディスク上に担持されてもよい。リモートコンピュータは、命令およびデータを、その動的メモリの中へロードし、モデムを使用して、電話線上で命令およびデータを送信する。コンピュータシステム600にローカルなモデムは、電話線上で命令およびデータを受信し、ネットワークリンク678として機能する赤外線搬送波上で、命令およびデータを信号に変換するために、赤外線伝送器を使用する。通信インターフェース670として機能する赤外線検出器は、赤外線信号に担持される命令およびデータを受信し、命令およびデータを表す情報を、バス610上に配置する。バス610は、情報を、プロセッサ604が、命令を読み出し、命令とともに送信されるデータのうちの一部を使用して、命令を実行する、メモリ602へ搬送する。メモリ604に受信された命令およびデータは、実施形態によっては、プロセッサ608による実行の前または後のいずれかに、記憶デバイス602上に記憶されてもよい。
図7は、本発明の実施形態が実装され得る、チップセット700を例解する。チップセット700は、本明細書において説明されるように、スケーラブルなデータ構造を利用するようにプログラムされ、例えば、1つ以上の物理パッケージ(例えば、チップ)に組み込まれる、図6に関して説明される、プロセッサ、およびメモリ構成要素を含む。例として、物理パッケージは、物理強度、サイズの保存、および/または電気的相互作用の制限といった、1つ以上の特徴を提供するように、構造的アセンブリ(例えば、ベースボード)上の1つ以上の材料、構成要素、および/またはワイヤによる構成を含む。ある実施形態において、チップセットは、単一のチップにおいて実装することができる。チップセット700、またはその一部分は、スケーラブルなデータ構造を利用する1つ以上のステップを遂行するための手段を構成する。
一実施形態において、チップセット700は、チップセット701の構成要素間で情報を渡すための、バス700といった通信機構を含む。プロセッサ703は、命令を実行し、例えば、メモリ701に記憶される情報を処理するために、バス705への接続を有する。プロセッサ703は、各コアが独立して遂行するように構成される、1つ以上の処理コアを備えてもよい。マルチコアプロセッサは、単一の物理パッケージ内での多重処理を可能にする。マルチコアプロセッサの例は、2つ、4つ、8つ以上の数の処理コアを含む。代替として、または加えて、プロセッサ703は、命令の独立した実行、パイプライン化、およびマルチスレッド化を可能にするように、バス701を介して、縦列して構成される、1つ以上のマイクロプロセッサを備えてもよい。プロセッサ703はまた、1つ以上のデジタル信号プロセッサ(DSP)707、または1つ以上の特定用途向け集積回路(ASIC)709といった、ある処理機能およびタスクを遂行するための1つ以上の特殊化した構成要素を伴ってもよい。DSP707は、典型的に、プロセッサ703とは独立して、リアルタイムで現実世界の信号(例えば、音)を処理するように構成される。同様に、ASIC709は、汎用プロセッサによっては容易に遂行されない、特殊化した機能を遂行するように構成することができる。本明細書において説明される本発明の機能を遂行する上で支援するための他の特殊化した構成要素としては、1つ以上のフィールド・プログラマブル・ゲート・アレイ(FPGA)(図示せず)、1つ以上のコントローラ(図示せず)、または1つ以上の他の特殊用途コンピュータチップが挙げられる。
プロセッサ703および付属構成要素は、バス701を介して、メモリ705への接続を有する。メモリ705は、実行される時に、スケーラブルなデータ構造を利用するように、本明細書において説明される本発明のステップを遂行する、実行可能な命令を記憶するための、動的メモリ(例えば、RAM、磁気ディスク、書き込み可能な光学ディスク等)、および静的メモリ(例えば、ROM、CD−ROM等)の両方を含む。メモリ705はまた、本発明のステップの実行に関連付けられる、または本発明のステップによって生成される、データを記憶する。
図8は、一実施形態に従う、図1のシステムを動作させることができる、通信のための移動端末(例えば、ハンドセット)の例示的な構成要素の図である。一部の実施形態において、移動端末800、またはその一部分は、スケーラブルなデータ構造を利用するプラットフォームからコンテンツを要求する、1つ以上のステップを遂行するための手段を構成する。一般的に、無線受信器は、しばしば、フロントエンドおよびバックエンドの特性に関連して定義される。受信器のフロントエンドは、無線周波数(RF)回路の全てを包含するが、バックエンドは、ベースバンド処理回路の全てを包含する。本出願において使用される際、「回路」という用語は、(1)ハードウェアのみの実装(アナログおよび/またはデジタル回路のみにおける実装といった)、ならびに(2)回路およびソフトウェア(および/もしくはファームウェア)の組み合わせ(特定の文脈に該当する場合、移動電話もしくはサーバといった装置に、種々の機能を遂行させるように協働する、デジタル信号プロセッサ(複数を含む)、ソフトウェア、およびメモリ(複数を含む)を含む、プロセッサ(複数を含む)の組み合わせといった)の両方を指す。「回路」のこの定義は、いずれの請求項も含む、本出願におけるこの用語の全ての使用に該当する。さらなる実施例として、本出願において使用される際、および特定の文脈に該当する場合、「回路」という用語はまた、単に、プロセッサ(もしくは複数のプロセッサ)、およびその(もしくはそれらの)付属ソフトウェア/またはファームウェアの実装を網羅する。「回路」という用語はまた、特定の文脈に該当する場合、例えば、移動電話におけるベースバンド集積回路もしくはアプリケーションプロセッサ集積回路、またはセルラネットワークデバイスもしくは他のネットワークデバイスにおける類似の集積回路を網羅する。
電話に関連する内部構成要素は、主制御ユニット(MCU)803と、デジタル信号プロセッサ(DSP)805と、マイクロホン利得制御ユニットおよびスピーカ利得制御ユニットを含む、受信器/伝送器ユニットと、を含む。主表示ユニット807は、スケーラブルなデータ構造を利用するプラットフォームからコンテンツを要求するステップを遂行またはサポートする、種々のアプリケーションおよび移動端末機能をサポートして、ユーザに表示を提供する。ディスプレイ807は、移動端末(例えば、移動電話)のユーザインターフェースのうちの少なくとも一部分を表示するように構成される、表示回路を含む。加えて、ディスプレイ807および表示回路は、移動端末の少なくとも一部の機能のユーザ制御を円滑化するように構成される。オーディオ機能回路809は、マイクロホン811と、マイクロホン811からの音声信号出力を増幅するマイクロホン増幅器と、を含む。マイクロホン811からの増幅された音声信号出力は、符号器/復号器(CODEC)813に送給される。
無線セクション815は、アンテナ817を介して、移動通信システムに含まれる基地局と通信するために、電力を増幅し、周波数を変換する。電力増幅器(PA)819および伝送器/変調回路は、当該技術分野において知られるように、デュプレクサ821またはサーキュレータもしくはアンテナスイッチに連結されるPA819からの出力を伴って、MCU803に動作可能に応答する。PA819はまた、バッテリインターフェースおよび電力制御ユニット820に接続される。
使用中、移動端末801のユーザは、マイクロホン811に向かって話し、任意の検出された背景雑音とともに、ユーザの音声は、アナログ電圧に変換される。次いで、アナログ電圧は、アナログ/デジタル変換器(ADC)823を通って、デジタル信号に変換される。制御ユニット803は、音声符号化、チャネル符号化、暗号化、およびインターリービングといった、その中での処理のために、デジタル信号をDSP805に発送する。一実施形態において、処理された音声信号は、EDGE、汎用パケット無線サービス(GPRS)、移動通信用グローバルシステム(GSM)、インターネットプロトコルマルチメディアサブシステム(IMS)、ユニバーサル移動通信システム(UMTS)等、ならびに任意の他の好適なワイヤレス媒体、例えば、マイクロ波アクセス(WiMAX)、長期展開(LTE)ネットワーク、符号分割多重アクセス(CDMA)、広帯域符合分割多重アクセス(WCDMA)、ワイヤレスフィデリティ(WiFi)、衛星、および同じようなセルラ伝送プロトコルを使用して、別個には図示されていないユニットによって、符号化される。
次いで、符号化された信号は、位相および振幅歪みといった、空気を通っての伝送中に生じる、様々な周波数依存性障害の補償のための等化器825に送られる。ビット流を等化した後、変調器827は、信号を、RFインターフェース829において生成されるRF信号と組み合わせる。変調器827は、周波数または位相変調を経て正弦波を生成する。伝送のための信号を準備するために、アップコンバータ831は、所望の伝送周波数を得るために、変調器827からの正弦波出力を、合成器833によって生成される別の正弦波と組み合わせる。次いで、信号は、信号を適切な電力レベルまで増幅するべく、PA819を通って送信される。実際的なシステムにおいて、PA819は可変利得増幅器として作用し、その利得は、ネットワーク基地局から受信される情報に基づいて、DSP805によって制御される。次いで、信号は、デュプレクサ821においてフィルタされ、実施形態によっては、インピーダンスを整合して最大電力転送を提供するように、アンテナ結合器835に送信される。最後に、信号は、アンテナ817を介して、ローカル基地局に伝送される。受信器の最終段階の利得を制御するために、自動利得制御(AGC)を設けてもよい。信号は、そこから、公衆交換電話ネットワーク(PSTN)や他のテレフォニーネットワークに接続される、別のセルラ電話や他の移動電話、固定電話等のリモートの電話に転送されてもよい。
移動端末801に伝送される音声信号は、アンテナ817を介して受信され、即座に、低雑音増幅器(LNA)837によって増幅される。復調器839が、RFを除去して、デジタルビット流のみを残す間に、ダウンコンバータ841は、搬送波周波数を低下させる。次いで、信号は、等化器825を通過し、DSP805によって処理される。デジタル/アナログ変換器(DAC)843は、信号を変換し、得られた出力は、スピーカ845を通ってユーザに伝送され、これらは全て中央処理ユニット(CPU)(図示せず)として実装することができる、主制御ユニット(MCU)803の制御下で行われる。
MCU803は、キーボード847からの入力信号を含む、種々の信号を受信する。他のユーザ入力構成要素(例えば、マイクロホン811)と組み合わせて、キーボード847および/またはMCU803は、ユーザ入力を管理するためのユーザインターフェース回路を備える。MCU803は、スケーラブルなデータ構造を利用するプラットフォームからコンテンツを要求するために、移動端末801の少なくとも一部の機能のユーザ制御を円滑化するように、ユーザインターフェースソフトウェアを実行させる。MCU803はまた、ディスプレイコマンドおよび切替コマンドを、ディスプレイ807に、および音声出力切替コントローラに、それぞれ伝達する。さらに、MCU803は、DSP805と情報を交換し、実施形態によって組み込まれるSIMカード849およびメモリ851にアクセスすることができる。加えて、MCU803は、端末に必要とされる種々の制御機能を実行する。DSP805は、実装に依存して、音声信号における、多様な従来のデジタル処理機能のうちのいずれも遂行してもよい。加えて、DSP805は、マイクロホン811によって検出される信号から、ローカル環境の背景雑音レベルを判断し、マイクロホン811の利得を、移動端末801のユーザの自然な傾向を補償するために選択されるレベルに設定する。
CODEC813は、ADC823と、DAC843とを含む。メモリ851は、着信呼音データを含む種々のデータを記憶し、例えば、グローバルなインターネットを介して受信される音楽データを含む、他のデータを記憶することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、レジスタ、または当該技術分野において知られる任意の他の形態の書き込み可能な記憶媒体に存在し得る。メモリデバイス851は、単一のメモリ、CD、DVD、ROM、RAM、EEPROM、光学記憶装置、またはデジタルデータを記憶することができる任意の他の非揮発性記憶媒体であってもよいが、これらに限定されない。
任意に組み込まれたSIMカード849は、例えば、セルラ電話番号、搬送波供給サービス、加入詳細、およびセキュリティ情報といった、重要な情報を担持する。SIMカード849は、主に、無線ネットワーク上の移動端末801を識別するように機能する。カード849はまた、個人用電話番号レジストリ、テキストメッセージ、およびユーザ固有移動端末設定を記憶するためのメモリを格納する。
本発明を、いくつかの実施形態および実装と併せて説明してきたが、本発明はそのように限定されず、添付の請求項の範囲内にある、種々の明らかな修正および同じような構成をその範囲に含む。本発明の特性は、請求項間のある組み合わせにおいて表されるが、これらの特性は任意の組み合わせおよび順序において構成することができる。

Claims (16)

  1. 装置のプロセッサでコンピュータプログラムが実行されることにより、前記装置が実行する方法であって、
    エンティティ識別子および要求されるコンテンツを指定するクエリを受信および/または処理することと;
    データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することと;
    前記エンティティ識別子に対して、前記要求されたコンテンツへのアクセス権を示すことと;
    を含み、前記データ構造はさらに、前記プロファイルフィールドおよび前記アクセス制御フィールドを含み、前記アクセス制御フィールドは、前記エンティティ識別子との比較によって前記アクセス権を指定するために利用され、前記要求されたコンテンツはキーワードを含み、前記検索は、前記キーワードに基づく前記プロファイルフィールドのテキスト検索を含み、
    前記方法はさらに、少なくとも部分的に前記検索結果の伝送を行う、
    方法。
  2. 前記アクセス権に基づいて、前記要求されたコンテンツを読み出すことを含み、前記検索は、アクセスを有することが示される前記検索結果のみを与える、請求項1に記載の方法。
  3. 前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索される、請求項1または2に記載の方法。
  4. 前記アクセス制御フィールドは複数のエンティティ識別子を含む、請求項1から3のいずれか1項に記載の方法。
  5. 前記プロファイルフィールドは基本プロファイルフィールドであり、前記データ構造はさらに拡張プロファイルフィールドを含み、前記アクセス制御フィールドは、前記基本プロファイルフィールドおよび前記拡張プロファイルフィールドへのアクセス権を指定するために利用される、請求項4に記載の方法。
  6. 前記プロファイルフィールドはさらに、前記データ構造のうちの1つ以上に対応するプロファイル識別子に関連付けられ、前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索され、前記プロファイル識別子は、前記データ構造のうちの1つにおける前記エンティティ識別子にのみ関連付けられる、請求項1からのいずれか1項に記載の方法。
  7. 少なくとも1つのプロセッサと、コンピュータプログラムコードを格納する少なくとも1つのメモリとを備える装置であって、前記コンピュータプログラムコードは、前記少なくとも1つのプロセッサに実行されることにより、前記装置に処理を遂行させるように構成され、前記処理は少なくとも以下:
    エンティティ識別子および要求されるコンテンツを指定するクエリを受信および/または処理することと;
    データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することと;
    前記エンティティ識別子に対して、前記要求されたコンテンツへのアクセス権を示すことと;
    を含み、前記データ構造はさらに、前記プロファイルフィールドおよび前記アクセス制御フィールドを含み、前記アクセス制御フィールドは、前記エンティティ識別子との比較によって前記アクセス権を指定するために利用され、前記要求されたコンテンツはキーワードを含み、前記検索は、前記キーワードに基づく前記プロファイルフィールドのテキスト検索を含み、
    前記処理はさらに、少なくとも部分的に、前記検索結果の伝送を、少なくとも部分的に行うことを含む、
    装置。
  8. 前記処理はさらに、少なくとも部分的に、
    前記アクセス権に基づいて、前記要求されたコンテンツを読み出すことを含み、ここで前記検索は、アクセスを有することが示される前記検索結果のみを与える、請求項に記載の装置。
  9. 前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索される、請求項またはに記載の装置。
  10. 前記アクセス制御フィールドは複数のエンティティ識別子を含む、請求項からのいずれか1項に記載の装置。
  11. 前記プロファイルフィールドは基本プロファイルフィールドであり、前記データ構造はさらに拡張プロファイルフィールドを含み、前記アクセス制御フィールドは、前記基本プロファイルフィールドおよび前記拡張プロファイルフィールドへのアクセス権を指定するために利用される、請求項10に記載の装置。
  12. 前記プロファイルフィールドはさらに、前記データ構造のうちの1つ以上に対応するプロファイル識別子に関連付けられ、前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索され、前記プロファイル識別子は、前記データ構造のうちの1つにおける前記エンティティ識別子にのみ関連付けられる、請求項から11のいずれか1項に記載の装置。
  13. 前記装置は移動電話であって、
    ディスプレイの使用を通じて、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成され、かつユーザ入力に応答するように構成される、ユーザインターフェース回路およびユーザインターフェースソフトウェアと;
    前記移動電話のユーザインターフェースのうちの少なくとも一部分を表示するように構成される、ディスプレイおよび表示回路であって、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成される、ディスプレイおよび表示回路と、
    をさらに備える、請求項から12のいずれか1項に記載の装置。
  14. 1つ以上のプロセッサによって実行される時、装置に、少なくとも請求項1からのいずれか1項に記載の方法を遂行させる、1つ以上の命令の1つ以上のシーケンスを格納する、コンピュータ可読記憶媒体。
  15. 請求項1からのいずれか1項に記載の方法を遂行するための手段を備える、装置。
  16. 前記装置は移動電話であり、
    ディスプレイの使用を通じて、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成され、かつユーザ入力に応答するように構成される、ユーザインターフェース回路およびユーザインターフェースソフトウェアと;
    前記移動電話のユーザインターフェースのうちの少なくとも一部分を表示するように構成される、ディスプレイおよび表示回路であって、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成される、ディスプレイおよび表示回路と、
    をさらに備える、請求項15に記載の装置。
JP2012545363A 2009-12-22 2010-11-16 スケーラブルなデータ構造を利用するための方法および装置 Expired - Fee Related JP5544431B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/645,115 US20110153644A1 (en) 2009-12-22 2009-12-22 Method and apparatus for utilizing a scalable data structure
US12/645,115 2009-12-22
PCT/FI2010/050919 WO2011076986A1 (en) 2009-12-22 2010-11-16 Method and apparatus for utilizing a scalable data structure

Publications (2)

Publication Number Publication Date
JP2013515308A JP2013515308A (ja) 2013-05-02
JP5544431B2 true JP5544431B2 (ja) 2014-07-09

Family

ID=44152558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012545363A Expired - Fee Related JP5544431B2 (ja) 2009-12-22 2010-11-16 スケーラブルなデータ構造を利用するための方法および装置

Country Status (8)

Country Link
US (1) US20110153644A1 (ja)
EP (1) EP2517126A4 (ja)
JP (1) JP5544431B2 (ja)
KR (1) KR101445950B1 (ja)
CN (1) CN102713904B (ja)
BR (1) BR112012015717A2 (ja)
CA (1) CA2784778C (ja)
WO (1) WO2011076986A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8712968B1 (en) * 2009-07-15 2014-04-29 Symantec Corporation Systems and methods for restoring images
US8898318B2 (en) * 2010-06-03 2014-11-25 Microsoft Corporation Distributed services authorization management
US20120278124A1 (en) * 2010-10-28 2012-11-01 Albert Cecchini Methods and systems for obtaining and processing information for interrelated processes
WO2013006844A1 (en) * 2011-07-07 2013-01-10 Cisco Technology, Inc. System and method for providing a message and an event based video services control plane
US10038927B2 (en) * 2011-12-22 2018-07-31 Cisco Technology, Inc. Out-of-band signaling and device-based content control
CA2764283A1 (en) * 2012-01-16 2013-07-16 Giovanni J. Morelli Mobile device control application for improved security and diagnostics
US9177171B2 (en) * 2012-03-11 2015-11-03 International Business Machines Corporation Access control for entity search
US8706739B1 (en) * 2012-04-26 2014-04-22 Narus, Inc. Joining user profiles across online social networks
US9208179B1 (en) * 2012-05-25 2015-12-08 Narus, Inc. Comparing semi-structured data records
US20140004960A1 (en) * 2012-06-27 2014-01-02 Zynga Inc. Dynamic player match-making for social games
EP2680171A3 (en) * 2012-06-29 2014-01-22 Orange Intelligent index scheduling
US8997008B2 (en) 2012-07-17 2015-03-31 Pelicans Networks Ltd. System and method for searching through a graphic user interface
CA2908087A1 (en) 2013-03-28 2014-10-02 Sphere 3D Inc. Systems and methods for providing an emulator
US20150006571A1 (en) * 2013-06-28 2015-01-01 LGS Innovations LLC Method And Apparatus For Enabling Queries In An Information-Centric Network
US20150229718A1 (en) * 2014-02-11 2015-08-13 Apple Inc. Protocol for exchanging data between two devices
CN105490999A (zh) * 2014-12-23 2016-04-13 哈尔滨安天科技股份有限公司 一种基于xmpp协议的分布式存储系统
EP3593242B1 (en) 2017-03-10 2024-04-24 Visa International Service Association Techniques for in-memory data searching
US10437807B1 (en) * 2017-07-06 2019-10-08 Palantir Technologies Inc. Selecting backing stores based on data request
FR3074592B1 (fr) * 2017-12-01 2019-10-25 Idemia Identity And Security Procede de partage d'une cle servant a deriver des cles de session pour crypter et authentifier des communications entre un objet et un serveur
RU2755196C1 (ru) * 2018-04-05 2021-09-14 Нокиа Текнолоджиз Ой Управление унифицированными идентификаторами подписки в системах связи
CN110401618A (zh) * 2018-04-24 2019-11-01 中国移动通信集团广东有限公司 区块链数据访问控制的方法及装置
US11017028B2 (en) * 2018-10-03 2021-05-25 The Toronto-Dominion Bank Systems and methods for intelligent responses to queries based on trained processes
KR102121975B1 (ko) * 2018-12-26 2020-06-11 주식회사 엘지씨엔에스 동기화 테이블을 통한 실제 데이터 제공 방법 및 데이터 관리 시스템
US11714826B2 (en) 2020-02-27 2023-08-01 Intuitive Data Analytics, LLC Generation and adaptation of visualizations from one or more data sets stored using a single-branch approach
US11379408B2 (en) * 2020-05-04 2022-07-05 International Business Machines Corporation Pointer-based dynamic data structures in key-value stores

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6460036B1 (en) * 1994-11-29 2002-10-01 Pinpoint Incorporated System and method for providing customized electronic newspapers and target advertisements
US6493702B1 (en) * 1999-05-05 2002-12-10 Xerox Corporation System and method for searching and recommending documents in a collection using share bookmarks
US20030014394A1 (en) * 2001-03-22 2003-01-16 Shinji Fujiwara Cell-level data access control using user-defined functions
US20020143961A1 (en) * 2001-03-14 2002-10-03 Siegel Eric Victor Access control protocol for user profile management
US7155425B2 (en) * 2001-05-15 2006-12-26 Nokia Corporation Mobile web services
EP1288795A1 (en) * 2001-08-24 2003-03-05 BRITISH TELECOMMUNICATIONS public limited company Query systems
AU2002366902A1 (en) * 2001-12-21 2003-07-09 Nokia Corporation Location-based novelty index value and recommendation system and method
US7240046B2 (en) * 2002-09-04 2007-07-03 International Business Machines Corporation Row-level security in a relational database management system
US7165119B2 (en) * 2003-10-14 2007-01-16 America Online, Inc. Search enhancement system and method having rankings, explicitly specified by the user, based upon applicability and validity of search parameters in regard to a subject matter
US20070276801A1 (en) * 2004-03-31 2007-11-29 Lawrence Stephen R Systems and methods for constructing and using a user profile
US20060047725A1 (en) * 2004-08-26 2006-03-02 Bramson Steven J Opt-in directory of verified individual profiles
WO2006096939A1 (en) * 2005-03-18 2006-09-21 Kwok Kay Wong Remote access of heterogeneous data
US20060248592A1 (en) * 2005-04-28 2006-11-02 International Business Machines Corporation System and method for limiting disclosure in hippocratic databases
US8086605B2 (en) * 2005-06-28 2011-12-27 Yahoo! Inc. Search engine with augmented relevance ranking by community participation
US10769215B2 (en) * 2005-07-14 2020-09-08 Conversant Wireless Licensing S.A R.L. Method, apparatus and computer program product providing an application integrated mobile device search solution using context information
US7747612B2 (en) * 2005-10-31 2010-06-29 Yahoo! Inc. Indication of exclusive items in a result set
US7716180B2 (en) * 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
JP4838610B2 (ja) * 2006-03-24 2011-12-14 キヤノン株式会社 文書管理装置、文書管理方法、プログラム
US9141704B2 (en) * 2006-06-28 2015-09-22 Microsoft Technology Licensing, Llc Data management in social networks
US20080147633A1 (en) * 2006-12-15 2008-06-19 Microsoft Corporation Bringing users specific relevance to data searches
US8024328B2 (en) * 2006-12-18 2011-09-20 Microsoft Corporation Searching with metadata comprising degree of separation, chat room participation, and geography
JP5138970B2 (ja) * 2006-12-20 2013-02-06 リプレックス株式会社 システム、サーバ、情報端末、オペレーティングシステム、ミドルウェア、情報通信機器、認証方法、システム及びアプリケーションソフトウェア
JP2008177713A (ja) * 2007-01-17 2008-07-31 Nec Corp 携帯端末装置、移動通信システム及びそれらに用いる多人数コミュニケーション促進方法
JP2008197839A (ja) * 2007-02-09 2008-08-28 Fujifilm Corp 情報管理装置、方法およびプログラム
US20080235189A1 (en) * 2007-03-23 2008-09-25 Drew Rayman System for searching for information based on personal interactions and presences and methods thereof
JP5190921B2 (ja) * 2007-07-24 2013-04-24 日本電信電話株式会社 コミュニティ通信ネットワーク、通信制御方法、コミュニティ管理サーバ、コミュニティ管理方法、およびプログラム
US7809751B2 (en) * 2007-08-27 2010-10-05 Sap Ag Authorization controlled searching
US8713055B2 (en) * 2007-09-07 2014-04-29 Ezra Callahan Dynamically updating privacy settings in a social network
JP5267062B2 (ja) * 2007-11-16 2013-08-21 ソニー株式会社 情報処理装置、情報処理方法、コンテンツ視聴装置、コンテンツ表示方法、プログラム及び情報共有システム
JP2009140051A (ja) * 2007-12-04 2009-06-25 Sony Corp 情報処理装置、情報処理システム、推薦装置、情報処理方法および記憶媒体
US8799264B2 (en) * 2007-12-14 2014-08-05 Microsoft Corporation Method for improving search engine efficiency
US20090171690A1 (en) * 2007-12-28 2009-07-02 Humanbook, Inc. System and method for a web-based people directory
US20090178131A1 (en) * 2008-01-08 2009-07-09 Microsoft Corporation Globally distributed infrastructure for secure content management
JP2009211403A (ja) * 2008-03-04 2009-09-17 Hitachi Software Eng Co Ltd ファイル検索プログラム
JP5266841B2 (ja) * 2008-03-31 2013-08-21 富士通株式会社 仮想共同体管理システム、仮想共同体管理方法、およびコンピュータプログラム
US8229911B2 (en) * 2008-05-13 2012-07-24 Enpulz, Llc Network search engine utilizing client browser activity information
US8364659B2 (en) * 2008-05-14 2013-01-29 Enpulz, L.L.C. Network server employing client favorites information and profiling
US20090327054A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Personal reputation system based on social networking
US20100088364A1 (en) * 2008-10-08 2010-04-08 International Business Machines Corporation Social networking architecture in which profile data hosting is provided by the profile owner
US20100114897A1 (en) * 2008-10-17 2010-05-06 Ricardo Polo-Malouvier Indexing and searching a network of multi-faceted entity data
US8032508B2 (en) * 2008-11-18 2011-10-04 Yahoo! Inc. System and method for URL based query for retrieving data related to a context
US8386519B2 (en) * 2008-12-30 2013-02-26 Expanse Networks, Inc. Pangenetic web item recommendation system
US8108406B2 (en) * 2008-12-30 2012-01-31 Expanse Networks, Inc. Pangenetic web user behavior prediction system
US8255403B2 (en) * 2008-12-30 2012-08-28 Expanse Networks, Inc. Pangenetic web satisfaction prediction system
US20100169338A1 (en) * 2008-12-30 2010-07-01 Expanse Networks, Inc. Pangenetic Web Search System

Also Published As

Publication number Publication date
KR101445950B1 (ko) 2014-11-03
WO2011076986A1 (en) 2011-06-30
EP2517126A1 (en) 2012-10-31
CA2784778C (en) 2016-01-19
CN102713904A (zh) 2012-10-03
KR20120106863A (ko) 2012-09-26
US20110153644A1 (en) 2011-06-23
CA2784778A1 (en) 2011-06-30
BR112012015717A2 (pt) 2016-05-17
JP2013515308A (ja) 2013-05-02
CN102713904B (zh) 2016-11-09
EP2517126A4 (en) 2016-10-12

Similar Documents

Publication Publication Date Title
JP5544431B2 (ja) スケーラブルなデータ構造を利用するための方法および装置
US9305002B2 (en) Method and apparatus for eventually consistent delete in a distributed data store
US8676857B1 (en) Context-based search for a data store related to a graph node
US20100250599A1 (en) Method and apparatus for integration of community-provided place data
US8655894B2 (en) Method and apparatus for index generation and use
US9122532B2 (en) Method and apparatus for executing code in a distributed storage platform
US20120117067A1 (en) Method and apparatus for providing a range ordered tree structure
US20130262467A1 (en) Method and apparatus for providing token-based classification of device information
US8892677B1 (en) Manipulating objects in hosted storage
JP2014507706A (ja) グラフ・データのコンポジット・ターム・インデックスを有する装置およびその方法
EP2553614A1 (en) Method and apparatus for context-indexed network resources
US8930361B2 (en) Method and apparatus for cleaning data sets for a search process
KR101582930B1 (ko) 짧은 용어 해쉬
US20100223240A1 (en) System and method for composite record keys ordered in a flat key space for a distributed database
US20150331924A1 (en) Synchronizing endpoint data stores having disparate schemas
US20110246451A1 (en) Storage device having full-text search function
US8782777B2 (en) Use of synthetic context-based objects to secure data stores
WO2014040266A1 (en) Method and apparatus for constructing latent social network models
US9536105B2 (en) Method and apparatus for providing data access via multi-user views
US20170270195A1 (en) Providing token-based classification of device information
US8898122B1 (en) Method and system for managing versioned structured documents in a database
US8918379B1 (en) Method and system for managing versioned structured documents in a database
JP2013030189A (ja) 全文検索機能を備えるストレージ装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130910

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131206

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140326

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140416

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140512

R150 Certificate of patent or registration of utility model

Ref document number: 5544431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees