JP5544431B2 - Method and apparatus for utilizing scalable data structures - Google Patents

Method and apparatus for utilizing scalable data structures 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
Japanese (ja)
Other versions
JP2013515308A (en
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/en
Application granted granted Critical
Publication of JP5544431B2 publication Critical patent/JP5544431B2/en
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

ワイヤレス技術やセルラ技術等のサービスプロバイダやハードウェアメーカーは、例えば、強力なネットワークサービスを提供することによって、消費者に価値や利便性を提供することを常に課題としている。当該産業における重要な差別化要因は、アプリケーションやネットワークサービス、またこれらのサービスをサポートし拡大するための能力である。特に、これらのアプリケーションやサービスは、例えば、ソーシャルサービスによって利用されるデータのアクセスおよび管理を含んでもよい。これらのサービスは、データアクセスに関連する、多大な量のユーザプロファイルの管理を伴う。従来から、アクセス制御やデータ管理形態には、別々の機構が用いられてきた。ユーザの数が増加するにつれ、これらの機構はうまく規模の拡大に対応できず、また情報読出に関して、ますます大きな遅延をもたらす可能性がある。   Service providers and hardware manufacturers, such as wireless technology and cellular technology, are constantly challenged to provide value and convenience to consumers by, for example, providing powerful network services. An important differentiator in the industry is the application and network services and the ability to support and expand these services. In particular, these applications and services may include, for example, access and management of data used by social services. These services involve the management of a large amount of user profiles related to data access. Conventionally, separate mechanisms have been used for access control and data management forms. As the number of users increases, these mechanisms are unable to scale well and may introduce increasingly greater delays with respect to information retrieval.

いくつかの例示的な実施形態Some exemplary embodiments

したがって、プロファイル(例えば、ユーザプロファイル、エンティティプロファイル等)を検索するために、スケーラブルなデータ構造を利用するための手法に対する必要性が存在する。   Thus, there is a need for techniques for utilizing scalable data structures to search for profiles (eg, user profiles, entity profiles, etc.).

一実施形態によると、方法は、エンティティ識別子および要求されるコンテンツを指定するクエリを受信することを含む。該方法はまた、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することを含む。該方法はさらに、前記エンティティ識別子に対して、前記要求されたコンテンツへのアクセス権を示すことを含む。前記データ構造はさらに、前記プロファイルフィールドおよび前記アクセス制御フィールドを含む。   According to one embodiment, the method includes receiving a query specifying an entity identifier and requested content. The method also causes at least partially a search based at least in part on the entity identifier of the profile index of the data structure, wherein each of the data structures is associated with an access control field to provide a search result. Includes specifying at least a profile field. The method further includes indicating to the entity identifier an access right to the requested content. The data structure further includes the profile field and the access control field.

別の実施形態によると、装置は、少なくとも1つのプロセッサと、コンピュータプログラムコードを格納する少なくとも1つのメモリと、を備え、少なくとも1つのメモリおよびコンピュータプログラムコードは、少なくとも1つのプロセッサとともに、少なくとも部分的に、装置に、エンティティ識別子および要求されるコンテンツを指定するクエリに受信させるように構成される。該装置はまた、少なくとも部分的に、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することを行わせられる。該装置はさらに、エンティティ識別子に対して、要求されたコンテンツへのアクセス権を示すことを行わせられる。データ構造はさらに、プロファイルフィールドおよびアクセス制御フィールドを含む。   According to another embodiment, an apparatus comprises at least one processor and at least one memory storing computer program code, the at least one memory and computer program code being at least partially in conjunction with at least one processor. Configured to cause the device to receive a query specifying the entity identifier and the requested content. The apparatus may also at least partially cause a search based at least in part on the entity identifier of the profile index of the data structure, provided that each of the data structures is accessed to provide a search result. You are allowed to specify at least the profile field associated with the control field. The apparatus is further caused to indicate an access right to the requested content for the entity identifier. The data structure further includes a profile field and an access control field.

別の実施形態によると、コンピュータ可読記憶媒体は、1つ以上のプロセッサによって実行される時、少なくとも部分的に、装置に、エンティティ識別子および要求されるコンテンツを指定するクエリを受信させる、1つ以上の命令の1つ以上のシーケンスを格納する。該装置はまた、少なくとも部分的に、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することを行わせられる。該装置はさらに、エンティティ識別子に対して、要求されたコンテンツへのアクセス権を示すことを行わせられる。データ構造はさらに、プロファイルフィールドおよびアクセス制御フィールドを含む。   According to another embodiment, the computer readable storage medium, when executed by one or more processors, causes the device to receive a query specifying an entity identifier and the requested content, at least in part. One or more sequences of instructions are stored. The apparatus may also at least partially cause a search based at least in part on the entity identifier of the profile index of the data structure, provided that each of the data structures is accessed to provide a search result. You are allowed to specify at least the profile field associated with the control field. The apparatus is further caused to indicate an access right to the requested content for the entity identifier. The data structure further includes a profile field and an access control field.

別の実施形態によると、装置は、エンティティ識別子および要求されるコンテンツを指定するクエリを受信するための手段を備える。該装置はまた、少なくとも部分的に、データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせる手段を素なる。ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定する。該装置はさらに、エンティティ識別子に対して、要求されたコンテンツへのアクセス権を示すための手段を備える。データ構造はさらに、プロファイルフィールドおよびアクセス制御フィールドを含む。   According to another embodiment, the apparatus comprises means for receiving a query specifying an entity identifier and the requested content. The apparatus also comprises means for causing, at least in part, a search based at least in part on the entity identifier of the profile index of the data structure. However, each of the data structures specifies at least a profile field associated with an access control field to provide a search result. The apparatus further comprises means for indicating to the entity identifier an access right to the requested content. The data structure further includes a profile field and an access control field.

本発明のさらなる他の側面、特性、および利点は、単に、本発明を実行するために企図される最良の形態を含む、いくつかの特定の実施形態および実装を例示することにより、以下の詳細な説明から容易に明らかとなる。本発明はまた、他のおよび異なる実施形態が可能であり、かつそのいくつかの詳細は、全て本発明の精神および範囲から逸脱することなく、種々の明らかな点において修正することができる。したがって、図面および説明は、事実上、制限としてではなく、例示として見なされるものとする。   Still other aspects, features, and advantages of the present invention will be described in detail below, merely by illustrating some specific embodiments and implementations, including the best mode contemplated for carrying out the invention. It will be readily apparent from the explanation. The invention is also capable of other and different embodiments, and its several details are capable of modifications in various obvious respects, all without departing from the spirit and scope of the invention. Accordingly, the drawings and descriptions are to be regarded as illustrative in nature and not as restrictive.

本発明の実施形態を、限定する意図ではなく例示の目的のために、添付図面を用いて説明する。
一実施形態に従う、スケーラブルなデータ構造を利用することが可能なシステムの図である。 一実施形態に従う、分散インデックスエンジン(Distributed Index Engine)の構成要素を示す図である。 一実施形態に従う、分散キー値ストア(Distributed Key Value Store)の構成要素を示す図である。 一実施形態に従う、スケーラブルなデータ構造の使用状況を例示する図である。 一実施形態に従う、分散キー値ストアにおいて利用され得る、例示的なデータ構造の図である。 一実施形態に従う、プロファイルを作成およびインデックス化するためのプロセスのフローチャートである。 一実施形態に従う、プロファイルを検索するために、スケーラブルなデータ構造を利用するためのプロセスのフローチャートである。 本発明の実施形態を実装するために使用することができる、ハードウェアの図である。 本発明の実施形態を実装するために使用することができる、チップセットの図である。 本発明の実施形態を実装するために使用することができる、移動端末(例えば、ハンドセット)の図である。
Embodiments of the invention will now be described with reference to the accompanying drawings, for purposes of illustration and not limitation.
FIG. 1 is a diagram of a system that can utilize a scalable data structure, according to one embodiment. FIG. 3 is a diagram illustrating components of a distributed index engine according to one embodiment. FIG. 3 is a diagram illustrating components of a distributed key value store according to one embodiment. FIG. 6 illustrates a usage situation of a scalable data structure according to one embodiment. FIG. 3 is a diagram of an example data structure that may be utilized in a distributed key value store, according to one embodiment. 4 is a flowchart of a process for creating and indexing profiles according to one embodiment. 4 is a flowchart of a process for utilizing a scalable data structure to retrieve a profile, according to one embodiment. FIG. 2 is a hardware diagram that can be used to implement embodiments of the present invention. 1 is a diagram of a chipset that can be used to implement embodiments of the present invention. FIG. FIG. 2 is a diagram of a mobile terminal (eg, handset) that can be used to implement embodiments of the present invention.

いくつかの実施形態の説明Description of some embodiments

ユーザプロファイルを検索するために、スケーラブルなデータ構造を利用するための方法、装置、およびコンピュータプログラムの実施例を開示する。以下の説明において、説明の目的上、本発明の実施形態の完全な理解を提供するために、数々の具体的な詳細が記載される。しかしながら、本発明の実施形態は、これらの具体的な詳細を伴うことなく、または同じような構成を用いて実施され得ることが、当業者には明白である。他の例において、よく知られる構造およびデバイスは、本発明の実施形態を不必要に不明瞭にすることを回避するために、ブロック図形態で示される。   Embodiments of methods, apparatus, and computer programs for utilizing scalable data structures to retrieve user profiles are disclosed. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of embodiments of the present invention. However, it will be apparent to those skilled in the art that embodiments of the present invention may be practiced without these specific details or with similar configurations. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring embodiments of the present invention.

図1Aは、一実施形態に従う、スケーラブルなデータ構造を利用することが可能なシステムの図である。ネットワークサービス(特に、ソーシャルネットワーキングサービス)に対する需要の増加とともに、例えば、ユーザ連絡先データ、プロファイルデータ、およびユーザの接続データのアクセスを適切に管理する必要性は、最重要な懸念事項である。ソーシャルネットワークサービスの不可欠な部分として、これらのデータの連続的な検索および更新がある。これらの検索および読出機能は、必然的に、ますます大きなデータベースをもたらしている。データベースのサイズ、効率性、および待ち時間は、どのようにデータが記憶されるかに基づいて制限され得ることに留意されたい。   FIG. 1A is a diagram of a system that can utilize a scalable data structure, according to one embodiment. With increasing demand for network services (especially social networking services), for example, the need to properly manage access to user contact data, profile data, and user connection data is a top concern. An integral part of social network services is the continuous search and update of these data. These search and read functions inevitably result in increasingly larger databases. Note that the size, efficiency, and latency of the database can be limited based on how the data is stored.

この問題に対処するために、図1のシステム100は、スケーラブルなデータ構造を利用する能力を導入する。データ構造は、人物、企業、組織、グループ等といった、1つ以上のエンティティに関する情報を記憶してもよい。ある実施形態において、データ構造は、アクセス制御フィールド、プロファイル識別子、プロファイルデータに関連付けられる1つ以上のフィールド(例えば、アドレスデータ、電子メールデータ、電話番号データ等といった連絡先情報、名前データ、他の識別子、友人データ、コメントデータといったプロファイルに関連付けられる他のデータ、エンティティに関する他のデータ等)、またはこれらの組み合わせを含んでもよい。さらに、他のデータが利用されてもよい。例えば、アクセス制御フィールドは、その識別子が、プロファイル識別子や、1つ以上の関連付けられたフィールドへのアクセスを有することを表す、1つ以上のエンティティ識別子や他の識別子に関連付けることができる。ある実施形態において、エンティティ識別子は、ユーザ、グループ、組織等に関連付けられる識別子である。種々の実施形態が、ユーザ識別子に関して説明されているが、本明細書において説明される手法は、グループ識別子、組織識別子、メンバ識別子、被雇用者識別子等を含む、他のエンティティ識別子とともに使用されてもよいことが企図されている。さらに、エンティティ、またはエンティティに属するユーザは、エンティティ識別子、またはエンティティ識別子にリンクされる別の識別子を提供することによって、システム100で認証してもよい。換言すると、ユーザ識別子は、ユーザ識別子のユーザに関連付けられる、複数のエンティティ識別子(例えば、雇用者識別子、グループ識別子等)にリンクされてもよい。一状況下において、ユーザは、通信ネットワーク105上でソーシャルサービスプラットフォーム103と相互作用する、ユーザのユーザ機器(UE)101a〜101nを使用して、サービスを利用することができる。UE101a〜101nの各々は、1つ以上のアプリケーション107を使用することにより、ソーシャルサービスプラットフォーム103を利用して、データ構造を使用したエンティティに関する情報を受信するようにされてもよい。   To address this issue, the system 100 of FIG. 1 introduces the ability to utilize scalable data structures. The data structure may store information about one or more entities, such as a person, company, organization, group, etc. In some embodiments, the data structure may include an access control field, a profile identifier, one or more fields associated with the profile data (eg, contact information such as address data, email data, phone number data, name data, other Other data associated with the profile, such as identifiers, friend data, comment data, other data about the entity, etc.), or combinations thereof. Furthermore, other data may be used. For example, an access control field can be associated with one or more entity identifiers or other identifiers that indicate that the identifier has access to a profile identifier or one or more associated fields. In some embodiments, the entity identifier is an identifier associated with a user, group, organization, etc. Although various embodiments are described in terms of user identifiers, the techniques described herein can be used with other entity identifiers, including group identifiers, organization identifiers, member identifiers, employee identifiers, and the like. It is contemplated that Further, an entity, or a user belonging to an entity, may be authenticated with system 100 by providing an entity identifier or another identifier linked to the entity identifier. In other words, the user identifier may be linked to a plurality of entity identifiers (eg, employer identifier, group identifier, etc.) associated with the user of the user identifier. Under one circumstance, the user can utilize the service using the user's user equipment (UE) 101a-101n that interacts with the social service platform 103 over the communication network 105. Each of the UEs 101a-101n may be adapted to receive information about an entity using a data structure using the social service platform 103 by using one or more applications 107.

さらに、一実施形態において、データ構造のアクセス制御フィールドは、あるバージョンのテキストインデックス化(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で述べる。   Further, in one embodiment, the access control field of the data structure may be indexed using some version of text indexing. In text indexing, a variable (eg, document or profile) may be indexed based on each word contained within a variable that is true. For example, the string variables “this is the first version, not the beta version” are the words “this”, “is”, “the”, “first”, “version”, “not”, and “beta”. including. It also includes some words multiple times, as well as some common words. In one situation, the access control field may be indexed if each word is a user identifier or entity identifier. Further, the data structure may be used to create an inverted index. An inverted index is an index data structure that can store a mapping from content (eg, words or numbers stored with a user profile) to the location of the content in a database file, document, document set, etc. In some circumstances, for each entity identifier, there are several lines that define different visibility into the location of data associated with the user or entity profile. In addition, other indexes may be utilized instead of or in addition to the reverse index to index the data structure. For example, a hash table data structure or a tree data structure such as a B-tree index may be used. A B-tree is a tree data structure that is similar to a binary search tree, but also has the ability to have more than one path branching from a node. A B-tree index may include the first record of a segment of the database. As such, the B-tree index can be used to determine which data structure of the database segment to search. In addition, a hash table may be utilized to map identifiers or keys (eg, names) to values (eg, numbers). The value can then be indexed using a hash to retrieve the key. Further exemplary implementation details of hash indexing are described in FIG. 1C.

さらに、サービスプラットフォーム109は、ソーシャルサービスプラットフォーム103と規定通りに相互作用してもよい。サービスプラットフォーム109は、ソーシャルサービス、メッセージングサービス、保険サービス、小売サービス、音楽サービス、またはソーシャルサービスプラットフォーム103に記憶されるデータを利用し得る他の同様のサービスを提供してもよい。例えば、サービスのうちの一部は、1人以上のユーザのプロファイルデータにアクセスするために、ソーシャルサービスプラットフォーム103にアクセスし、その情報を、ユーザのそれぞれのUE101上のアプリケーション107を利用して、サービスプラットフォーム109の1人以上のユーザに提供してもよい。さらに、サービスプラットフォーム109の1つ以上のサービスは、ソーシャルサービスプラットフォーム103を使用して記憶されるプロファイル情報を有する、エンティティであってもよい。   Further, the service platform 109 may interact with the social service platform 103 as prescribed. Service platform 109 may provide a social service, messaging service, insurance service, retail service, music service, or other similar service that may utilize data stored in social service platform 103. For example, some of the services may access the social service platform 103 to access profile data for one or more users, and use that information for each user's UE 101 application 107. It may be provided to one or more users of the service platform 109. Further, one or more services of service platform 109 may be an entity having profile information stored using social service platform 103.

ソーシャルネットワーキングアプリケーション107を利用するサービスまたはユーザは、ソーシャルサービスプラットフォーム103に要求を送信することによって、プロファイルを作成、管理、更新、検索、または読み出してもよい。ソーシャルサービスプラットフォーム103は、要求を受信すべく、ソーシャルアプリケーションプログラミングインターフェース(API)111を利用してもよい。ある実施形態において、ソーシャルAPI 111は、1つ以上のプラットフォーム(例えば、サーバ、コンピュータ、電子機械等)上で実装され、レプレセンテーショナル・ステイト・トランスファ(REST)、SOAP、拡張可能なメッセージングおよびプレゼンスプロトコル(XMPP)、JavaScript API、他の類似のAPI、またはこれらの組み合わせを利用してもよい。ある実施形態において、ユーザは、XMPPを介してサービスプラットフォーム109上のサービスに連絡し、サービスプラットフォーム109は、UE101とソーシャルサービスプラットフォーム103との間の仲介として機能する。   A service or user utilizing the social networking application 107 may create, manage, update, search, or retrieve a profile by sending a request to the social service platform 103. The social service platform 103 may utilize a social application programming interface (API) 111 to receive the request. In certain embodiments, the social API 111 is implemented on one or more platforms (eg, servers, computers, electronic machines, etc.), and includes representational state transfer (REST), SOAP, extensible messaging, and Presence Protocol (XMPP), JavaScript API, other similar APIs, or combinations thereof may be utilized. In an embodiment, the user contacts a service on the service platform 109 via XMPP, which serves as an intermediary between the UE 101 and the social service platform 103.

例として、システム100の通信ネットワーク105は、データネットワーク(図示せず)、ワイヤレスネットワーク(図示せず)、テレフォニーネットワーク(図示せず)、または任意のこれらの組み合わせといった、1つ以上のネットワークを含む。データネットワークは、任意のローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、公的データネットワーク(例えば、インターネット)、または商業的に所有される、専用パケット交換ネットワーク、例えば、専用ケーブルもしくは光ファイバネットワークといった、任意の他の好適なパケット交換ネットワークであってもよい。加えて、ワイヤレスネットワークは、例えば、セルラネットワークであってもよく、EDGE、汎用パケット無線サービス(GPRS)、移動通信用グローバルシステム(GSM)、インターネットプロトコルマルチメディアサブシステム(IMS)、ユニバーサル移動通信システム(UMTS)等、ならびに任意の他の好適なワイヤレス媒体、例えば、マイクロ波アクセスの国際的相互運用性(WiMAX)、長期展開(LTE)ネットワーク、符号分割多重アクセス(CDMA)、広帯域符合分割多重アクセス(WCDMA)、ワイヤレスフィデリティ(WiFi)、衛星、移動アドホックネットワーク(MANET)および同じようなもの含む、種々の技術を採用してもよい。   By way of example, communication network 105 of system 100 includes one or more networks, such as a data network (not shown), a wireless network (not shown), a telephony network (not shown), or any combination thereof. . The data network can be any local area network (LAN), metropolitan area network (MAN), wide area network (WAN), public data network (eg, the Internet), or a commercially owned dedicated packet switched network, It may be any other suitable packet switched network such as a dedicated cable or fiber optic network. In addition, the wireless network may be a cellular network, for example, EDGE, General Packet Radio Service (GPRS), Global System for Mobile Communications (GSM), Internet Protocol Multimedia Subsystem (IMS), Universal Mobile Communication System (UMTS), etc., as well as any other suitable wireless medium, eg, microwave access international interoperability (WiMAX), long term deployment (LTE) network, code division multiple access (CDMA), wideband code division multiple access Various technologies may be employed, including (WCDMA), wireless fidelity (WiFi), satellite, mobile ad hoc network (MANET), and the like.

UE101は、移動ハンドセット、局、ユニット、デバイス、マルチメディアコンピュータ、マルチメディアタブレット、インターネットノード、コミュニケータ、デスクトップコンピュータ、ラップトップコンピュータ、個人用デジタル補助装置(PDA)、もしくはこれらの任意の組み合わせを含む、任意のタイプの移動端末、固定端末、または携帯型端末である。UE101が、ユーザへの任意のタイプのインターフェース(「ウェアラブル」回路等といった)をサポートすることができるということもまた企図される。   UE 101 includes a mobile handset, station, unit, device, multimedia computer, multimedia tablet, Internet node, communicator, desktop computer, laptop computer, personal digital assistant (PDA), or any combination thereof. , Any type of mobile terminal, fixed terminal, or portable terminal. It is also contemplated that the UE 101 can support any type of interface to the user (such as a “wearable” circuit).

例として、UE101、サービスプラットフォーム109、およびソーシャルサービスプラットフォーム103は、よく知られる、新たな、または依然として開発中のプロトコルを使用して、相互に、および通信ネットワーク105の他の構成要素と通信する。ここで、プロトコルは、通信ネットワーク105内のネットワークノードが、どのように、通信リンク上で送信される情報に基づいて相互に相互作用するかを定義する、一組の規則を含む。プロトコルは、種々のタイプの物理信号を生成および受信することから、それらの信号を、それらの信号によって示される情報の形式へ転送するためのリンクを選択すること、どのコンピュータシステム上で実行するソフトウェアアプリケーションが、情報を送信または受信するかを識別することまで、各ノードにおける様々なレイヤーの動作で有効である。ネットワーク上で情報を交換するための様々なプロトコルのレイヤーの概念は、開放型システム間相互接続(OSI)参照モデルにおいて説明される。   By way of example, UE 101, service platform 109, and social service platform 103 communicate with each other and with other components of communication network 105 using well-known, new or still developing protocols. Here, the protocol includes a set of rules that define how network nodes in the communication network 105 interact with each other based on information transmitted over the communication link. The protocol generates and receives various types of physical signals, selects links to transfer those signals to the form of information indicated by those signals, software that runs on any computer system Until the application identifies whether to send or receive information, it is valid at various layers of operation at each node. The concept of the various protocol layers for exchanging information over the network is described in the Open Systems Interconnection (OSI) reference model.

ネットワークノード間の通信は、典型的に、個別のデータパケットを交換することによって、達成される。各パケットは、典型的に、(1)特定のプロトコルに関連付けられるヘッダ情報、および(2)ヘッダ情報に続き、かつその特定のプロトコルとは独立して処理され得る情報を格納する、ペイロード情報を含む。一部のプロトコルにおいて、パケットは、(3)ペイロードに続き、かつペイロード情報の終了を示す、トレイラ情報を含む。ヘッダは、パケットのソース、その送り先、ペイロードの長さ、およびプロトコルによって使用される他の特性といった、情報を含む。しばしば、特定のプロトコルに対する、ペイロードにおけるデータは、異なる、より高い層のOSI参照モデルと関連付けられる、異なるプロトコルに対する、ヘッダおよびペイロードを含む。特定のプロトコルに対するヘッダは、典型的に、そのペイロードに格納される次のプロトコルに対するタイプを示す。より高い層のプロトコルは、より低い層のプロトコルにカプセル化されると言われる。インターネットといった複数の異種ネットワークを横断するパケットに含まれるヘッダは、典型的に、OSI参照モデルによって定義されるように、物理(層1)ヘッダ、データリンク(層2)ヘッダ、インターネットワーク(層3)ヘッダ、および輸送(層4)ヘッダ、ならびに種々のアプリケーションヘッダ(層5、層6、および層7)を含む。   Communication between network nodes is typically accomplished by exchanging individual data packets. Each packet typically includes payload information that stores (1) header information associated with a particular protocol, and (2) information that follows the header information and can be processed independently of that particular protocol. Including. In some protocols, the packet includes trailer information that (3) follows the payload and indicates the end of the payload information. The header contains information such as the source of the packet, its destination, the length of the payload, and other characteristics used by the protocol. Often, data in the payload for a particular protocol includes headers and payloads for different protocols associated with different, higher layer OSI reference models. The header for a particular protocol typically indicates the type for the next protocol stored in the payload. Higher layer protocols are said to be encapsulated in lower layer protocols. Headers included in packets traversing multiple disparate networks such as the Internet are typically physical (layer 1) headers, data link (layer 2) headers, internetworks (layer 3), as defined by the OSI reference model. ) Header, and transport (layer 4) header, and various application headers (layer 5, layer 6, and layer 7).

一実施形態において、ソーシャルネットワーキングアプリケーション107、およびソーシャルサービスプラットフォーム103は、クライアント・サーバモデルに従って相互作用する。クライアント・サーバモデルに従って、クライアントプロセスは、要求を含むメッセージをサーバプロセスに送信し、サーバプロセスは、サービスを提供することによって応答する。サーバプロセスはまた、クライアントプロセスへの応答とともに、メッセージを返してもよい。しばしば、クライアントプロセスおよびサーバプロセスは、ホストと呼ばれる、異なるコンピュータデバイス上で実行し、ネットワーク通信のための1つ以上のプロトコルを使用して、ネットワークを介して通信する。「サーバ」という用語は、サービスを提供するプロセス、またはそのプロセスが動作するホストコンピュータを指すために従来使用される。同様に、「クライアント」という用語は、要求を行うプロセス、またはそのプロセスが動作するホストコンピュータを指すために従来使用される。本明細書において使用される際、「クライアント」および「サーバ」という用語は、別途文脈から明白でない限り、ホストコンピュータというよりもむしろ、プロセスを指す。加えて、サーバによって遂行されるプロセスは、とりわけ信頼性、スケーラビリティ、および冗長性を含む理由から、複数のホスト(ティアと呼ばれる場合もある)上で複数のプロセスとして実行させるように、細分化することができる。   In one embodiment, social networking application 107 and social service platform 103 interact according to a client-server model. According to the client-server model, the client process sends a message containing the request to the server process, which responds by providing a service. The server process may also return a message with a response to the client process. Often, client and server processes run on different computing devices, called hosts, and communicate over a network using one or more protocols for network communication. The term “server” is conventionally used to refer to a process that provides a service or a host computer on which the process operates. Similarly, the term “client” is conventionally used to refer to the process making the request or the host computer on which the process operates. As used herein, the terms “client” and “server” refer to processes, rather than host computers, unless otherwise apparent from the context. In addition, the processes performed by the server are subdivided to run as multiple processes on multiple hosts (sometimes called tiers), among other reasons including reliability, scalability, and redundancy be able to.

一状況下において、ソーシャルAPI 111は、プロファイルを作成するために必要とされる情報を収集し、分散キー値ストア113を利用してプロファイルを記憶してもよい。種々の実施形態が、分散キー値ストア113に関して説明されているが、本明細書において説明される手法は、他のデータベース(例えば、記憶デバイスが全て共通のプロセッサに取説されている、データベース管理システムの制御下の分散データベース、または非分散データベース)とともに使用されてもよいことが企図されている。プロファイルを作成するために必要とされる情報は、認証情報(例えば、ユーザ名およびパスワード)、ユーザ識別子、プロファイルに関連付けられるサービス、1つ以上のプロファイルフィールドに対するプロファイルデータ、または同じようなもののうちの1つ以上を含んでもよい。次いで、ソーシャルAPI 111および/または分散キー値ストア113は、分散インデックスエンジン115に、プロファイルの作成を通知してもよい。   Under one circumstance, the social API 111 may collect the information needed to create a profile and use the distributed key value store 113 to store the profile. Although various embodiments have been described with respect to the distributed key value store 113, the techniques described herein can be used for other databases (eg, database management where all storage devices are addressed to a common processor). It is contemplated that it may be used with distributed or non-distributed databases under the control of the system. The information required to create a profile includes authentication information (eg, username and password), user identifier, service associated with the profile, profile data for one or more profile fields, or the like One or more may be included. The social API 111 and / or distributed key value store 113 may then notify the distributed index engine 115 of the creation of the profile.

分散インデックスエンジン115は、プロファイルにおける情報を、プロファイルに関連付けられ得るデータ構造のインデックスに追加してもよい。インデックス化されると、プロファイルは、データ構造を介してアクセス制御を実装しつつ、有利にも検索され得るようになる。ある状況下において、プロファイル全体がインデックス化され、他の状況においては、プロファイルのある部分のみがインデックス化される(例えば、テキスト部分)。しかしながら、データ構造は、このインデックス化されていない情報に対する、場所表示情報を含んでもよい。先に述べたように、インデックスは、プロファイルに設定されるパラメータ(例えば、関連付けられたサービス、連絡先リスト、プロファイルに関連付けられる領域またはアドレスといったエリア等)に基づいて、プロファイルに関連付けられてもよい。インデックスは、データ構造の1つ以上のインスタンスを含んでもよい。ソーシャルサービスプラットフォーム103によって利用され得るデータ構造の例示的なインデックスを、図2に詳述する。さらに、インデックスに関連付けられるデータフィールドを更新するために、分散インデックスエンジン115が利用されてもよい。   The distributed index engine 115 may add information in the profile to an index of a data structure that can be associated with the profile. Once indexed, the profile can be advantageously retrieved while implementing access control through the data structure. Under certain circumstances, the entire profile is indexed, and in other situations only certain parts of the profile are indexed (eg text portions). However, the data structure may include location indication information for this non-indexed information. As mentioned above, an index may be associated with a profile based on parameters set in the profile (eg, areas such as associated services, contact lists, areas or addresses associated with the profile, etc.). . An index may include one or more instances of a data structure. An exemplary index of data structures that may be utilized by social service platform 103 is detailed in FIG. Further, the distributed index engine 115 may be utilized to update data fields associated with the index.

図1Bは、一実施形態に従う、分散インデックスエンジン115の構成要素の図である。例として、分散インデックスエンジン115は、ソーシャルサービスプラットフォーム103のユーザに、サービスのインデックス化および検索を提供するための1つ以上の構成要素を含む。これらの構成要素の機能は、1つ以上の構成要素と組み合わされる他の構成要素や、同じような機能性を有する他の構成要素によって遂行されてもよい。本実施形態において、分散インデックスエンジン115は、1つ以上のインデックスエンジン120a〜120nを含み、これらの各々は、クエリに基づいて、情報をインデックス化および/または検索、ならびに読み出すために利用されてもよい。各インデックスエンジン120は、API 121と、データ構造のインデックスを記憶、検索、および利用するためのメモリと、インデックスを生成、検索、および更新するためのインデックス化モジュール125と、分散キー値ストア113から情報を読み出すために利用される記憶インターフェース127と、を備えてもよい。   FIG. 1B is a diagram of components of a distributed index engine 115, according to one embodiment. By way of example, the distributed index engine 115 includes one or more components for providing users of the social service platform 103 with service indexing and search. The function of these components may be performed by other components combined with one or more components or other components having similar functionality. In this embodiment, distributed index engine 115 includes one or more index engines 120a-120n, each of which may be utilized to index and / or retrieve and retrieve information based on a query. Good. Each index engine 120 includes an API 121, a memory for storing, retrieving, and using data structure indexes, an indexing module 125 for generating, retrieving, and updating indexes, and a distributed key value store 113. A storage interface 127 used to read out information.

ある実施形態において、分散インデックスエンジン115は、コンピューティングクラウドを利用して実装されてもよい。ここで分散インデックスエンジン115は、異なる地理的場所に対応する、インデックスエンジン120を備えてもよい。インデックスエンジン120は、例えば、ソーシャルサービスプラットフォーム103の外側のクライアントやサービスと相互接続し得る、ソーシャルAPI 111と通信するために使用される、API 121を備えてもよい。ある状況下において、API 121は、ソーシャルAPI 111を使用することなく、クライアントおよびサービスと直接通信してもよく、またはAPI 121は、ソーシャルAPI 111を備えてもよい。   In certain embodiments, the distributed index engine 115 may be implemented utilizing a computing cloud. Here, the distributed index engine 115 may comprise an index engine 120 corresponding to different geographical locations. The index engine 120 may comprise an API 121 that is used to communicate with a social API 111 that may be interconnected with clients and services outside the social service platform 103, for example. Under certain circumstances, the API 121 may communicate directly with clients and services without using the social API 111, or the API 121 may comprise the social API 111.

ある状況において、記憶インターフェース127は、分散キー値ストア113に作成および記憶されたプロファイルをインデックス化するための要求を受信するように、分散キー値ストア113と相互作用してもよい。図4のプロセスにおいてさらに詳述されるように、インデックスエンジン120がプロファイルをインデックス化する要求を受信する時、インデックスエンジン120のインデックス化モジュール125は、プロファイルに対する1つ以上のデータ構造をインスタンス化し、メモリ123において、関連付けられたインデックスに、データ構造インスタンスを追加してもよい。先で言及されるように、データ構造は、アクセス制御フィールド、およびデータフィールドを備えてもよい。ある実施形態において、データ構造がインデックスに追加されると、インスタンス化されたデータ構造は、インデックスの複製を更新するために、他のインデックスエンジンへと送信される。2つ以上のインデックスが存在するため、特定のインデックスエンジン120aがオーバーロードまたは故障する場合、ロードは、他のインデックスエンジン(例えば、インデックスエンジン120n)に分散されてもよい。   In certain circumstances, the storage interface 127 may interact with the distributed key value store 113 to receive requests to index the profiles created and stored in the distributed key value store 113. As further detailed in the process of FIG. 4, when index engine 120 receives a request to index a profile, indexing module 125 of index engine 120 instantiates one or more data structures for the profile, and In the memory 123, a data structure instance may be added to the associated index. As mentioned above, the data structure may comprise an access control field and a data field. In some embodiments, when a data structure is added to the index, the instantiated data structure is sent to other index engines to update the index replicas. If there is more than one index and a particular index engine 120a overloads or fails, the load may be distributed to other index engines (eg, index engine 120n).

さらに、記憶インターフェース127は、1つ以上のインターフェースを使用して、分散キー値ストア113と通信してもよい。例えば、記憶インターフェース127は、特定のプロファイルを使用して、インデックスを生成するために、新たなプロファイルに関するデータを受信し、別のインターフェースを利用して、記憶された情報を読み出してもよい。例えば、記憶された情報を読み出すために、記憶インターフェース127は、get、put、delete、およびscanコマンドを利用する、単純なインターフェースを使用してもよい。代替として、または加えて、記憶インターフェース127は、分散キー値ストア113と通信するように、別のAPIを利用してもよく、これは、通信を単純なインターフェースに変換してもよい。   Further, the storage interface 127 may communicate with the distributed key value store 113 using one or more interfaces. For example, the storage interface 127 may receive data relating to the new profile and use another interface to retrieve the stored information in order to generate an index using a particular profile. For example, to retrieve stored information, the storage interface 127 may use a simple interface that utilizes the get, put, delete, and scan commands. Alternatively or additionally, the storage interface 127 may utilize another API to communicate with the distributed key value store 113, which may convert the communication into a simple interface.

図1Cは、一実施形態に従う、分散キー値ストア113の構成要素の図である。例として、キー値ストア113は、インデックス化、記憶、読出、および検索の対象となるデータの記憶手段を提供するための、1つ以上の構成要素を含む。このため、新たなプロファイルは、分散キー値ストア113に記憶されてもよい。これらの構成要素の機能は、1つ以上の構成要素において組み合わされていてもよく、または同じような機能性を有する他の構成要素によって遂行されてもよい。他の形態のデータベースが、分散キー値ストア113の代わりに、またはそれに加えて、利用されてもよい。本実施形態において、分散キー値ストア113は、サーバ143、およびデータベース145a〜145nと通信するために使用されうるクライアントライブラリ141を含む。   FIG. 1C is a diagram of components of a distributed key value store 113, according to one embodiment. By way of example, the key value store 113 includes one or more components for providing a means for storing data to be indexed, stored, read, and searched. For this reason, the new profile may be stored in the distributed key value store 113. The functions of these components may be combined in one or more components, or may be performed by other components having similar functionality. Other forms of databases may be utilized instead of or in addition to the distributed key value store 113. In this embodiment, the distributed key value store 113 includes a server 143 and a client library 141 that can be used to communicate with the databases 145a-145n.

インデックスエンジン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に属するかを含む、ルックアップテーブルを備えてもよい。   The storage interface 127 of the index engines 120a-120n and the social API 111 may communicate with the distributed key value store 113 using the client library 141. In some embodiments, the index engines 120 a-120 n and the social API 111 may be considered clients that receive database services from the distributed key value store 113. The client library 141 may include an interface that can determine which server 143 to communicate with in order to read content from the database 145. In some embodiments, the database 145 is stored utilizing keys and value mechanisms that allow storage using the keys. A portion of each database (eg, portions A-I) can be linked to a key. In one embodiment, the key is hashed to determine which part the key is linked to. The key may be hashed using, for example, a ring method. Using a ring, each key and portion may be hashed to a primary location (eg, based on a key having an identifier hashed to a number k), as well as one or more backup locations. The backup location may be the location associated with the next server or host associated with the hash. The client library 141 determines which server 143 uses the key hash to read and write information. The client library 141 and the server 143 may each include a lookup table that includes which part belongs to which server 143.

ある実施形態において、部分(例えば、部分A147a〜147c)は、複数のサーバを使用して、複数のデータベース145上に記憶されてもよい。ある実装において、冗長性、フェイルオーバのために、および待ち時間を低減するために、部分は、n個(例えば、複製=3)のサーバ143およびデータベース145上に複製されてもよい。さらに、その部分は、クライアントライブラリ141によって、同時に書き込みおよび読み取られてもよい。データベース145から読み取る時、クライアントライブラリは、いずれかの一貫性問題(例えば、部分147aが部分147bと一致しない)があるかどうかを判断してもよい。さらに、ある実施形態において、例示的な記憶スキームは、書き込みまたは読み取りが遂行される時、少なくともある数(例えば、必要とされる書き込み=2、必要とされる読み取り=2等)の部分が、書き込みまたは読み取りに成功することが必要であることを必要とし得る。これは、冗長性およびクオラムの一貫性を可能にする。データベース145aが故障する、またはそうでなければ不能となる場合、データベース145aに関連付けられる部分147aは、複製された部分147b、147cを有するサーバ143によって、それが含むべきコンテンツで後で更新されてもよい。   In certain embodiments, portions (eg, portions A 147a-147c) may be stored on multiple databases 145 using multiple servers. In some implementations, the portions may be replicated on n (eg, replication = 3) servers 143 and databases 145 for redundancy, failover, and to reduce latency. Further, the portion may be simultaneously written and read by the client library 141. When reading from database 145, the client library may determine whether there are any consistency issues (eg, portion 147a does not match portion 147b). Further, in certain embodiments, the exemplary storage scheme is such that when a write or read is performed, at least a certain number of portions (eg, required write = 2, required read = 2, etc.) are: It may be necessary to write or read successfully. This allows for redundancy and quorum consistency. If the database 145a fails or is otherwise disabled, the portion 147a associated with the database 145a may be later updated by the server 143 with the replicated portions 147b, 147c with the content it should contain. Good.

ソーシャルAPI 111は、新たなプロファイルが、分散キー値ストア113に記憶されることを必要とし得る。新たなプロファイルは、新たなプロファイルに関連付けられるアカウント識別子に基づいて、キーを割り当てられてもよい。次いで、キーは、新たなプロファイルを格納するための部分(例えば、部分A147)を判断するように、ハッシュ化されてもよい。次に、プロファイルは、一次データベース、ならびにバックアップデータベースに記憶される。プロファイルは、キーに関連付けられる値と見なされてもよい。後でプロファイルを読み出すために、キーのハッシュを使用して、その部分に関連付けられるサーバからプロファイルを要求してもよい。次いで、キーを利用して、プロファイルに対する部分を検索してもよい。プロファイルが分散キー値ストア113に記憶されると、クライアントライブラリ141は、プロファイルがインデックスに追加されることを、インデックスエンジン120に通知してもよい。   Social API 111 may require a new profile to be stored in distributed key value store 113. The new profile may be assigned a key based on the account identifier associated with the new profile. The key may then be hashed to determine the part (eg, part A147) for storing the new profile. The profile is then stored in the primary database as well as the backup database. A profile may be considered a value associated with a key. For later retrieval of the profile, the hash of the key may be used to request the profile from the server associated with that part. The key may then be used to search for the part for the profile. Once the profile is stored in the distributed key value store 113, the client library 141 may notify the index engine 120 that the profile is added to the index.

インデックスが作成され、プロファイルが分散キー値ストア113に記憶されると、ソーシャルAPI 111は、UE101やサービスからクエリを受信することができるが、このクエリは、インデックスエンジン120に、ユーザ識別子および要求されたコンテンツに基づいて、情報を検索および読出させるためのものである。インデックスエンジン120は、クエリに関連付けられるインデックスを読み出し、アクセス制御フィールドにおいてユーザ識別子に対するインデックスを検索することができる。検索は、テキストベースの検索であってもよい。さらに、要求されたコンテンツは、クエリが関心対象とするプロファイルの1つ以上のプロファイル識別子、またはクエリが関心対象とするコンテンツ(例えば、基本プロファイル情報)のタイプを指定してもよい。分散インデックスエンジン115は、要求されたコンテンツをソーシャルAPI 111に返す。コンテンツを読み出すためのプロセスを、図2および5のプロセスにおいてさらに詳述する。   Once the index is created and the profile is stored in the distributed key value store 113, the social API 111 can receive a query from the UE 101 or service, but this query is sent to the index engine 120 and the user identifier and requested. It is for searching and reading information based on the contents. The index engine 120 can retrieve the index associated with the query and retrieve the index for the user identifier in the access control field. The search may be a text-based search. Further, the requested content may specify one or more profile identifiers of the profile that the query is interested in, or the type of content that the query is interested in (eg, basic profile information). The distributed index engine 115 returns the requested content to the social API 111. The process for reading content is further detailed in the processes of FIGS.

図2は、一実施形態に従う、スケーラブルなデータ構造200の使用状況を例示する図である。データ構造は、アクセス制御フィールド201や、プロファイル識別子(プロファイルID)203、基本プロファイル205、拡張プロファイル207a〜207n、および連絡先情報209といったデータフィールドとを備えてもよい。先に述べたように、アクセス制御フィールドは、1つ以上のユーザ識別子(例えば、ユーザ識別子1〜5、ユニバーサルユーザ識別子*等)に関連付けられてもよい。ある実施形態において、データ構造は、アクセス制御フィールド201におけるエンティティ識別子(例えば、ユーザ識別子)が、一度だけ、プロファイルID203に関連付けられることを可能にする。ある状況において、プロファイルID203は、コンテンツを、ユーザまたはエンティティプロファイルに関連付けるために使用することができる、グローバル一意識別子である。加えて、ユーザ識別子は、クエリを、プロファイルを有する場合がある、または有しない場合がある、特定のユーザに関連付ける、識別子であってもよい。アクセス制御フィールドは、プロファイルに関連付けられるユーザに関して、どのユーザまたはエンティティ識別子が、友人、家族、同僚、知人、一方向フォロワ、被雇用者、メンバ等といった、連絡先または接続と見なされるかに基づいてもよい。ユーザは、ソーシャルネットワーキングアプリケーション107、およびソーシャルAPI 111を介して、これらの接続を入力してもよい。   FIG. 2 is a diagram illustrating usage of a scalable data structure 200 according to one embodiment. The data structure may include an access control field 201, data fields such as a profile identifier (profile ID) 203, a basic profile 205, extended profiles 207a to 207n, and contact information 209. As previously mentioned, the access control field may be associated with one or more user identifiers (eg, user identifiers 1-5, universal user identifier *, etc.). In some embodiments, the data structure allows an entity identifier (eg, user identifier) in the access control field 201 to be associated with the profile ID 203 only once. In some situations, the profile ID 203 is a globally unique identifier that can be used to associate content with a user or entity profile. In addition, a user identifier may be an identifier that associates a query with a particular user that may or may not have a profile. The access control field is based on which user or entity identifier is considered a contact or connection, such as a friend, family, colleague, acquaintance, one-way follower, employee, member, etc., for the user associated with the profile. Also good. A user may enter these connections via social networking application 107 and social 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フィールドを使用してインデックス化されてもよく、それによって、(例えばエンティティ識別子またはユーザ識別子を介して)どのエンティティが、特定のデータ構造列へのアクセスを有するかを判断してもよい。   Multiple levels of access can be provided using the access control field 201. For example, profile ID1 may allow different content access to different user identifiers based on access control rights. In this embodiment, the user identifiers 2, 3, and 4 are permitted to access the basic profile 205, the extended profiles 207a and 207n of the profile ID 1, and the contact information 209. This access may be provided by the status of the group (eg, each is considered a friend). However, the user identifier 5 may only have access to the basic profile 205 and the first extended profile 207 because the user identifier 5 is considered an acquaintance. All users, including guest users, may have access to the basic profile 205 with profile ID1. A user or entity associated with the profile ID 203 may determine these access controls while creating the profile or by updating the profile. In the case of profile ID1, the index engine 120 generates three data structures 211, 213, and 215 (shown as columns) when adding profile ID1 to the index. Each of the data structures 211, 213, 215 may have data in a field marked “DATA”. In some embodiments, this data is searchable. In addition, profile ID 2 may have two data structures 217, 219 associated with it, and profile ID 3 may have only one data structure 221 associated with it, each of which is associated with certain information. It has an access control field that allows access. Under one circumstance, the data structure 221 for profile ID 3 does not contain any information that can be provided to the guest user, but only includes access to the basic profile data to the user identifier 4. In addition, each data structure (represented by a column) may be indexed using an access control 201 field, so that which entity (eg, via an entity identifier or user identifier) can be identified with specific data It may be determined whether to have access to the structure column.

一状況下において、ソーシャルAPI 111は、インデックス上で遂行されるべきクエリを要求するユーザまたはサービスからの要求を受信する。ソーシャルAPI 111は、クエリに関連付けられるべきユーザ識別子を決定するべく、ユーザまたはサービスで認証してもよい。ある実施形態において、サービスまたはユーザは、ゲストとしてログインし、ゲストステータスを受信する。他の実施形態において、ユーザ名およびパスワードは、ユーザ識別子にマップされる。ユーザの認証はまた、別のサービスにパススルーされてもよい。ユーザまたはサービスはまた、クエリにおいて、ユーザまたはサービスが読み出したいコンテンツを指定してもよい。   Under one situation, the social API 111 receives a request from a user or service requesting a query to be performed on the index. Social API 111 may authenticate with a user or service to determine a user identifier to be associated with the query. In some embodiments, the service or user logs in as a guest and receives guest status. In other embodiments, the username and password are mapped to a user identifier. The user's authentication may also be passed through to another service. The user or service may also specify the content that the user or service wants to read in the query.

一実施形態において、ユーザは、ユーザが読み出すことができる全ての情報に対して、検索クエリを開始してもよい。ソーシャル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へのアクセスを有しないからであってもよい。実施形態によっては、クエリを形成するユーザまたはサービスは、クエリが、単純に誰でも持てるアクセス権よりも、ユーザがより高いレベルのアクセス権(例えば、友人アクセス、知人アクセス、同僚アクセス等)を有するプロファイルのみを検索することを要求してもよい。   In one embodiment, the user may initiate a search query for all information that can be read by the user. The social API 111 determines that the user identifier for the query is the user identifier 4. The query is passed to the distributed index engine 115 to initiate a search on the index of the data structure 200. The distributed index engine 115 has the basic identifier 205, the first extended profile 207a, the second extended profile 207n, and the contact information 209, and the basic profile 205 of the profile ID2, the first extension, with the user identifier 4 of the profile ID1 Determine to have access to profile 207a and contact information 209 and basic profile 205 of profile ID3. This data can then be returned as a value to the social API 111 for transmission to the user. In another situation, the user identifier for the query is user identifier 5. Distributed index engine 115 returns information stored in data structures 213 and 219. The reason that the distributed index engine 115 returns this data is that the user identifier has, at best, access to the data structure 213 of profile ID1 and at least guest level access to profile ID2 (access granted to all requesters). This may be because the user does not have access to the profile ID 3. In some embodiments, the user or service that forms the query has a higher level of access (eg, friend access, acquaintance access, colleague access, etc.) that the user has than the access that the query can simply have. It may be required to search only the profile.

ある状況において、要求されたコンテンツは、キーワードといった、1つ以上の検索用語を有していてもよい。このような状況において、プロファイルID203、基本プロファイル205、拡張プロファイル207、および連絡先情報209は、素早く且つ容易に検索可能である。分散インデックスエンジン115は、検索用語に対して、コンテンツフィールド203、205、207、209を検索してもよい。代替として、または加えて、コンテンツフィールド203、205、207、209に関連付けられるデータは、分散キー値ストア113、または他の検索不可能なコンテンツへのポインタ(例えば、キー)を備えてもよい。一部の実施形態において、クエリがアクセスを有するプロファイル情報のみが、検索される。これは、プロファイル情報の読出において、低い待ち時間を可能にする。さらに、この方法は、より多い数の検索および膨大な量のインデックスコンテンツが、検索に含まれることを可能にする。   In certain situations, the requested content may have one or more search terms, such as keywords. In such a situation, the profile ID 203, the basic profile 205, the extended profile 207, and the contact information 209 can be searched quickly and easily. The distributed index engine 115 may search the content fields 203, 205, 207, 209 for the search terms. Alternatively or additionally, the data associated with the content fields 203, 205, 207, 209 may comprise a pointer (eg, key) to the distributed key value store 113 or other non-searchable content. In some embodiments, only the profile information that the query has access to is retrieved. This allows for low latency in reading profile information. Furthermore, this method allows a larger number of searches and a huge amount of index content to be included in the search.

図3は、一実施形態に従う、分散キー値ストアにおいて利用され得る、例示的なデータ構造の図である。さらに、データ構造300の部分は、インデックスで利用され得る。データ構造300は、プロファイルIDまたはアカウントIDに関連付けることができるキー301を指定してもよい。このキー301は、分散キー値ストア113からプロファイルを読み出すために使用することができる。さらに、キー301は、基本プロファイル305、第1の拡張プロファイル307、および他のコンテンツフィールドを含む、値303に関連付けられる。さらに加えて、値は、インデックスに含まれない場合がある情報を備えてもよい。例えば、第3の拡張プロファイル309は、検索することができず、したがって、インデックスに記憶される必要がない、画図データ311を備えてもよい。そのようなものとして、インデックス内の第3の拡張プロファイル309データは、コンテンツが分散キー値ストア113において利用可能であることを、分散インデックスエンジン115に通知する、フラグまたは他のデータを備えてもよい。   FIG. 3 is a diagram of an example data structure that may be utilized in a distributed key value store, according to one embodiment. Further, portions of data structure 300 can be utilized in an index. Data structure 300 may specify a key 301 that can be associated with a profile ID or account ID. This key 301 can be used to read a profile from the distributed key value store 113. In addition, the key 301 is associated with a value 303 that includes a basic profile 305, a first extended profile 307, and other content fields. In addition, the value may comprise information that may not be included in the index. For example, the third extended profile 309 may comprise drawing data 311 that cannot be searched and therefore does not need to be stored in an index. As such, the third extended profile 309 data in the index may comprise a flag or other data that notifies the distributed index engine 115 that the content is available in the distributed key value store 113. Good.

図4は、一実施形態に従う、プロファイルを作成およびインデックス化するためのプロセスのフローチャートである。一実施形態において、ソーシャルAPI 111、および分散インデックスエンジン115は、プロセス400を遂行し、例えば、図7に示されるようなプロセッサおよびメモリを含むチップセットにおいて実装される。そのようなものとして、ソーシャルAPI 111および/または分散インデックスエンジン115は、プロセス400、および本明細書において説明される他のプロセスのステップを遂行するための手段を提供してもよい。ステップ401において、ソーシャルAPI 111は、クライアント(例えば、サービス、ユーザ、エンティティ等)から、プロファイルを作成するための要求を受信する。次いで、ソーシャルAPI 111は、認証証明を要求することによって、ユーザが、プロファイルをアカウントに関連付けるためのユーザの認証を提供することを要求してもよい。次に、ユーザが証明を送信してもよく、ソーシャルAPI 111が証明を受信してもよく、ソーシャルAPI 111がプロファイルのユーザ作成者の認証を実証してもよい(ステップ403)。   FIG. 4 is a flowchart of a process for creating and indexing profiles according to one embodiment. In one embodiment, the social API 111 and the distributed index engine 115 perform the process 400 and are implemented, for example, in a chipset that includes a processor and memory as shown in FIG. As such, social API 111 and / or distributed index engine 115 may provide a means for performing process 400 and other process steps described herein. In step 401, the social API 111 receives a request to create a profile from a client (eg, service, user, entity, etc.). The social API 111 may then request that the user provide authentication of the user to associate the profile with the account by requesting authentication credentials. Next, the user may send a proof, the social API 111 may receive the proof, and the social API 111 may demonstrate authentication of the user creator of the profile (step 403).

次いで、ステップ405において、ソーシャルAPIは、アクセス制御フィールド、ユーザ識別子、および他のデータフィールドを備えてもよい、プロファイルを作成してもよい。ソーシャルAPI 111は、何の情報をプロファイルに記憶するかに関する追加情報に対して、ユーザにクエリを行ってもよい。ユーザは、データフィールド、および他のカスタマイズ可能なデータを、プロファイルに入力してもよい。クエリの複数の繰り返しが、プロファイルを完成させるために必要であり得る。次いで、ステップ407において、図1Bおよび1Cの説明において詳述されるように、ソーシャルAPI 111は、分散キー値ストア113にプロファイルを記憶してもよい。   Then, in step 405, the social API may create a profile that may comprise an access control field, a user identifier, and other data fields. Social API 111 may query the user for additional information regarding what information to store in the profile. The user may enter data fields and other customizable data into the profile. Multiple iterations of the query may be necessary to complete the profile. Then, in step 407, the social API 111 may store the profile in the distributed key value store 113, as detailed in the description of FIGS. 1B and 1C.

プロファイルが記憶されると、ソーシャルAPI 111は、少なくとも部分的に、分散インデックスエンジン115に、インデックス構造中にプロファイルをインデックス化させてもよい(ステップ409)。分散インデックスエンジン115は、プロファイルをインデックスに追加してもよい。プロファイルは、1つ以上のユーザ入力に基づいて、プロファイルの関連(例えば、場所、関連付けられたサービス、連絡先接続等)に基づいて、または他のデータに基づいて、インデックスに関連付けることができる。次いで、プロファイルに関連付けられる1つ以上のフィールドが、ユーザによって設定され得るアクセス制御特性に基づいて、インデックス化される。アクセス制御フィールド201は、あるユーザが何の情報を検索および/または読み出すことができるかを区別するために利用されてもよい。新たなデータ構造が、各区別されたグループに対してインスタンス化されてもよい。ある実施形態において、ユーザは、(例えばプロファイルID203に基づいて、)所与のプロファイルに対するインスタンス化されたデータ構造のうちの多くとも1つに配置される。加えて、インスタンス化されたデータ構造(例えば、データ構造215)は、一般公衆(例えば、ゲスト、全てのユーザ等)にアクセス可能であってもよい。   Once the profile is stored, the social API 111 may cause the distributed index engine 115 to at least partially index the profile in the index structure (step 409). The distributed index engine 115 may add the profile to the index. A profile can be associated with an index based on one or more user inputs, based on profile associations (eg, location, associated services, contact connections, etc.), or based on other data. One or more fields associated with the profile are then indexed based on access control characteristics that can be set by the user. The access control field 201 may be used to distinguish what information a user can retrieve and / or retrieve. A new data structure may be instantiated for each distinct group. In certain embodiments, the user is placed in at most one of the instantiated data structures for a given profile (eg, based on profile ID 203). In addition, the instantiated data structure (eg, data structure 215) may be accessible to the general public (eg, guests, all users, etc.).

さらに、ステップ411において、プロファイルおよびインデックス構造を、更新することができる。ステップ401から407において詳述されたようにしてユーザプロファイルを作成する代わりに、ユーザは、ユーザプロファイルを認証および更新することができる。プロファイルが更新されると、分散インデックスエンジン115は、変更されたプロファイルに基づいて、インデックスの更新を開始させられてもよい。プロファイルへの変更は、アクセス制御リストを介して、あるエンティティへのアクセスを追加するもしくは除去すること、コンテンツを追加もしくは削除すること、あるアクセス制御フィールドグループにおいて、ユーザに利用可能なコンテンツを修正すること、インスタンス化されたデータ構造を追加もしくは削除すること、インスタンス化されたデータ構造を組み合わせること、これらの組み合わせ、または似たような処理を含んでもよい。   Further, in step 411, the profile and index structure can be updated. Instead of creating a user profile as detailed in steps 401 to 407, the user can authenticate and update the user profile. When the profile is updated, the distributed index engine 115 may be initiated to update the index based on the changed profile. Changes to profiles add or remove access to an entity, add or delete content, modify content available to users in an access control field group via an access control list Adding or deleting instantiated data structures, combining instantiated data structures, combining these, or similar processing.

図5は、一実施形態に従うプロセスのフローチャートであって、プロファイルを検索するために、スケーラブルなデータ構造を利用するためのプロセスのフローチャートである。一実施形態において、分散インデックスエンジン115は、例えば、図7に示されるようなプロセッサおよびメモリを含むチップセットによって実装され、プロセス500を遂行する。ここで分散インデックスエンジン115は、プロセス500に関連付けられるステップを実装するための手段であってもよい。ステップ501において、分散インデックスエンジン115は、エンティティ識別子および要求されるコンテンツを指定するクエリを受信する。ユーザは、要求されたコンテンツを入力することによって、キーワード検索を開始し、ユーザ識別子を検索クエリの中に含めてもよい。先に説明されるように、クエリは、ソーシャルAPI 111を介して、UE101またはサービスから受信されてもよい。エンティティ識別子(例えばユーザ識別子)は、要求を行うユーザを指定してもよく、認証プロセスを通じて、ソーシャルAPI 111を介して得られてもよい。認証プロセスは、ユーザ名およびパスワード、トークン、または他の認証機構を、ユーザ識別子に関連付けることを含んでもよい。要求されたコンテンツは、1つ以上のフィールド名(例えば、アクセス制御201、プロファイルID203、基本プロファイル205、拡張プロファイル207a〜207n、連絡先情報209等)を含んでもよく、またはフィールドに存在し得る1つ以上の検索用語を含んでもよい。   FIG. 5 is a flowchart of a process according to one embodiment for utilizing a scalable data structure to retrieve a profile. In one embodiment, the distributed index engine 115 is implemented, for example, by a chipset that includes a processor and memory as shown in FIG. Here, the distributed index engine 115 may be a means for implementing the steps associated with the process 500. In step 501, the distributed index engine 115 receives a query specifying an entity identifier and requested content. The user may initiate a keyword search by entering the requested content and include the user identifier in the search query. As described above, the query may be received from the UE 101 or service via the social API 111. The entity identifier (eg, user identifier) may specify the user making the request and may be obtained via the social API 111 through an authentication process. The authentication process may include associating a username and password, token, or other authentication mechanism with the user identifier. The requested content may include one or more field names (eg, access control 201, profile ID 203, basic profile 205, extended profiles 207a-207n, contact information 209, etc.) or may be present in the field 1 It may include more than one search term.

次いで、ステップ503において、分散インデックスエンジン115は、データ構造のプロファイルインデックスのユーザ識別子に基づく検索を少なくとも部分的に生じさせる。このデータ構造は、各々、検索結果を与えるべく、アクセス制御フィールド201に関連付けられるプロファイルフィールドを少なくとも指定する。ここで分散インデックスエンジン115は、ステップ503を実装するための手段を提供してもよい。データ構造はさらに、プロファイルフィールド(例えば、プロファイルID203、基本プロファイル205、拡張プロファイル207a〜207n、連絡先情報209等)、およびアクセス制御フィールド201を備えてもよい。検索は、ユーザ識別子を、インデックスのアクセス制御フィールド201に比較することによって、ユーザ識別子に対する、要求されたコンテンツへのアクセス権を示すこと(ステップ505)によって開始してもよい。ここで分散インデックスエンジン115は、ユーザ識別子に対する、要求されたコンテンツへのアクセス権を示すための手段を提供する。さらに、要求されたコンテンツは、キーワードといった検索用語を備えてもよい。検索用語(または2つ以上の用語)に対するテキスト検索は、ユーザ識別子がアクセスを有する、データ構造のいずれかのプロファイルフィールド上で行われてもよい。このテキスト検索は、アクセス制御フィールドに基づいて、ユーザに対して検索するために、逆インデックスまたは別のインデックス(例えば、ハッシュもしくはBツリー)を開発および記憶することを介して、実装されてもよい。逆インデックスアクセス制御フィールドは、ゲストまたは「*」識別子を備えてもよい、1つ以上のユーザ識別子と関連付けられる「単語」を備えてもよい。逆インデックスは、ユーザ識別子がアクセスを有するデータ列を迅速に見つけることができる。さらに、これは、ユーザがテキスト検索へのアクセスも有し、かつその一部でもある、検索結果をもたらし得る。このように、テキスト検索は、通常の検索の副効果として、アクセス制御を実装するために使用される。   Then, in step 503, the distributed index engine 115 causes a search based at least in part on the user identifier of the profile index of the data structure. This data structure each specifies at least a profile field associated with the access control field 201 to provide search results. Here, the distributed index engine 115 may provide a means for implementing step 503. The data structure may further comprise a profile field (eg, profile ID 203, basic profile 205, extended profiles 207a-207n, contact information 209, etc.) and an access control field 201. The search may begin by indicating access rights to the requested content for the user identifier by comparing the user identifier to the access control field 201 of the index (step 505). Here, the distributed index engine 115 provides a means for indicating access rights to the requested content for the user identifier. Further, the requested content may comprise a search term such as a keyword. A text search for a search term (or more than one term) may be performed on any profile field of the data structure that the user identifier has access to. This text search may be implemented via developing and storing a reverse index or another index (eg, hash or B-tree) to search for the user based on the access control field. . The reverse index access control field may comprise a “word” associated with one or more user identifiers, which may comprise a guest or “*” identifier. The reverse index can quickly find the data string that the user identifier has access to. In addition, this can result in search results where the user also has and is part of a text search. Thus, text search is used to implement access control as a side effect of normal search.

さらに、ステップ507において、要求されたコンテンツは、アクセス権に基づいて、読み出すことができる。先に述べられるように、分散インデックスエンジン115は、ステップ507を実装するための手段を提供することができる。ある実施形態において、要求されたコンテンツは、プロファイルインデックスにおいてインデックス化されていない情報が要求されていることを示してもよい。データ構造は、関連付けられたコンテンツはあるが、そのコンテンツは完全なプロファイルに記憶されていることを示す、データ(例えば、フラグまたはポインタ)を提供してもよい。ここで、要求されたコンテンツのプロファイルID203をキー識別子として使用してプロファイルに対する要求を生成し、分散キー値ストア113への要求の伝送の少なくとも一部を生じさせることにより、コンテンツが分散キー値ストア113から読み出される。そしてプロファイルは、受信され、転送されてもよい。他の実施形態において、要求されたコンテンツは、プロファイルフィールドのうちの1つ以上であってもよく、これは、インデックスから直接読み出されてもよい。ある状況において、要求されたコンテンツは、インデックスから、またはプロファイルからのデータ構造300であってもよい。次いで、ステップ509にあるように、要求されたコンテンツは、少なくとも部分的に、ソーシャルAPI 111を介して、要求元に伝送させられる。   Further, at step 507, the requested content can be retrieved based on the access rights. As mentioned earlier, the distributed index engine 115 can provide a means for implementing step 507. In some embodiments, the requested content may indicate that information that is not indexed in the profile index is being requested. The data structure may provide data (eg, a flag or pointer) that indicates that there is content associated with it, but that content is stored in the complete profile. Here, the content is distributed to the distributed key value store by generating a request for the profile using the profile ID 203 of the requested content as a key identifier and causing at least part of the transmission of the request to the distributed key value store 113. 113 is read. The profile may then be received and transferred. In other embodiments, the requested content may be one or more of the profile fields, which may be read directly from the index. In certain situations, the requested content may be a data structure 300 from an index or from a profile. Then, as in step 509, the requested content is transmitted, at least in part, to the requestor via the social API 111.

上記の手法および実施例は、有利にスケーラブルなデータ構造の使用を詳述する。データ構造は、加えて、上記のインデックス化手法を利用して、低い待ち時間検索を提供し得る。これは、データ構造のインデックスにおいて、テキスト検索可能なプロファイルフィールドと併せて、アクセス制御フィールドを記憶することを介して実装されうる。さらに、インデックスは、データ構造に関連付けられる一意プロファイルIDを単に使用して、分散データストア(例えば、図1のストア113)からコンテンツを迅速に読み出すことによって、より大きなデータコンテンツを含みうるように拡張されてもよい。さらに、データ構造は、分散アーキテクチャにおいて使用されてもよいため、データ構造を使用して記憶される情報の使用の利用可能性は、極めて利用可能である。データを含むより多くの数の部分が、いくつかの物理的機械に拡散しているため、この機能性が実装され得る。   The above techniques and embodiments detail the use of an advantageously scalable data structure. The data structure may additionally provide a low latency search utilizing the indexing techniques described above. This can be implemented via storing an access control field in the data structure index along with a text searchable profile field. In addition, the index is expanded to include larger data content by quickly retrieving content from a distributed data store (eg, store 113 in FIG. 1) simply using a unique profile ID associated with the data structure. May be. Furthermore, because data structures may be used in a distributed architecture, the availability of use of information stored using the data structures is highly available. This functionality can be implemented because a greater number of parts containing data are spread across several physical machines.

スケーラブルなデータ構造を利用するための本明細書において説明されるプロセスは、ソフトウェア、ハードウェア(例えば、汎用プロセッサ、デジタル信号処理(DSP)チップ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)等)、ファームウェア、またはこれらの組み合わせを介して、有利に実装され得る。説明された機能を遂行するためのかかる例示的なハードウェアを、以下で詳述する。   The processes described herein for utilizing scalable data structures include software, hardware (eg, general purpose processors, digital signal processing (DSP) chips, application specific integrated circuits (ASICs), field programmable Gate array (FPGA), etc.), firmware, or a combination thereof, may be advantageously implemented. Such exemplary hardware for performing the described functions is detailed below.

図6は、本発明の実施形態が実装され得る、コンピュータシステム600を例解する。コンピュータシステム600は、特定のデバイスまたは機器に関して描写されているが、図6内の他のデバイスまたは機器(例えば、ネットワーク要素、サーバ等)は、システム600の例解されたハードウェアおよび構成要素によって展開することができる。コンピュータシステム600は、本明細書において説明されるように、スケーラブルなデータ構造を利用するように、(例えば、コンピュータプログラムコードまたは命令によって)プログラムされ、コンピュータシステム600の他の内部構成要素と外部構成要素との間で情報を渡すために、バス610といった通信機構を含む。情報(データとも呼ばれる)は、典型的には、電圧であるが、他の実施形態において、磁気、電磁、気圧、化学、生物学、分子、原子、素粒子、および量子相互作用といった、現象を含む、測定可能な現象の物理表現として表される。例えば、NおよびSの磁場や、ゼロおよび非ゼロ電圧は、バイナリ桁(ビット)の2つの状態(0、1)を表す。他の現象は、より高い基数の桁を示し得る。測定前の複数の同時の量子状態の重ね合わせは、量子ビット(キュービット)を表す。1つ以上の桁のシーケンスは、文字に対する数またはコードを表すために使用される、デジタルデータを構成する。一部の実施形態において、アナログデータと呼ばれる情報は、特定の範囲内の測定可能な値の準連続体によって表される。コンピュータシステム600、またはその一部分は、スケーラブルなデータ構造を利用する1つ以上のステップを遂行するための手段を構成する。   FIG. 6 illustrates a computer system 600 in which embodiments of the present invention may be implemented. Although computer system 600 is depicted with respect to particular devices or equipment, other devices or equipment (eg, network elements, servers, etc.) in FIG. 6 depend on the illustrated hardware and components of system 600. Can be deployed. Computer system 600 is programmed (eg, by computer program code or instructions) to utilize a scalable data structure, as described herein, and other internal and external components of computer system 600. A communication mechanism such as a bus 610 is included to pass information to and from the element. Information (also called data) is typically a voltage, but in other embodiments, phenomena such as magnetic, electromagnetic, atmospheric, chemical, biological, molecular, atomic, elementary, and quantum interactions It is expressed as a physical representation of measurable phenomena. For example, N and S magnetic fields and zero and non-zero voltages represent two states (0, 1) in binary digits (bits). Other phenomena may indicate higher radix digits. The superposition of a plurality of simultaneous quantum states before measurement represents a qubit (qubit). A sequence of one or more digits constitutes digital data that is used to represent a number or code for a character. In some embodiments, information called analog data is represented by a quasicontinuum of measurable values within a particular range. The computer system 600, or a portion thereof, constitutes a means for performing one or more steps that utilize a scalable data structure.

バス610は、情報が、バス610に連結されるデバイス間で迅速に転送されるように、情報の1つ以上の平行導体を含む。情報を処理するための1つ以上のプロセッサ602は、バス610と連結される。   Bus 610 includes one or more parallel conductors of information so that information can be quickly transferred between devices coupled to bus 610. One or more processors 602 for processing information are coupled to bus 610.

プロセッサ602は、スケーラブルなデータ構造を利用することに関連するコンピュータプログラムコードの指示に従って、情報に対して一連の演算を遂行する。コンピュータプログラムコードは、指定された機能を遂行するように、プロセッサおよび/またはコンピュータシステムの動作に対する命令を提供する、一組の命令またはステートメントである。例えば、コードは、プロセッサのネイティブ命令セットにコンパイルされる、コンピュータプログラミング言語で書かれてもよい。コードはまた、ネイティブ命令セット(例えば、機械言語)を使用して、直接書かれてもよい。一組の演算は、バス610から情報を取り入れることと、情報をバス610上に配置することとを含む。一組の演算はまた、典型的に、2つ以上の情報単位を比較することと、情報単位の位置をシフトすることと、例えば、加算もしくは乗算、またはOR、排他的OR(XOR)、およびANDのような論理演算によって、2つ以上の情報単位を組み合わせることと、を含む。プロセッサによって遂行することができる一組の演算の各演算は、1つ以上の桁の演算コードといった、命令と呼ばれる情報によって、プロセッサに対して表される。演算コードのシーケンスといった、プロセッサ602によって実行されるべき演算のシーケンスは、コンピュータシステム命令、または単にコンピュータ命令とも呼ばれる、プロセッサ命令を構成する。プロセッサは、単独で、または組み合わせて、とりわけ機械、電気、磁気、光学、化学、または量子構成要素として実装されてもよい。   The processor 602 performs a series of operations on the information in accordance with the instructions of the computer program code related to utilizing the scalable data structure. Computer program code is a set of instructions or statements that provide instructions for the operation of a processor and / or computer system to perform a specified function. For example, the code may be written in a computer programming language that is compiled into the processor's native instruction set. The code may also be written directly using a native instruction set (eg, machine language). A set of operations includes taking information from bus 610 and placing information on bus 610. A set of operations also typically compares two or more information units, shifts the position of information units, eg, addition or multiplication, or OR, exclusive OR (XOR), and Combining two or more information units by a logical operation such as AND. Each operation in the set of operations that can be performed by the processor is represented to the processor by information called instructions, such as one or more digits of an operation code. A sequence of operations to be performed by processor 602, such as a sequence of operation codes, constitutes processor instructions, also called computer system instructions, or simply computer instructions. The processors may be implemented alone or in combination, inter alia as mechanical, electrical, magnetic, optical, chemical, or quantum components.

コンピュータシステム600はまた、バス610に連結されるメモリ604を含む。ランダムアクセスメモリ(RAM)または他の動的記憶デバイスといった、メモリ604は、スケーラブルなデータ構造を利用するためのプロセッサ命令を含む、情報を記憶する。動的メモリは、その中に記憶される情報が、コンピュータシステム600によって変更されることを可能にする。RAMは、メモリアドレスと呼ばれる場所に記憶される情報単位が、近隣のアドレスの情報とは独立して、記憶され、読み出されることを可能にする。メモリ604はまた、プロセッサ命令の実行中に、一時的な値を記憶するように、プロセッサ602によって使用される。コンピュータシステム600はまた、コンピュータシステム600によって変更されない、命令を含む、静的情報を記憶するために、バス610に接続される、読み取り専用メモリ(ROM)606または他の静的記憶デバイスを含む。一部のメモリは、電力を喪失した時に、その中に記憶される情報を喪失する、揮発性記憶装置から成る。コンピュータシステム600がオフにされるか、またはそうでなければ電力を喪失する時でさえ持続する命令を含む、情報を記憶するための、磁気ディスク、光学ディスク、またはフラッシュカードといった、非揮発性(持続性)記憶デバイス608もまた、バス610に接続される。   Computer system 600 also includes memory 604 coupled to bus 610. Memory 604, such as random access memory (RAM) or other dynamic storage device, stores information, including processor instructions for utilizing scalable data structures. Dynamic memory allows information stored therein to be changed by computer system 600. RAM allows information units stored in locations called memory addresses to be stored and read independently of information at neighboring addresses. Memory 604 is also used by processor 602 to store temporary values during execution of processor instructions. Computer system 600 also includes a read only memory (ROM) 606 or other static storage device connected to bus 610 for storing static information, including instructions, that is not modified by computer system 600. Some memories consist of volatile storage that loses information stored therein when power is lost. Nonvolatile (such as a magnetic disk, optical disk, or flash card for storing information, including instructions that persist even when the computer system 600 is turned off or otherwise loses power Persistent) storage device 608 is also connected to bus 610.

スケーラブルなデータ構造を利用するための命令を含む情報は、外部入力デバイス612からバス610に提供され、プロセッサにより使用される。外部入力デバイス612は、ユーザによって操作される英数字キーやセンサを備えるキーボードのようなものであることができる。センサは、その近傍の条件を検出し、それらの検出を、コンピュータシステム600において、情報を表すために使用される、測定可能な現象と互換性のある、物理表現に変換する。主にヒトと相互作用するために使用される、バス610に接続される他の外部デバイスとしては、テキストもしくは画像を提示するための陰極線管(CRT)もしくは液晶ディスプレイ(LCD)、またはプラズマ画面もしくはプリンタといった、表示デバイス614、およびディスプレイ614上に提示される小さなカーソル画像の位置を制御し、ディスプレイ614上に提示されるグラフィック要素に関連付けられるコマンドを発行するための、マウスもしくはトラックボールもしくはカーソル方向キー、または運動センサといった、ポインティングデバイス616が挙げられる。一部の実施形態において、例えば、コンピュータシステム600が、ヒトの入力を伴わずに、自動で、全ての機能を遂行する実施形態において、外部入力デバイス612、表示デバイス614、およびポインティングデバイス616のうちの1つ以上は、省略される。   Information, including instructions for utilizing scalable data structures, is provided from the external input device 612 to the bus 610 and is used by the processor. The external input device 612 can be like a keyboard with alphanumeric keys and sensors operated by the user. The sensor detects conditions in its vicinity and converts those detections into a physical representation that is compatible with the measurable phenomenon used in computer system 600 to represent information. Other external devices connected to the bus 610 that are primarily used to interact with humans include a cathode ray tube (CRT) or liquid crystal display (LCD) for presenting text or images, or a plasma screen or Mouse or trackball or cursor direction to control the position of a small cursor image presented on display device 614 and display 614, such as a printer, and issue commands associated with graphic elements presented on display 614 A pointing device 616, such as a key or motion sensor, may be mentioned. In some embodiments, for example, in an embodiment where the computer system 600 performs all functions automatically without human input, of the external input device 612, the display device 614, and the pointing device 616 One or more of are omitted.

例解される実施形態において、特定用途向け集積回路(ASIC)620といった特殊用途ハードウェアが、バス610に連結される。特殊用途ハードウェアは、特殊用途に対して十分に迅速に、プロセッサ602によって遂行されない動作を遂行するように構成される。特定用途向けICの例としては、ディスプレイ614に対して画像を生成するためのグラフィックアクセラレータカード、ネットワーク上で送信されるメッセージを暗号化および復号するための暗号ボード、音声認識、ならびにハードウェアにおいてより効率的に実装される、一部の複雑な動作シーケンスを繰り返して遂行する、ロボットアームや医療用走査機器といった、特別な外部デバイスへのインターフェースが挙げられる。   In the illustrated embodiment, special purpose hardware such as application specific integrated circuit (ASIC) 620 is coupled to bus 610. Special purpose hardware is configured to perform operations not performed by processor 602 sufficiently quickly for special purpose. Examples of application specific ICs include graphics accelerator cards for generating images for display 614, encryption boards for encrypting and decrypting messages sent over the network, voice recognition, and more in hardware Examples include interfaces to special external devices, such as robotic arms and medical scanning equipment, that perform some complex motion sequences that are implemented efficiently.

コンピュータシステム600はまた、バス610に連結される通信インターフェース670の1つ以上のインスタンスを含む。通信インターフェース670は、プリンタ、スキャナ、および外部ディスクといった、それら自身のプロセッサとともに動作する多様な外部デバイスに、1方向または双方向通信接続を提供する。この接続は、一般的に、ネットワークリンク680との間で確立される。ネットワークリンク680は、自身でプロセッサを有する多様な外部デバイスが接続される、ローカルネットワーク678に接続される。例えば、通信インターフェース670は、パーソナルコンピュータ上のパラレルポートもしくはシリアルポート、またはユニバーサルシリアルバス(USB)ポートであってもよい。一部の実施形態において、通信インターフェース670は、総合サービスデジタルネットワーク(ISDN)カードもしくはデジタル加入者回線(DSL)カード、または対応するタイプの電話線に情報通信接続を提供する電話モデムである。一部の実施形態において、通信インターフェース670は、バス610上の信号を、同軸ケーブル上の通信接続のための信号、または光ファイバケーブル上の通信接続のための光学信号に変換する、ケーブルモデムである。別の実施例として、通信インターフェース670は、イーサネットといった互換性のあるLANに、データ通信接続を提供するためのローカルエリアネットワーク(LAN)カードであってもよい。ワイヤレスリンクもまた、実装されてもよい。ワイヤレスリンクに関して、通信インターフェース670は、デジタルデータといった情報流を担持する、赤外線および光学信号を含む、電気、音響、または電磁信号を送信する、または受信する、または送信および受信の両方をする。例えば、携帯電話のような移動電話といった、ワイヤレスハンドヘルドデバイスにおいて、通信インターフェース670は、無線送受信器と呼ばれる、無線帯域電磁伝送器および受信器を含む。ある実施形態において、通信インターフェース670は、UE101に対する、通信ネットワーク105への接続を可能にする。   Computer system 600 also includes one or more instances of communication interface 670 coupled to bus 610. Communication interface 670 provides a one-way or two-way communication connection to a variety of external devices operating with their own processors, such as printers, scanners, and external disks. This connection is typically established with the network link 680. The network link 680 is connected to a local network 678 to which various external devices having their own processors are connected. For example, the communication interface 670 may be a parallel or serial port on a personal computer, or a universal serial bus (USB) port. In some embodiments, communication interface 670 is an integrated services digital network (ISDN) card or digital subscriber line (DSL) card, or a telephone modem that provides an information communication connection to a corresponding type of telephone line. In some embodiments, the communication interface 670 is a cable modem that converts signals on the bus 610 into signals for communication connections on coaxial cables or optical signals for communication connections on fiber optic cables. is there. As another example, communication interface 670 may be a local area network (LAN) card for providing a data communication connection to a compatible LAN, such as Ethernet. A wireless link may also be implemented. With respect to a wireless link, the communication interface 670 transmits or receives, or both transmits and receives, electrical, acoustic, or electromagnetic signals, including infrared and optical signals, that carry information streams such as digital data. For example, in a wireless handheld device, such as a mobile phone such as a cellular phone, the communication interface 670 includes a radio band electromagnetic transmitter and receiver, referred to as a radio transceiver. In some embodiments, the communication interface 670 enables the UE 101 to connect to the communication network 105.

「コンピュータ可読媒体」という用語は、実行のための命令を含む、プロセッサ602への情報の提供に関与する、任意の媒体を指すように、本明細書において使用される。かかる媒体は、非揮発性媒体、揮発性媒体、および伝送媒体を含むが、これらに限定されない、多くの形態を採ってもよい。非揮発性媒体としては、例えば、記憶デバイス608といった光学もしくは磁気ディスクが挙げられる。揮発性媒体としては、例えば、動的メモリ604が挙げられる。伝送媒体としては、例えば、同軸ケーブル、銅ワイヤ、光ファイバケーブル、および無線、光学、および赤外線波を含む、音波および電磁波といった、ワイヤもしくはケーブルを伴わずに空間を通って移動する搬送波が挙げられる。信号は、伝送媒体を通って伝送される、振幅、周波数、位相、極性、または他の物理特性における、人為的な過渡変動を含む。一般的な形態のコンピュータ可読媒体としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD−ROM、CDRW、DVD、任意の他の光学媒体、パンチカード、紙テープ、光学マークシート、孔もしくは他の光学的に認識可能な標識のパターンを有する任意の他の物理媒体、RAM、PROM、EPROM、FLASH−EPROM、任意の他のメモリチップもしくはカートリッジ、搬送波、またはコンピュータが読み取ることができる任意の他の媒体が挙げられる。コンピュータ可読記憶媒体という用語は、伝送媒体を除く、任意のコンピュータ可読媒体を指すように、本明細書において使用される。   The term “computer-readable medium” is used herein to refer to any medium that participates in providing information to processor 602, including instructions for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks such as storage device 608. An example of the volatile medium is a dynamic memory 604. Transmission media include, for example, coaxial cables, copper wires, fiber optic cables, and carrier waves that travel through space without wires or cables, such as acoustic and electromagnetic waves, including radio, optical, and infrared waves. . The signal includes artificial transients in amplitude, frequency, phase, polarity, or other physical characteristics that are transmitted through the transmission medium. Common forms of computer readable media include, for example, floppy disks, flexible disks, hard disks, magnetic tapes, any other magnetic medium, CD-ROM, CDRW, DVD, any other optical medium, punch card, paper tape , Optical mark sheets, holes or any other physical medium with a pattern of optically recognizable markings, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, carrier wave, or computer Any other medium that can be read is included. The term computer readable storage medium is used herein to refer to any computer readable medium except transmission media.

1つ以上の有形媒体に符号化された論理は、コンピュータ可読記憶媒体、およびASIC620といった特殊用途ハードウェア上のプロセッサ命令のうちの一方または両方を含む。   The logic encoded in one or more tangible media includes one or both of computer readable storage media and processor instructions on special purpose hardware such as ASIC 620.

ネットワークリンク678は、典型的に、情報を使用または処理する他のデバイスに、1つ以上のネットワークを通って、伝送媒体を使用して、情報通信を提供する。例えば、ネットワークリンク678は、ローカルネットワーク680を通って、ホストコンピュータ682へ、またはインターネットサービスプロバイダ(ISP)によって動作する機器684へ、接続を提供してもよい。ISP機器684は同様に、現在では一般的にインターネット690と称されるネットワークの公的な、グローバルなパケット交換通信ネットワークを通って、データ通信サービスを提供する。   Network link 678 typically provides information communication to other devices that use or process information using one or more networks and using a transmission medium. For example, the network link 678 may provide a connection through the local network 680 to the host computer 682 or to a device 684 operated by an Internet service provider (ISP). The ISP device 684 also provides data communication services through the public, global packet switched communication network of the network now commonly referred to as the Internet 690.

インターネットに接続される、サーバホスト692と呼ばれるコンピュータは、インターネット上で受信される情報に応答して、サービスを提供するプロセスをホストする。例えば、サーバホスト692は、ディスプレイ614での提示のためにビデオデータを表す情報を提供するプロセスをホストする。システム600の構成要素は、他のコンピュータシステム、例えば、ホスト682およびサーバ692内で、種々の構成において展開することができる。   A computer, referred to as server host 692, connected to the Internet hosts processes that provide services in response to information received over the Internet. For example, server host 692 hosts a process that provides information representing video data for presentation on display 614. The components of system 600 can be deployed in various configurations within other computer systems, such as host 682 and server 692.

本発明の少なくとも一部の実施形態は、本明細書において説明される技術のうちの一部または全てを実装するための、コンピュータシステム600の使用に関連する。本発明の一実施形態によると、それらの技術は、メモリ604に格納される、1つ以上のプロセッサ命令の1つ以上のシーケンスを実行する、プロセッサ602に応答して、コンピュータシステム600によって遂行される。コンピュータ命令、ソフトウェア、およびプログラムコードとも呼ばれる、かかる命令は、記憶デバイス608またはネットワークリンク678といった、別のコンピュータ可読媒体から、メモリ604に読み込まれてもよい。メモリ604に格納される命令シーケンスの実行は、プロセッサ602に、本明細書において説明される方法ステップのうちの1つ以上を遂行させる。代替的な実施形態において、ASIC620といったハードウェアは、本発明を実装するように、ソフトウェアの代わりに、またはそれと組み合わせて、使用されてもよい。このため、本発明の実施形態は、本明細書において別途明記されない限り、ハードウェアおよびソフトウェアの任意の特定の組み合わせに限定されない。   At least some embodiments of the invention relate to the use of computer system 600 to implement some or all of the techniques described herein. According to one embodiment of the invention, the techniques are performed by computer system 600 in response to processor 602 executing one or more sequences of one or more processor instructions stored in memory 604. The Such instructions, also referred to as computer instructions, software, and program code, may be loaded into memory 604 from another computer readable medium, such as storage device 608 or network link 678. Execution of the instruction sequence stored in memory 604 causes processor 602 to perform one or more of the method steps described herein. In an alternative embodiment, hardware such as ASIC 620 may be used instead of or in combination with software to implement the present invention. Thus, embodiments of the invention are not limited to any specific combination of hardware and software, unless explicitly stated otherwise herein.

通信インターフェース670を通って、ネットワークリンク678および他のネットワーク上で伝送される信号は、コンピュータシステム600へ、およびコンピュータシステム600から情報を搬送する。コンピュータシステム600は、とりわけネットワーク680、690を通って、ネットワークリンク678および通信インターフェース670を通って、プログラムコードを含む情報を送信および受信することができる。インターネット690を使用する実施例において、サーバホスト692は、インターネット690、ISP機器684、ローカルネットワーク680、および通信インターフェース670を通って、コンピュータ600から送信されるメッセージによって要求される、特定のアプリケーションに対するプログラムコードを伝送する。受信されたコードは、受信される際に、プロセッサ602によって実行されてもよく、または、後の実行のために、メモリ604に、または記憶デバイス608もしくは他の非揮発性記憶装置、あるいは両方に記憶されてもよい。このように、コンピュータシステム600は、搬送波上の信号の形態で、アプリケーションプログラムコードを得てもよい。   Signals transmitted over communication link 670 and over network link 678 and other networks carry information to and from computer system 600. Computer system 600 can send and receive information, including program code, through network 680, 690, network link 678, and communication interface 670, among others. In an embodiment using the Internet 690, the server host 692 is a program for a particular application required by a message sent from the computer 600 over the Internet 690, ISP device 684, local network 680, and communication interface 670. Transmit the code. The received code may be executed by processor 602 as it is received, or in memory 604, or storage device 608 or other non-volatile storage, or both, for later execution. It may be stored. Thus, computer system 600 may obtain application program code in the form of signals on a carrier wave.

種々の形態のコンピュータ可読媒体は、命令もしくはデータまたは両方の1つ以上のシーケンスを、実行のためにプロセッサ602に搬送することに関与されてもよい。例えば、命令およびデータは、最初、ホスト682といったリモートコンピュータの磁気ディスク上に担持されてもよい。リモートコンピュータは、命令およびデータを、その動的メモリの中へロードし、モデムを使用して、電話線上で命令およびデータを送信する。コンピュータシステム600にローカルなモデムは、電話線上で命令およびデータを受信し、ネットワークリンク678として機能する赤外線搬送波上で、命令およびデータを信号に変換するために、赤外線伝送器を使用する。通信インターフェース670として機能する赤外線検出器は、赤外線信号に担持される命令およびデータを受信し、命令およびデータを表す情報を、バス610上に配置する。バス610は、情報を、プロセッサ604が、命令を読み出し、命令とともに送信されるデータのうちの一部を使用して、命令を実行する、メモリ602へ搬送する。メモリ604に受信された命令およびデータは、実施形態によっては、プロセッサ608による実行の前または後のいずれかに、記憶デバイス602上に記憶されてもよい。   Various forms of computer readable media may be involved in carrying one or more sequences of instructions or data or both to processor 602 for execution. For example, instructions and data may initially be carried on a magnetic disk of a remote computer such as host 682. The remote computer loads the instructions and data into its dynamic memory and uses a modem to send the instructions and data over the telephone line. A modem local to computer system 600 receives the instructions and data on the telephone line and uses an infrared transmitter to convert the instructions and data to signals on an infrared carrier that functions as network link 678. The infrared detector functioning as the communication interface 670 receives instructions and data carried in the infrared signal and places information representing the instructions and data on the bus 610. Bus 610 conveys information to memory 602 where processor 604 reads the instruction and executes the instruction using a portion of the data transmitted with the instruction. The instructions and data received by memory 604 may be stored on storage device 602 either before or after execution by processor 608 in some embodiments.

図7は、本発明の実施形態が実装され得る、チップセット700を例解する。チップセット700は、本明細書において説明されるように、スケーラブルなデータ構造を利用するようにプログラムされ、例えば、1つ以上の物理パッケージ(例えば、チップ)に組み込まれる、図6に関して説明される、プロセッサ、およびメモリ構成要素を含む。例として、物理パッケージは、物理強度、サイズの保存、および/または電気的相互作用の制限といった、1つ以上の特徴を提供するように、構造的アセンブリ(例えば、ベースボード)上の1つ以上の材料、構成要素、および/またはワイヤによる構成を含む。ある実施形態において、チップセットは、単一のチップにおいて実装することができる。チップセット700、またはその一部分は、スケーラブルなデータ構造を利用する1つ以上のステップを遂行するための手段を構成する。   FIG. 7 illustrates a chipset 700 in which embodiments of the present invention may be implemented. Chipset 700 is described with respect to FIG. 6, which is programmed to utilize a scalable data structure as described herein, for example, incorporated into one or more physical packages (eg, chips). , A processor, and a memory component. By way of example, a physical package may include one or more on a structural assembly (eg, a baseboard) to provide one or more features such as physical strength, size preservation, and / or electrical interaction limitations Material, component, and / or wire configuration. In certain embodiments, the chipset can be implemented in a single chip. Chipset 700, or a portion thereof, constitutes a means for performing one or more steps utilizing a scalable data structure.

一実施形態において、チップセット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つ以上の他の特殊用途コンピュータチップが挙げられる。   In one embodiment, chipset 700 includes a communication mechanism, such as bus 700, for passing information between components of chipset 701. The processor 703 has a connection to the bus 705 to execute instructions and process information stored in the memory 701, for example. The processor 703 may comprise one or more processing cores configured such that each core performs independently. Multi-core processors allow multiple processing within a single physical package. Examples of multi-core processors include two, four, eight or more numbers of processing cores. Alternatively or additionally, the processor 703 may include one or more micros configured in cascade via a bus 701 to allow independent execution, pipelining, and multithreading of instructions. A processor may be provided. The processor 703 also has one or more specialized signal processing functions and tasks, such as one or more digital signal processors (DSPs) 707, or one or more application specific integrated circuits (ASICs) 709. It may be accompanied by components. The DSP 707 is typically configured to process real-world signals (eg, sounds) in real time, independent of the processor 703. Similarly, the ASIC 709 can be configured to perform specialized functions that are not easily performed by a general purpose processor. Other specialized components to assist in performing the functions of the invention described herein include one or more field programmable gate arrays (FPGAs) (not shown), One or more controllers (not shown), or one or more other special purpose computer chips may be mentioned.

プロセッサ703および付属構成要素は、バス701を介して、メモリ705への接続を有する。メモリ705は、実行される時に、スケーラブルなデータ構造を利用するように、本明細書において説明される本発明のステップを遂行する、実行可能な命令を記憶するための、動的メモリ(例えば、RAM、磁気ディスク、書き込み可能な光学ディスク等)、および静的メモリ(例えば、ROM、CD−ROM等)の両方を含む。メモリ705はまた、本発明のステップの実行に関連付けられる、または本発明のステップによって生成される、データを記憶する。   The processor 703 and attached components have a connection to the memory 705 via the bus 701. Memory 705, when executed, is a dynamic memory (eg, for storing executable instructions that perform the steps of the invention described herein to utilize scalable data structures). RAM, magnetic disk, writable optical disk, etc.) and static memory (eg, ROM, CD-ROM, etc.). Memory 705 also stores data associated with or generated by the execution of the steps of the present invention.

図8は、一実施形態に従う、図1のシステムを動作させることができる、通信のための移動端末(例えば、ハンドセット)の例示的な構成要素の図である。一部の実施形態において、移動端末800、またはその一部分は、スケーラブルなデータ構造を利用するプラットフォームからコンテンツを要求する、1つ以上のステップを遂行するための手段を構成する。一般的に、無線受信器は、しばしば、フロントエンドおよびバックエンドの特性に関連して定義される。受信器のフロントエンドは、無線周波数(RF)回路の全てを包含するが、バックエンドは、ベースバンド処理回路の全てを包含する。本出願において使用される際、「回路」という用語は、(1)ハードウェアのみの実装(アナログおよび/またはデジタル回路のみにおける実装といった)、ならびに(2)回路およびソフトウェア(および/もしくはファームウェア)の組み合わせ(特定の文脈に該当する場合、移動電話もしくはサーバといった装置に、種々の機能を遂行させるように協働する、デジタル信号プロセッサ(複数を含む)、ソフトウェア、およびメモリ(複数を含む)を含む、プロセッサ(複数を含む)の組み合わせといった)の両方を指す。「回路」のこの定義は、いずれの請求項も含む、本出願におけるこの用語の全ての使用に該当する。さらなる実施例として、本出願において使用される際、および特定の文脈に該当する場合、「回路」という用語はまた、単に、プロセッサ(もしくは複数のプロセッサ)、およびその(もしくはそれらの)付属ソフトウェア/またはファームウェアの実装を網羅する。「回路」という用語はまた、特定の文脈に該当する場合、例えば、移動電話におけるベースバンド集積回路もしくはアプリケーションプロセッサ集積回路、またはセルラネットワークデバイスもしくは他のネットワークデバイスにおける類似の集積回路を網羅する。   FIG. 8 is a diagram of exemplary components of a mobile terminal (eg, a handset) for communication that can operate the system of FIG. 1, according to one embodiment. In some embodiments, the mobile terminal 800, or a portion thereof, constitutes a means for performing one or more steps of requesting content from a platform that utilizes a scalable data structure. In general, wireless receivers are often defined in terms of front-end and back-end characteristics. The receiver front end includes all of the radio frequency (RF) circuitry, while the back end includes all of the baseband processing circuitry. As used in this application, the term “circuit” refers to (1) hardware-only implementations (such as implementations in analog and / or digital circuits only), and (2) circuits and software (and / or firmware). Combining (including digital signal processor (s), software, and memory (s) that cooperate to cause a device such as a mobile phone or server to perform various functions, if applicable to a particular context , Or a combination of processor (s). This definition of “circuit” applies to all uses of this term in this application, including any claims. As a further example, as used in this application, and when applicable to a particular context, the term “circuit” is also simply a processor (or multiple processors) and its (or their) accompanying software / Or cover firmware implementation. The term “circuit” also covers a baseband integrated circuit or application processor integrated circuit in a mobile telephone, or similar integrated circuits in a cellular network device or other network device, if applicable in a particular context.

電話に関連する内部構成要素は、主制御ユニット(MCU)803と、デジタル信号プロセッサ(DSP)805と、マイクロホン利得制御ユニットおよびスピーカ利得制御ユニットを含む、受信器/伝送器ユニットと、を含む。主表示ユニット807は、スケーラブルなデータ構造を利用するプラットフォームからコンテンツを要求するステップを遂行またはサポートする、種々のアプリケーションおよび移動端末機能をサポートして、ユーザに表示を提供する。ディスプレイ807は、移動端末(例えば、移動電話)のユーザインターフェースのうちの少なくとも一部分を表示するように構成される、表示回路を含む。加えて、ディスプレイ807および表示回路は、移動端末の少なくとも一部の機能のユーザ制御を円滑化するように構成される。オーディオ機能回路809は、マイクロホン811と、マイクロホン811からの音声信号出力を増幅するマイクロホン増幅器と、を含む。マイクロホン811からの増幅された音声信号出力は、符号器/復号器(CODEC)813に送給される。   Internal components associated with the phone include a main control unit (MCU) 803, a digital signal processor (DSP) 805, and a receiver / transmitter unit that includes a microphone gain control unit and a speaker gain control unit. The main display unit 807 provides display to the user in support of various applications and mobile terminal functions that perform or support the step of requesting content from a platform that utilizes scalable data structures. Display 807 includes display circuitry configured to display at least a portion of a user interface of a mobile terminal (eg, mobile phone). In addition, the display 807 and the display circuit are configured to facilitate user control of at least some functions of the mobile terminal. The audio function circuit 809 includes a microphone 811 and a microphone amplifier that amplifies an audio signal output from the microphone 811. The amplified audio signal output from the microphone 811 is sent to an encoder / decoder (CODEC) 813.

無線セクション815は、アンテナ817を介して、移動通信システムに含まれる基地局と通信するために、電力を増幅し、周波数を変換する。電力増幅器(PA)819および伝送器/変調回路は、当該技術分野において知られるように、デュプレクサ821またはサーキュレータもしくはアンテナスイッチに連結されるPA819からの出力を伴って、MCU803に動作可能に応答する。PA819はまた、バッテリインターフェースおよび電力制御ユニット820に接続される。   The radio section 815 amplifies power and converts a frequency in order to communicate with a base station included in the mobile communication system via the antenna 817. A power amplifier (PA) 819 and transmitter / modulation circuit are operatively responsive to the MCU 803 with output from a duplexer 821 or a PA 819 coupled to a circulator or antenna switch, as is known in the art. The PA 819 is also connected to the battery interface and power control unit 820.

使用中、移動端末801のユーザは、マイクロホン811に向かって話し、任意の検出された背景雑音とともに、ユーザの音声は、アナログ電圧に変換される。次いで、アナログ電圧は、アナログ/デジタル変換器(ADC)823を通って、デジタル信号に変換される。制御ユニット803は、音声符号化、チャネル符号化、暗号化、およびインターリービングといった、その中での処理のために、デジタル信号をDSP805に発送する。一実施形態において、処理された音声信号は、EDGE、汎用パケット無線サービス(GPRS)、移動通信用グローバルシステム(GSM)、インターネットプロトコルマルチメディアサブシステム(IMS)、ユニバーサル移動通信システム(UMTS)等、ならびに任意の他の好適なワイヤレス媒体、例えば、マイクロ波アクセス(WiMAX)、長期展開(LTE)ネットワーク、符号分割多重アクセス(CDMA)、広帯域符合分割多重アクセス(WCDMA)、ワイヤレスフィデリティ(WiFi)、衛星、および同じようなセルラ伝送プロトコルを使用して、別個には図示されていないユニットによって、符号化される。   In use, the user of mobile terminal 801 speaks into microphone 811 and, along with any detected background noise, the user's voice is converted to an analog voltage. The analog voltage is then converted to a digital signal through an analog / digital converter (ADC) 823. The control unit 803 routes the digital signal to the DSP 805 for processing therein, such as voice coding, channel coding, encryption, and interleaving. In one embodiment, the processed voice signal is EDGE, General Packet Radio Service (GPRS), Global System for Mobile Communications (GSM), Internet Protocol Multimedia Subsystem (IMS), Universal Mobile Telecommunications System (UMTS), etc. As well as any other suitable wireless medium, such as microwave access (WiMAX), long term deployment (LTE) networks, code division multiple access (CDMA), wideband code division multiple access (WCDMA), wireless fidelity (WiFi), satellite , And similar cellular transmission protocols, encoded by units not shown separately.

次いで、符号化された信号は、位相および振幅歪みといった、空気を通っての伝送中に生じる、様々な周波数依存性障害の補償のための等化器825に送られる。ビット流を等化した後、変調器827は、信号を、RFインターフェース829において生成されるRF信号と組み合わせる。変調器827は、周波数または位相変調を経て正弦波を生成する。伝送のための信号を準備するために、アップコンバータ831は、所望の伝送周波数を得るために、変調器827からの正弦波出力を、合成器833によって生成される別の正弦波と組み合わせる。次いで、信号は、信号を適切な電力レベルまで増幅するべく、PA819を通って送信される。実際的なシステムにおいて、PA819は可変利得増幅器として作用し、その利得は、ネットワーク基地局から受信される情報に基づいて、DSP805によって制御される。次いで、信号は、デュプレクサ821においてフィルタされ、実施形態によっては、インピーダンスを整合して最大電力転送を提供するように、アンテナ結合器835に送信される。最後に、信号は、アンテナ817を介して、ローカル基地局に伝送される。受信器の最終段階の利得を制御するために、自動利得制御(AGC)を設けてもよい。信号は、そこから、公衆交換電話ネットワーク(PSTN)や他のテレフォニーネットワークに接続される、別のセルラ電話や他の移動電話、固定電話等のリモートの電話に転送されてもよい。   The encoded signal is then sent to an equalizer 825 for compensation of various frequency dependent impairments that occur during transmission through the air, such as phase and amplitude distortion. After equalizing the bit stream, the modulator 827 combines the signal with the RF signal generated at the RF interface 829. The modulator 827 generates a sine wave through frequency or phase modulation. To prepare the signal for transmission, upconverter 831 combines the sine wave output from modulator 827 with another sine wave generated by combiner 833 to obtain the desired transmission frequency. The signal is then transmitted through PA 819 to amplify the signal to the appropriate power level. In a practical system, the PA 819 acts as a variable gain amplifier whose gain is controlled by the DSP 805 based on information received from the network base station. The signal is then filtered in duplexer 821 and, in some embodiments, transmitted to antenna combiner 835 to match impedance and provide maximum power transfer. Finally, the signal is transmitted to the local base station via antenna 817. Automatic gain control (AGC) may be provided to control the final gain of the receiver. From there, the signal may be forwarded to a remote telephone, such as another cellular telephone, another mobile telephone, or a landline telephone connected to a public switched telephone network (PSTN) or other telephony network.

移動端末801に伝送される音声信号は、アンテナ817を介して受信され、即座に、低雑音増幅器(LNA)837によって増幅される。復調器839が、RFを除去して、デジタルビット流のみを残す間に、ダウンコンバータ841は、搬送波周波数を低下させる。次いで、信号は、等化器825を通過し、DSP805によって処理される。デジタル/アナログ変換器(DAC)843は、信号を変換し、得られた出力は、スピーカ845を通ってユーザに伝送され、これらは全て中央処理ユニット(CPU)(図示せず)として実装することができる、主制御ユニット(MCU)803の制御下で行われる。   An audio signal transmitted to the mobile terminal 801 is received via the antenna 817 and immediately amplified by a low noise amplifier (LNA) 837. While the demodulator 839 removes RF and leaves only the digital bit stream, the down converter 841 lowers the carrier frequency. The signal then passes through equalizer 825 and is processed by DSP 805. A digital-to-analog converter (DAC) 843 converts the signal and the resulting output is transmitted to the user through a speaker 845, all of which are implemented as a central processing unit (CPU) (not shown). It is performed under the control of a main control unit (MCU) 803.

MCU803は、キーボード847からの入力信号を含む、種々の信号を受信する。他のユーザ入力構成要素(例えば、マイクロホン811)と組み合わせて、キーボード847および/またはMCU803は、ユーザ入力を管理するためのユーザインターフェース回路を備える。MCU803は、スケーラブルなデータ構造を利用するプラットフォームからコンテンツを要求するために、移動端末801の少なくとも一部の機能のユーザ制御を円滑化するように、ユーザインターフェースソフトウェアを実行させる。MCU803はまた、ディスプレイコマンドおよび切替コマンドを、ディスプレイ807に、および音声出力切替コントローラに、それぞれ伝達する。さらに、MCU803は、DSP805と情報を交換し、実施形態によって組み込まれるSIMカード849およびメモリ851にアクセスすることができる。加えて、MCU803は、端末に必要とされる種々の制御機能を実行する。DSP805は、実装に依存して、音声信号における、多様な従来のデジタル処理機能のうちのいずれも遂行してもよい。加えて、DSP805は、マイクロホン811によって検出される信号から、ローカル環境の背景雑音レベルを判断し、マイクロホン811の利得を、移動端末801のユーザの自然な傾向を補償するために選択されるレベルに設定する。   The MCU 803 receives various signals including input signals from the keyboard 847. In combination with other user input components (eg, microphone 811), keyboard 847 and / or MCU 803 include user interface circuitry for managing user input. The MCU 803 causes the user interface software to execute to facilitate user control of at least some functions of the mobile terminal 801 to request content from a platform that utilizes a scalable data structure. The MCU 803 also communicates display commands and switching commands to the display 807 and to the audio output switching controller, respectively. Further, the MCU 803 can exchange information with the DSP 805 and access the SIM card 849 and the memory 851 incorporated by the embodiment. In addition, the MCU 803 performs various control functions required for the terminal. The DSP 805 may perform any of a variety of conventional digital processing functions on audio signals, depending on the implementation. In addition, the DSP 805 determines the background noise level of the local environment from the signal detected by the microphone 811 and sets the gain of the microphone 811 to a level selected to compensate for the natural tendency of the user of the mobile terminal 801. Set.

CODEC813は、ADC823と、DAC843とを含む。メモリ851は、着信呼音データを含む種々のデータを記憶し、例えば、グローバルなインターネットを介して受信される音楽データを含む、他のデータを記憶することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、レジスタ、または当該技術分野において知られる任意の他の形態の書き込み可能な記憶媒体に存在し得る。メモリデバイス851は、単一のメモリ、CD、DVD、ROM、RAM、EEPROM、光学記憶装置、またはデジタルデータを記憶することができる任意の他の非揮発性記憶媒体であってもよいが、これらに限定されない。   The CODEC 813 includes an ADC 823 and a DAC 843. The memory 851 stores various data including incoming call tone data, and can store other data including, for example, music data received via the global Internet. A software module may reside in RAM memory, flash memory, registers, or any other form of writable storage medium known in the art. Memory device 851 may be a single memory, CD, DVD, ROM, RAM, EEPROM, optical storage device, or any other non-volatile storage medium capable of storing digital data, It is not limited to.

任意に組み込まれたSIMカード849は、例えば、セルラ電話番号、搬送波供給サービス、加入詳細、およびセキュリティ情報といった、重要な情報を担持する。SIMカード849は、主に、無線ネットワーク上の移動端末801を識別するように機能する。カード849はまた、個人用電話番号レジストリ、テキストメッセージ、およびユーザ固有移動端末設定を記憶するためのメモリを格納する。   An optionally incorporated SIM card 849 carries important information such as, for example, cellular telephone numbers, carrier service, subscription details, and security information. The SIM card 849 mainly functions to identify the mobile terminal 801 on the wireless network. Card 849 also stores memory for storing personal telephone number registries, text messages, and user specific mobile terminal settings.

本発明を、いくつかの実施形態および実装と併せて説明してきたが、本発明はそのように限定されず、添付の請求項の範囲内にある、種々の明らかな修正および同じような構成をその範囲に含む。本発明の特性は、請求項間のある組み合わせにおいて表されるが、これらの特性は任意の組み合わせおよび順序において構成することができる。   Although the invention has been described in conjunction with several embodiments and implementations, the invention is not so limited and various obvious modifications and similar arrangements are within the scope of the appended claims. Included in that range. The characteristics of the invention are expressed in certain combinations between the claims, but these characteristics can be configured in any combination and order.

Claims (16)

装置のプロセッサでコンピュータプログラムが実行されることにより、前記装置が実行する方法であって、
エンティティ識別子および要求されるコンテンツを指定するクエリを受信および/または処理することと;
データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することと;
前記エンティティ識別子に対して、前記要求されたコンテンツへのアクセス権を示すことと;
を含み、前記データ構造はさらに、前記プロファイルフィールドおよび前記アクセス制御フィールドを含み、前記アクセス制御フィールドは、前記エンティティ識別子との比較によって前記アクセス権を指定するために利用され、前記要求されたコンテンツはキーワードを含み、前記検索は、前記キーワードに基づく前記プロファイルフィールドのテキスト検索を含み、
前記方法はさらに、少なくとも部分的に前記検索結果の伝送を行う、
方法。
A method executed by a device by executing a computer program on a processor of the device, comprising:
Receiving and / or processing a query specifying the entity identifier and the requested content;
Causing a search based at least in part on the entity identifier of a profile index of a data structure, at least partially specifying a profile field associated with an access control field to provide a search result To do;
Indicating an access right to the requested content for the entity identifier;
The data structure further includes the profile field and the access control field, wherein the access control field is utilized to specify the access rights by comparison with the entity identifier, and the requested content is Including a keyword, and the search includes a text search of the profile field based on the keyword,
The method further includes transmitting the search results at least in part.
Method.
前記アクセス権に基づいて、前記要求されたコンテンツを読み出すことを含み、前記検索は、アクセスを有することが示される前記検索結果のみを与える、請求項1に記載の方法。   The method of claim 1, comprising reading the requested content based on the access rights, wherein the search provides only the search results indicated to have access. 前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索される、請求項1または2に記載の方法。   The method according to claim 1 or 2, wherein the profile index is searched based on a comparison of the entity identifier and the access control field. 前記アクセス制御フィールドは複数のエンティティ識別子を含む、請求項1から3のいずれか1項に記載の方法。   The method according to claim 1, wherein the access control field includes a plurality of entity identifiers. 前記プロファイルフィールドは基本プロファイルフィールドであり、前記データ構造はさらに拡張プロファイルフィールドを含み、前記アクセス制御フィールドは、前記基本プロファイルフィールドおよび前記拡張プロファイルフィールドへのアクセス権を指定するために利用される、請求項4に記載の方法。   The profile field is a basic profile field, the data structure further includes an extended profile field, and the access control field is used to specify access rights to the basic profile field and the extended profile field. Item 5. The method according to Item 4. 前記プロファイルフィールドはさらに、前記データ構造のうちの1つ以上に対応するプロファイル識別子に関連付けられ、前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索され、前記プロファイル識別子は、前記データ構造のうちの1つにおける前記エンティティ識別子にのみ関連付けられる、請求項1からのいずれか1項に記載の方法。 The profile field is further associated with a profile identifier corresponding to one or more of the data structures, the profile index is searched based on a comparison of the entity identifier and the access control field, and the profile identifier is the data is associated with only in one said entity identifier of the structure a method according to any one of claims 1 to 5. 少なくとも1つのプロセッサと、コンピュータプログラムコードを格納する少なくとも1つのメモリとを備える装置であって、前記コンピュータプログラムコードは、前記少なくとも1つのプロセッサに実行されることにより、前記装置に処理を遂行させるように構成され、前記処理は少なくとも以下:
エンティティ識別子および要求されるコンテンツを指定するクエリを受信および/または処理することと;
データ構造のプロファイルインデックスの前記エンティティ識別子に少なくとも部分的に基づく検索を少なくとも部分的に生じさせること、ただし前記データ構造の各々は、検索結果を与えるべく、アクセス制御フィールドに関連付けられるプロファイルフィールドを少なくとも指定することと;
前記エンティティ識別子に対して、前記要求されたコンテンツへのアクセス権を示すことと;
を含み、前記データ構造はさらに、前記プロファイルフィールドおよび前記アクセス制御フィールドを含み、前記アクセス制御フィールドは、前記エンティティ識別子との比較によって前記アクセス権を指定するために利用され、前記要求されたコンテンツはキーワードを含み、前記検索は、前記キーワードに基づく前記プロファイルフィールドのテキスト検索を含み、
前記処理はさらに、少なくとも部分的に、前記検索結果の伝送を、少なくとも部分的に行うことを含む、
装置。
An apparatus comprising at least one processor and at least one memory storing computer program code, wherein the computer program code is executed by the at least one processor to cause the apparatus to perform processing. And the processing is at least the following:
Receiving and / or processing a query specifying the entity identifier and the requested content;
Causing a search based at least in part on the entity identifier of a profile index of a data structure, at least partially specifying a profile field associated with an access control field to provide a search result To do;
Indicating an access right to the requested content for the entity identifier;
The data structure further includes the profile field and the access control field, wherein the access control field is utilized to specify the access rights by comparison with the entity identifier, and the requested content is Including a keyword, and the search includes a text search of the profile field based on the keyword,
The process further includes at least partially performing transmission of the search results,
apparatus.
前記処理はさらに、少なくとも部分的に、
前記アクセス権に基づいて、前記要求されたコンテンツを読み出すことを含み、ここで前記検索は、アクセスを有することが示される前記検索結果のみを与える、請求項に記載の装置。
The processing is further at least partially
8. The apparatus of claim 7 , comprising reading the requested content based on the access right, wherein the search provides only the search results indicated to have access.
前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索される、請求項またはに記載の装置。 9. The apparatus according to claim 7 or 8 , wherein the profile index is searched based on a comparison of the entity identifier and the access control field. 前記アクセス制御フィールドは複数のエンティティ識別子を含む、請求項からのいずれか1項に記載の装置。 Wherein the access control field comprises a plurality of entity identifiers, apparatus according to any one of claims 7 to 9. 前記プロファイルフィールドは基本プロファイルフィールドであり、前記データ構造はさらに拡張プロファイルフィールドを含み、前記アクセス制御フィールドは、前記基本プロファイルフィールドおよび前記拡張プロファイルフィールドへのアクセス権を指定するために利用される、請求項10に記載の装置。 The profile field is a basic profile field, the data structure further includes an extended profile field, and the access control field is used to specify access rights to the basic profile field and the extended profile field. Item 10. The apparatus according to Item 10 . 前記プロファイルフィールドはさらに、前記データ構造のうちの1つ以上に対応するプロファイル識別子に関連付けられ、前記プロファイルインデックスは、前記エンティティ識別子と前記アクセス制御フィールドとの比較に基づいて検索され、前記プロファイル識別子は、前記データ構造のうちの1つにおける前記エンティティ識別子にのみ関連付けられる、請求項から11のいずれか1項に記載の装置。 The profile field is further associated with a profile identifier corresponding to one or more of the data structures, the profile index is searched based on a comparison of the entity identifier and the access control field, and the profile identifier is 12. Apparatus according to any one of claims 7 to 11 , associated only with the entity identifier in one of the data structures. 前記装置は移動電話であって、
ディスプレイの使用を通じて、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成され、かつユーザ入力に応答するように構成される、ユーザインターフェース回路およびユーザインターフェースソフトウェアと;
前記移動電話のユーザインターフェースのうちの少なくとも一部分を表示するように構成される、ディスプレイおよび表示回路であって、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成される、ディスプレイおよび表示回路と、
をさらに備える、請求項から12のいずれか1項に記載の装置。
The device is a mobile phone,
User interface circuitry and user interface software configured to facilitate user control of at least some functions of the mobile phone through use of a display and configured to respond to user input;
A display and display circuit configured to display at least a portion of a user interface of the mobile phone, wherein the display and display circuit are configured to facilitate user control of at least some functions of the mobile phone; A display and a display circuit;
The apparatus according to any one of claims 7 to 12 , further comprising:
1つ以上のプロセッサによって実行される時、装置に、少なくとも請求項1からのいずれか1項に記載の方法を遂行させる、1つ以上の命令の1つ以上のシーケンスを格納する、コンピュータ可読記憶媒体。 A computer readable storage of one or more sequences of one or more instructions that, when executed by one or more processors, cause the apparatus to perform at least the method of any one of claims 1-6. Storage medium. 請求項1からのいずれか1項に記載の方法を遂行するための手段を備える、装置。 Apparatus comprising means for performing the method according to any one of claims 1 to 6 . 前記装置は移動電話であり、
ディスプレイの使用を通じて、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成され、かつユーザ入力に応答するように構成される、ユーザインターフェース回路およびユーザインターフェースソフトウェアと;
前記移動電話のユーザインターフェースのうちの少なくとも一部分を表示するように構成される、ディスプレイおよび表示回路であって、前記移動電話の少なくとも一部の機能のユーザ制御を円滑化するように構成される、ディスプレイおよび表示回路と、
をさらに備える、請求項15に記載の装置。
The device is a mobile phone;
User interface circuitry and user interface software configured to facilitate user control of at least some functions of the mobile phone through use of a display and configured to respond to user input;
A display and display circuit configured to display at least a portion of a user interface of the mobile phone, wherein the display and display circuit are configured to facilitate user control of at least some functions of the mobile phone; A display and a display circuit;
The apparatus of claim 15 , further comprising:
JP2012545363A 2009-12-22 2010-11-16 Method and apparatus for utilizing scalable data structures Expired - Fee Related JP5544431B2 (en)

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 (en) 2013-05-02
JP5544431B2 true JP5544431B2 (en) 2014-07-09

Family

ID=44152558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012545363A Expired - Fee Related JP5544431B2 (en) 2009-12-22 2010-11-16 Method and apparatus for utilizing scalable data structures

Country Status (8)

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

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
WO2014153649A1 (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 (en) * 2014-12-23 2016-04-13 哈尔滨安天科技股份有限公司 Distributed storage system based on extensible messaging and presence protocol (XMPP)
US11250011B2 (en) * 2017-03-10 2022-02-15 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 (en) * 2017-12-01 2019-10-25 Idemia Identity And Security METHOD OF SHARING A KEY FOR DERIVING SESSION KEYS TO CRYPT AND AUTHENTICATE COMMUNICATIONS BETWEEN AN OBJECT AND A SERVER
WO2019193105A1 (en) * 2018-04-05 2019-10-10 Nokia Technologies Oy Unified subscription identifier management in communication systems
CN110401618A (en) * 2018-04-24 2019-11-01 中国移动通信集团广东有限公司 The method and device of block chain data access control
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 (en) * 2018-12-26 2020-06-11 주식회사 엘지씨엔에스 Method for providing actual data through synchronized table and data managing system
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
WO2006021088A1 (en) * 2004-08-26 2006-03-02 Omnibranch Wireless Solutions, Inc. Opt-in directory of verified individual profiles
US7882122B2 (en) * 2005-03-18 2011-02-01 Capital Source Far East Limited 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
WO2007002820A2 (en) * 2005-06-28 2007-01-04 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 (en) * 2006-03-24 2011-12-14 キヤノン株式会社 Document management apparatus, document management method, and program
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 (en) * 2006-12-20 2013-02-06 リプレックス株式会社 System, server, information terminal, operating system, middleware, information communication device, authentication method, system, and application software
JP2008177713A (en) * 2007-01-17 2008-07-31 Nec Corp Portable terminal device, mobile communication system, and mass-communication promotion method
JP2008197839A (en) * 2007-02-09 2008-08-28 Fujifilm Corp Information management device, method and program
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 (en) * 2007-07-24 2013-04-24 日本電信電話株式会社 Community communication network, communication control method, community management server, community management method, and program
US7809751B2 (en) * 2007-08-27 2010-10-05 Sap Ag Authorization controlled searching
CA2696945C (en) * 2007-09-07 2014-12-02 Facebook, Inc. Dynamically updating privacy settings in a social network
JP5267062B2 (en) * 2007-11-16 2013-08-21 ソニー株式会社 Information processing apparatus, information processing method, content viewing apparatus, content display method, program, and information sharing system
JP2009140051A (en) * 2007-12-04 2009-06-25 Sony Corp Information processor, information processing system, recommendation device, information processing method and storage medium
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 (en) * 2008-03-04 2009-09-17 Hitachi Software Eng Co Ltd File search program
JP5266841B2 (en) * 2008-03-31 2013-08-21 富士通株式会社 Virtual community management system, virtual community management method, and computer program
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
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
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5544431B2 (en) Method and apparatus for utilizing scalable data structures
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
US9122532B2 (en) Method and apparatus for executing code in a distributed storage platform
JP5451954B1 (en) Apparatus and method for composite term index of graph data
US8655894B2 (en) Method and apparatus for index generation and use
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
EP2553614A1 (en) Method and apparatus for context-indexed network resources
US8527480B1 (en) Method and system for managing versioned structured documents in a database
KR101962715B1 (en) Short-term hashes
US8930361B2 (en) Method and apparatus for cleaning data sets for a search process
CA2802458C (en) Synchronizing endpoint data stores having disparate schemas
US20100223240A1 (en) System and method for composite record keys ordered in a flat key space for a distributed database
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
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 (en) Storage device provided with full-text search function

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