"装置であって、1または複数のメモリデバイス内に格納されたインデックスと;1又は複数のインデックスサーバとを備え、前記インデックスは、タームと文書識別子とをそれぞれが有する複数のインデックスエントリを有し、前記インデックスエントリのうちの少なくとも1つは、文書識別子およびコンポジットタームを有し、前記コンポジットタームは、2以上のデータオブジェクト属性を有し、前記文書識別子のそれぞれは、複数のデータオブジェクトのうちの1つのデータオブジェクトに対応し、前記1または複数のインデックスサーバは、1または複数の属性値からなるクエリにアクセスし、前記1または複数の属性値に対して前記インデックスを検索することによって、前記クエリに一致する1または複数のデータオブジェクトを識別し、前記クエリに一致する前記1または複数の識別されたデータオブジェクトに対応するオブジェクト識別子を返すように動作する、装置。前記装置はさらに、タームプロデューサを備え、前記タームプロデューサは、複数のデータオブジェクト属性をからなるデータオブジェクトにアクセスし、前記データオブジェクトを解析することによって、前記データオブジェクトの1または複数のインデックスエントリを作成するように動作する、請求項1に記載の装置。前記タームプロデューサは、文書識別子/タームペアの集合を出力するように動作可能であり、前記集合内のペアのタイプは、前記データオブジェクトの対応するオブジェクトタイプに基づき、前記タームのうちの少なくとも1つは、複数のオブジェクト属性からなるコンポジットタームである、請求項2に記載の装置。前記データオブジェクトのうちの少なくとも1つは、ソース識別子と、宛先識別子と、エッジタイプ識別子とを有するエッジオブジェクトを備える、請求項1に記載の装置。前記文書識別子/タームペアは、エッジオブジェクトの文書識別子および接続タイプを識別するタームを有するエッジタイプペアと、前記エッジオブジェクトの文書識別子およびソースデータオブジェクトを識別するタームを有するソースペアと、前記エッジオブジェクトの文書識別子および宛先データオブジェクトを識別するタームからなる宛先ペアとのうちの1または複数を有する、請求項3に記載の装置。前記文書識別子/タームペアは、ソースオブジェクトの文書識別子と、エッジオブジェクトの接続タイプおよび宛先オブジェクトの文書識別子を識別するコンポジットタームとを有する、接続タイプおよびソースペアと、前記ソースオブジェクトの文書識別子と、前記宛先オブジェクトの接続および文書識別子を識別するコンポジットタームとを有する、接続およびソースペアと、前記宛先オブジェクトの文書識別子と、前記エッジオブジェクトの接続タイプおよび前記ソースオブジェクトの文書識別子を識別するコンポジットタームとを有する、接続タイプおよび宛先ペアと、前記宛先オブジェクトの文書識別子と、前記ソースオブジェクトの接続および文書識別子を識別するコンポジットタームとからなる、接続および宛先ペアとのうちの1または複数を備える、請求項3に記載の装置。前記文書識別子は、オブジェクト識別子およびタイムスタンプを有する、請求項1に記載の装置。前記インデックスは、1または複数のレプリケーションインデックスを有する、請求項1に記載の装置。前記インデックスは、それぞれが文書識別子空間の一部が割り当てられる複数のシャードを有する、請求項1に記載の装置。方法であって、前記方法は、1または複数のメモリデバイス内に格納されたインデックスを維持することであって、前記インデックスは、複数のインデックスエントリを有し、各エントリは、タームおよび文書識別子を有り、前記インデックスエントリのうちの少なくとも1つは、文書識別子およびコンポジットタームを有し、前記コンポジットタームは、複数のデータオブジェクト属性を有し、前記文書識別子のそれぞれは、複数のデータオブジェクトのうちの1つのデータオブジェクトに対応することと;前記1または複数のインデックスサーバが、1または複数の属性値を有するクエリにアクセスすることと;前記1または複数の属性値に対して前記インデックスを検索することによって、前記クエリに一致する1または複数のデータオブジェクトを識別することと;前記クエリに一致する前記1または複数の識別されたデータオブジェクトに対応するオブジェクト識別子を返すこととを有する、方法。前記方法はさらに、タームプロデューサが、複数のデータオブジェクト属性からなるデータオブジェクトにアクセスすることと;前記データオブジェクトを解析することによって、前記データオブジェクトの1または複数のインデックスエントリを作成することとを有する、請求項10に記載の方法。前記方法はさらに、前記タームプロデューサが文書識別子/タームペアの集合を出力することを有し、前記集合内のペアのタイプは、前記データオブジェクトの対応するオブジェクトタイプに基づき、前記タームのうちの少なくとも1つは、複数のオブジェクト属性を有するコンポジットタームである、請求項11に記載の方法。前記データオブジェクトのうちの少なくとも1つは、エッジオブジェクトを備え、前記エッジオブジェクトは、ソース識別子と、宛先識別子と、エッジタイプ識別子とを有する、請求項10に記載の方法。前記文書識別子/タームペアは、エッジオブジェクトの文書識別子および接続タイプを識別するタームを有するエッジタイプペアと、前記エッジオブジェクトの文書識別子およびソースデータオブジェクトを識別するタームを有するソースペアと、前記エッジオブジェクトの文書識別子および宛先データオブジェクトを識別するタームを有する宛先ペアとのうちの1または複数からなる、請求項12に記載の方法。前記文書識別子/タームペアは、ソースオブジェクトの文書識別子と、エッジオブジェクトの接続タイプおよび宛先オブジェクトの文書識別子を識別するコンポジットタームとを有する、接続タイプおよびソースペアと、前記ソースオブジェクトの文書識別子と、前記宛先オブジェクトの接続および文書識別子を識別するコンポジットタームとを有する、接続およびソースペアと、前記宛先オブジェクトの文書識別子と、前記エッジオブジェクトの接続タイプおよび前記ソースオブジェクトの文書識別子を識別するコンポジットタームとを有する、接続タイプおよび宛先ペアと、前記宛先オブジェクトの文書識別子と、前記ソースオブジェクトの接続および文書識別子を識別するコンポジットタームとを有する、接続および宛先ペアとのうちの1または複数を備える、請求項12に記載の方法。前記文書識別子は、オブジェクト識別子およびタイムスタンプからなる、請求項10に記載の方法。前記インデックスは、1または複数のレプリケーションインデックスからなる、請求項10に記載の方法。前記インデックスは、それぞれが文書識別子空間の一部が割り当てられる複数のシャードからなる、請求項10に記載の方法。1または複数のプロセッサを動作させる命令を有する非一時的コンピュータ可読媒体であって、前記命令は、前記1または複数のプロセッサに、1または複数の属性値からなるクエリにアクセスすることと;前記クエリに一致する1または複数のデータオブジェクトを識別するために前記1または複数の属性値に対してインデックスを検索することであって、前記インデックスは、1または複数のメモリデバイス内に格納され、前記インデックスは、複数のインデックスエントリからなり、各エントリは、タームおよび文書識別子からなり、前記インデックスエントリのうちの少なくとも1つは、文書識別子およびコンポジットタームからなり、前記コンポジットタームは、複数のデータオブジェクト属性からなり、前記文書識別子のそれぞれは、複数のデータオブジェクトのうちの1つのデータオブジェクトに対応する、検索することと;前記クエリに一致する前記1または複数の識別されたデータオブジェクトに対応するオブジェクト識別子を返すこととを行わせるように動作可能である、非一時的コンピュータ可読媒体。前記命令はさらに、前記1または複数のプロセッサに、複数のデータオブジェクト属性からなるデータオブジェクトにアクセスすることと;前記データオブジェクトを解析することによって、前記データオブジェクトの1または複数のインデックスエントリを作成することとを行わせるように動作可能である、請求項19に記載のコンピュータ可読媒体。しかし、グラフ構造でのデータのモデル化は、スケーラビリティおよび性能に難題を課す。グラフ構造のトラバースを必要とするクエリは、多数のデータベースルックアップを必要とする可能性がある。非常にスケーラブルなシステムは、通常、クエリ応答時間および全体的な性能を改善するために、キャッシングおよびインデクシングに依存する。本発明は、グラフデータのインデクシングシステムを対象とする方法、装置、およびシステムを提供する。特定の実装形態では、インデクシングシステムは、クエリ性能を改善するために非正規化およびレプリケーションインデックス機能性を提供する。本開示の上記および他の特徴、態様、および利点を、下の発明を実施するための形態で、次の図面に関連して詳細に説明する。これから、本発明を、添付図面に示されたその少数の実施形態を参照して詳細に説明する。次の説明では、本開示の完全な理解を提供するために、多数の具体的な詳細を示す。しかし、本開示を、これらの具体的な詳細の一部またはすべてを伴わずに実践できることは、当業者には明白である。他の場合には、周知の工程ステップおよび/または構造は、本開示を不必要に不明瞭にしないようにするために、詳細には説明しない。さらに、本開示が、特定の実施形態に関連して説明されるが、この説明が、本開示を説明される実施形態に限定することを意図されたものではないことを理解されたい。逆に、説明は、添付の特許請求の範囲によって定義される本開示の趣旨および範囲に含めることができる代替案、修正形態、および同等物を包含することを意図されたものである。特定の実装形態では、本発明は、データオブジェクトおよびデータオブジェクトの間の関連付けに対する柔軟な検索能力を提供するデータベースインデックスインフラストラクチャを対象とする。特定の実施形態は、ノードと、エッジがグラフ内で接続されるノードの間の関連付けまたは関係を定義するエッジとを含むグラフとしてモデル化された情報を格納し、サービングするインデクシングシステムに関する。特定の実施形態では、グラフは、ソーシャルグラフであるかソーシャルグラフを含み、インデクシングシステムは、統合されたソーシャルネットワーク環境を可能にする、より大きいネットワーキングシステム、インフラストラクチャ、またはプラットフォームの一部である。本開示では、ソーシャルネットワーク環境は、ソーシャルグラフ情報を含むソーシャルグラフに関して説明される場合がある。実際に、本開示の特定の実施形態は、ソーシャルネットワーク環境によってまたはソーシャルネットワーク環境のために格納されるデータのほとんどまたはすべてを、ソーシャルグラフとして表すことができるという事実に依存し、これを活用し、またはこれを利用する。特定の実施形態は、本明細書で説明されるものなどのソーシャルネットワーク環境のユーザの指数関数的に増加する人数に伴って効率的に、知的に、かつ成功してスケーリングすることのできるコスト効率のよいインフラストラクチャを提供する。特定の実施形態では、本明細書で説明される分散インデクシングシステムおよびバックエンドインフラストラクチャは、大規模での低レイテンシ、1要求あたりのより低いコスト、開発者にとって使い易いフレームワーク、本明細書で例によって説明される、ソーシャルグラフの関連付けエッジとオブジェクトノードとの両方を用いる組み合わされたクエリを可能にするインフラストラクチャ、格納されたオブジェクトおよび関連付けに関する柔軟で表現力のあるクエリモデルを提供するインフラストラクチャ、およびPHPから直接に呼び出すのが簡単なインフラストラクチャのうちの1または複数を提供する。さらに、本明細書で使用される時に、またはは、およびならびにまたはを意味する場合がある、すなわち、またはは、明示的に述べられるか暗黙のうちに暗示されない限り、およびを必ずしも除外しない。特定の実施形態は、インターネットなど、複数のネットワークアドレス可能システムを含む広域ネットワーク環境で動作することができる。図3に、様々な例示的な実施形態がその中で動作することのできる、例示的なネットワーク環境を示す。ネットワーククラウド60は、一般に、本明細書で説明されるシステムおよびホストがそれを介して通信できる、1または複数の相互接続されたネットワークを表す。ネットワーククラウド60は、パケットベースの広域ネットワークインターネットなど、プライベートネットワーク、無線ネットワーク、衛星ネットワーク、セルラネットワーク、ページングネットワーク、および類似物を含むことができる。図3に示されているように、特定の実施形態は、ソーシャルネットワーキングシステム20および1または複数のクライアントデバイス30を備えるネットワーク環境内で動作することができる。クライアントデバイス30は、ネットワークサービスプロバイダ、無線搬送波、または任意の他の適切な手段を介してネットワーク環境に動作可能に接続される。1つの例示的な実施形態では、ソーシャルネットワーキングシステム20は、本明細書で説明されるように、ユーザがお互いと通信するか他の形でやり取りし、ユーザプロファイルなどのコンテンツにアクセスすることを可能にするコンピューティングシステムを備える。ソーシャルネットワーキングシステム20は、様々な例示的な実施形態で、1または複数の物理サーバ22およびデータストア24を備えるネットワークアドレス可能システムである。1または複数の物理サーバ22は、たとえばルータおよび/またはネットワーキングスイッチ26のセットを介してコンピュータネットワーク60に動作可能に接続される。例示的な実施形態では、1または複数の物理サーバ22によってホスティングされる機能性は、ウェブサーバまたはHTTPサーバ、FTPサーバ、ならびに、限定なしに、CommonGatewayInterfaceCGIスクリプト、PHPHyper-textPreprocessorPHP、ActiveServerPagesASP、ハイパーテキストマークアップ言語HTML、ExtensibleMarkupLanguageXML、JAVA登録商標、JAVASCRIPT登録商標、AsynchronousJAVASCRIPT登録商標andXMLAJAX、および類似物を使用して実施されたウェブページおよびアプリケーションを含むことができる。物理サーバ22は、ソーシャルネットワーキングシステム20の動作に向けられた機能性をホスティングすることができる。たとえば、ソーシャルネットワーキングシステム20は、1または複数のクライアントデバイス30の1または複数のユーザが、情報を見、ポストすると同時に、ウェブサイトを介してお互いと通信することを可能にするウェブサイトをホスティングすることができる。以下では、複数のサーバ22は、サーバ22と呼ばれる場合があるが、サーバ22は、たとえばソーシャルネットワーキングシステム20ならびに他のコンテンツ配布サーバ、データストア、およびデータベースをホスティングする多数のサーバを含むことができる。データストア24は、ソーシャルネットワーキングシステムの動作に関連し、動作を可能にするコンテンツおよびデータをディジタルデータオブジェクトとして格納することができる。データオブジェクトは、特定の実装形態で、通常はデータファイル、データベース、またはレコードに格納されまたはその中で実施されるディジタル情報のアイテムである。コンテンツオブジェクトは、テキストたとえば、ASCII、SGML、HTML、イメージたとえば、jpeg、tif、およびgif、グラフィックスベクトルベースのまたはビットマップ、オーディオ、ビデオたとえば、mpeg、または他のマルチメディア、およびその組合せを含む多数の形をとることができる。コンテンツオブジェクトデータは、実行可能コードオブジェクトたとえば、ブラウザウィンドウまたはフレーム内で実行可能なゲーム、ポッドキャスト、その他を含むこともできる。論理的に、データストア24は、関係データベースおよびオブジェクト指向データベースなど、1または複数の物理システムに格納された論理的に関係するレコードまたはファイルの統合されたコレクションとして情報を維持する様々な別々のデータベースおよび統合されたデータベースのうちの1または複数に対応する。構造的に、データストア24は、一般に、データストレージおよび管理システムの大きいクラスのうちの1または複数を含むことができる。特定の実施形態では、データストア24を、1または複数のデータベースサーバ、マスストレージメディア、メディアライブラリシステム、ストレージエリアネットワーク、データストレージクラウド、および類似物などのコンポーネントを含む任意の適切な物理システム1または複数によって実施することができる。1つの例示的な実施形態では、データストア24は、1または複数のサーバ、データベースたとえば、MySQL、および/またはデータウェアハウスを含む。データストア24は、異なるソーシャルネットワーキングシステム20のユーザおよび/またはクライアントデバイス30に関連するデータを含むことができる。特定の実施形態では、ソーシャルネットワーキングシステム20は、システム20のユーザごとにユーザプロファイルを維持する。ユーザプロファイルは、ソーシャルネットワークのユーザを記述するデータを含み、このデータは、たとえば、正式名称人のファーストネーム、ミドルネーム、およびラストネーム、企業の商号および/または会社名など生物学的、人口統計的、ならびに、職歴、学歴、趣味または好み、地理的位置、および追加の記述データなどの他のタイプの記述情報を含むことができる。たとえば、ユーザプロファイルは、ユーザの誕生日、関係状況relationshipstatus、居住都市、および類似物を含むことができる。システム20は、さらに、異なるユーザ同士の間の1または複数の関係を記述するデータを格納することができる。関係情報は、類似するまたは共通の職歴、グループメンバシップ、趣味、または学歴を有するユーザを示すことができる。ユーザプロファイルは、他のユーザによるユーザの情報へのアクセスがそれに基づいて決まるプライバシセッティングを含むこともできる。クライアントデバイス30は、一般に、コンピュータネットワークを介してたとえば、リモートに通信する機能性を含むコンピュータまたはコンピューティングデバイスである。クライアントデバイス30を、他の適切なコンピューティングデバイスの中でも、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末PDA、車内もしくは車外のナビゲーションシステム、スマートホンもしくは他のセルラホンもしくは携帯電話機、またはモバイルゲーミングデバイスとすることができる。クライアントデバイス30は、ウェブブラウザたとえば、MicrosoftWindowsInternetExplorer登録商標、MozillaFirefox登録商標、AppleSafari登録商標、GoogleChrome登録商標、およびOpera登録商標などなど、コンピュータネットワークを介してコンテンツにアクセスし、これを見るための、1または複数のクライアントアプリケーションを実行することができる。特定の実装形態では、クライアントアプリケーションは、クライアントデバイス30のユーザが、ソーシャルネットワーキングシステム20によってホスティングされるリソースなど、取り出されるべき特定のネットワークリソースのアドレスを入力することを可能にする。これらのアドレスを、UniformResourceLocatorすなわちURLとすることができる。さらに、ページまたは他のリソースが取り出された後に、クライアントアプリケーションは、ユーザが他のリソースへのハイパーリンクをクリックする時に、他のページまたは他のリソースへのアクセスを提供することができる。たとえば、そのようなハイパーリンクは、ウェブページ内に配置され得、ユーザが別のページへのURLを入力し、そのページを取り出すための自動化された形を提供することができる。図1に、図3に示されたソーシャルネットワーキングシステム20のバックエンド機能を実施することのできるネットワーキングシステム、アーキテクチャ、またはインフラストラクチャ100以下ではネットワーキングシステム100と呼ばれるの例示的な実施形態を示す。特定の実施形態では、ネットワーキングシステム100は、ネットワーキングシステム100のユーザが、ネットワーキングシステム100によって提供されるソーシャルネットワーキングサービスを介してお互いとならびに第三者とやり取りすることを可能にする。たとえば、リモートユーザコンピューティングデバイスたとえば、パーソナルコンピュータ、ネットブック、マルチメディアデバイス、セルラ電話機特にスマートホンなどのユーザは、情報を見、情報を格納しもしくは更新し、情報を通信し、または他のユーザ、サードパーティウェブサイト、ウェブページ、もしくはウェブアプリケーション、もしくはネットワーキングシステム100によって格納され、ホスティングされ、またはアクセス可能である他の情報と他の形でやり取り相互作用するために、少なくとも部分的にネットワーキングシステム100によってホスティングされまたはアクセス可能であるウェブサイト、ウェブページ、またはウェブアプリケーションにアクセスするために、ウェブブラウザまたは他のユーザクライアントアプリケーションを介してネットワーキングシステム100にアクセスすることができる。特定の実施形態では、ネットワーキングシステム100は、下でより詳細に説明されるように、ユーザ、コンセプト、トピック、および他の情報データを表すグラフノードと、グラフノード同士の間を接続するかその間の関係を定義するグラフエッジとを含むグラフを維持する。図1を参照すると、特定の実施形態で、ネットワーキングシステム100は、ネットワーキングシステム100のユーザへおよびこれから情報を通信する複数のクライアントサーバまたはウェブサーバ104以下ではクライアントサーバ104を含む。たとえば、リモートユーザコンピューティングデバイスのユーザは、ロードバランサまたは他の適切なシステムを介し、ネットワークおよびサービスプロバイダの任意の適切な組合せを介して、クライアントサーバ104と通信することができる。クライアントサーバ104は、ユーザ要求に応答するために構造化文書を生成するためにデータを取り出すために、本明細書で説明されるインデックスシステムおよびデータベースシステムに照会することができる。ネットワーキングシステム100は、1または複数のインデックスサーバ106を備えるインデックスレイヤ、1または複数のキャッシュサーバを備えるキャッシュレイヤ108、ならびに1または複数のデータベースサーバおよび関連するデータベース管理機能性110を備えるデータベースレイヤをも備える。データベース110は、一般に、他のクエリタイプを処理するための他のキャッシュレイヤをそれ自体で含むことができるデータベースシステムを意味する。各クライアントサーバ104は、キャッシュレイヤ108と通信する。キャッシュレイヤ108を、1または複数の分散キャッシュクラスタまたは分散キャッシュリングとして実施することができる。1実施態様では、キャッシュレイヤ108は、ライトスルー/リードスルーキャッシュレイヤであり、すべての読取および書込は、キャッシュレイヤをトラバースする、1実装形態では、キャッシュレイヤは、関連付け情報を維持し、したがって、そのような情報に関するクエリを処理することができる。他のクエリは、実行のためにデータベース110にパススルーされる。特定の実施形態では、データベース110は、関係データベースである。データベース110を、MySQL、および/またはたとえばとりわけHAYSTACK、CASSANDRAなどの任意の適切な関係データベース管理システムとして実施することができる。特定の実施形態では、キャッシュレイヤ108は、データベース110の任意の適切な実装形態と相互作用するように動作可能なプラグインを含むことができる。1実装形態では、プラグインは、グラフノードおよびグラフエッジとしてキャッシュレイヤに格納されたデータを、1または複数のテーブルまたはフラットファイルを含む関係データベースに適するクエリおよびコマンドに変換することなど、様々な変換動作を実行する。特定の実施形態では、ネットワーキングシステム100によって格納される情報は、データベース110およびキャッシュレイヤ108内に格納される。特定の実施形態では、各データベース110内に格納される情報は、関係的にたとえば、MySQLを介してオブジェクトおよびテーブルとして格納され、同一の情報が、グラフノードと、ノードの間の関連付けまたは接続以下ではグラフエッジと呼ばれるとを含むグラフの形でキャッシュレイヤによって格納される。特定の実施形態では、各グラフノードまたはオブジェクトには、グラフ内のグラフノードを一意に識別する一意識別子ID以下ではノードIDと呼ばれるが割り当てられる;すなわち、各ノードIDは、グローバルに一意である。1実装形態では、各ノードIDは、64ビット識別子である。1実装形態では、シャードには、ノードID空間の1セグメントが割り当てられる。特定の実施形態では、グラフは、ユーザ、ページ、イベント、ウォールポスト、コメント、写真、ビデオ、背景情報、コンセプト、興味、およびノードとして表すのに有用である任意の他の要素など、様々な異なるノードタイプを維持することができる。エッジタイプは、ノード同士の間の関連付けに対応し、友達、フォロワ、サブスクライバ、ファン、いいねまたは興味の他の表示、ウォールポスト、コメント、リンク、提案、推奨、およびノード同士の間の他のタイプの関連付けを含むことができる。1実装形態では、グラフの一部を、ソーシャルネットワーク環境のそれぞれのユーザにそれぞれが対応するユーザノードを含むソーシャルグラフとすることができる。ソーシャルグラフは、トピックノードだけでなく、それぞれが特定のコンセプトの専用であるかこれを対象とするコンセプトノードなどの他のノードをも含むことができる。トピックノードは、一時的ephemeralであってもなくてもよく、それぞれは、ソーシャルネットワーク環境のユーザ同士の間で現在興味を持たれている特定のトピックの専用であるかこれを対象とする。特定の実施形態では、各ノードは、ソーシャルネットワーク環境内でホスティングされまたはアクセス可能である対応するウェブページプロファイルページを有し、表し、またはこれによって表される。たとえば、ユーザノードは、対応するユーザプロファイルページを有することができる。対応するユーザプロファイルページでは、対応するユーザは、コンテンツを追加し、宣言を行い、他の形で彼自身または彼女自身を表現することができる。たとえば、下で説明するように、たとえばユーザプロファイルページ、コンセプトプロファイルページ、またはトピックプロファイルページなど、ソーシャルネットワーク環境内でホスティングされまたはアクセス可能である様々なウェブページは、ユーザが、コンテンツをポストし、ステータス更新をポストし、メッセージをポストし、そのユーザまたは他のユーザによってサブミットされた他のポストに対するコメントを含むコメントをポストし、興味を宣言し、前述のポストならびにページおよび特定のコンテンツのいずれかに向かっていいね下で説明するを宣言し、あるいは、他の形で彼ら自身を表現するか様々なアクション以下では、これらおよび他のユーザアクションを、集合的にポストまたはユーザアクションと呼ばれる場合があるを実行することを可能にする。或る実施形態では、ポストpostingは、メディアコンテンツたとえば、写真、ビデオ、音楽、テキストなど、uniformresourcelocatorURL、および他のノードなどの追加コンテンツに、そのそれぞれのプロファイルページ、他のユーザプロファイルページ、コンセプトプロファイルページ、トピックページ、または他のウェブページもしくはウェブアプリケーションを介してリンクしまたは他の形で参照することを含むことができる。そのようなポスト、宣言、またはアクションを、作成するユーザならびに他のユーザによって可視とするviewableことができる。特定の実施形態では、ソーシャルグラフは、さらに、それぞれがソーシャルグラフ内のノードの対応するペアの間betweenacorrespondingpairの接続を定義しまたは表す複数のエッジを含む。上で述べたように、コンテンツの各アイテムを、他のノードにリンクされたグラフ内のノードとすることができる。すぐ上で説明したように、様々な例示的な実施形態では、1または複数の説明されるウェブページまたはウェブアプリケーションは、ソーシャルネットワーク環境またはソーシャルネットワーキングサービスに関連する。本明細書で使用される時に、ユーザは、そのようなソーシャルネットワーク環境とまたはこれを介してやり取りしまたは通信する、個人人間のユーザ、エンティティたとえば、企業、会社、またはサードパーティアプリケーション、またはたとえば、個人のまたはエンティティのグループとすることができる。本明細書で使用される時に、登録ユーザは、ソーシャルネットワーク環境内で公式に登録されたユーザを指す一般に、本明細書で説明されるユーザおよびユーザノードは、登録ユーザだけを指すが、これは、他の実施形態では必ずしも要件ではない;すなわち、他の実施形態では、本明細書で説明されるユーザおよびユーザノードが、本明細書で説明されるソーシャルネットワーク環境に登録されていないユーザを指す場合がある。特定の実施形態では、各ユーザは、対応するプロファイルページを有し、対応するプロファイルページは、ソーシャルネットワーク環境によって格納され、ホスティングされ、またはアクセス可能であり、他のユーザのすべてまたは選択されたサブセットによって可視である。一般に、ユーザは、彼または彼女自身のそれぞれのプロファイルページのすべてまたは一部に対する、ならびに潜在的に、たとえば他の可能性の中でも、ホームページ、ウェブアプリケーションをホスティングするページを含む特定のユーザによってまたはこれのために作成された他のページに対する管理権を有する。本明細書で使用される時に、認証されたユーザは、そのユーザが管理権を有する対応するプロファイルページで主張されるユーザであるものとしてソーシャルネットワーク環境によって認証されたユーザを、または代替では、主張されるユーザの適切に信頼される代理人を指す。2つのユーザ同士またはコンセプト同士の間の接続は、ソーシャルネットワーク環境のユーザ同士またはコンセプト同士の間の定義された関係を表すことができ、それに関して関連付けが行われたソーシャルネットワーク環境のユーザ、コンセプト、イベント、または他のノードに対応するノード同士の間のエッジとして、ソーシャルネットワーク環境の適切なデータ構造内で論理的に定義され得る。本明細書で使用される時に、friendshipは、ソーシャルネットワーク環境のユーザのペアの間の、定義されたソーシャル関係などの関連付けを表す。本明細書で使用される時に、友達は、別のユーザが接続、friendship、関連付け、または関係を形成し、2人のユーザの間にエッジを生成させた、ソーシャルネットワーク環境の任意のユーザを指すことができる。たとえば、2人の登録ユーザは、たとえば、2人のユーザの一方が、他方のユーザにfriendship要求を送信するか送信させた結果としてfriendshipについて他方を選択することによるなど、明示的にお互いに友達になることができる。その要求について、他方のユーザは、受け入れまたは拒否することができる。代替案では、friendshipまたは他の接続を、自動的に確立することができる。そのようなソーシャルfriendshipを、他のユーザ、特に彼ら自身が登録ユーザの一方または両方の友達であるユーザに可視とすることができる。登録ユーザの友達は、登録ユーザのプロファイルまたは他のページ上のコンテンツ、特にユーザ生成コンテンツまたは宣言されたコンテンツに対する高められたアクセス特権increasedaccessprivilegesを有することもできる。しかし、ソーシャルグラフ内で彼らの間に友達接続を確立させた2人のユーザが、実生活ソーシャルネットワーキング環境の外部では必ずしも通常の意味での友達ではない場合があることに留意されたい。たとえば、或る実装形態で、あるユーザが、会社または他の人間以外のエンティティであり、したがって、この単語の伝統的な意味で、人間のユーザの友達になることができない場合がある。本明細書で使用される時に、ファンは、特定のユーザ、ウェブページ、ウェブアプリケーション、またはソーシャルネットワーク環境内でアクセス可能な他のウェブコンテンツのサポータまたはフォロワであるユーザを指すことができる。特定の実施形態では、あるユーザが特定のウェブページのファンである特定のウェブページを愛好する動詞のfan時に、そのユーザを、他の登録ユーザまたは一般大衆が見るために、ファンとしてそのページ上でリストすることができる。さらに、ユーザのアバタまたはプロファイル写真を、そのページにまたは、下で説明されるページのいずれかの中/上に示すことができる。本明細書で使用される時に、いいねは、ユーザ、特に登録ユーザまたは認証されたユーザが、限定ではなく例として、彼または彼女がそれをいいねと思い、そのファンであり、それを支持し、楽しみ、または他の形で肯定的に捉えていることを宣言しまたは他の形で実証した、他の可能性の中でもポスト、コメント、興味、リンク、媒体たとえば、写真、写真アルバム、ビデオ、音楽などコンセプト、エンティティ、またはページなどのものを指すことができる或る実装形態では、ユーザは、ソーシャルネットワークシステムまたはソーシャルネットワーク環境によってホスティングされまたはアクセス可能である任意のページに対して、いいねまたは事実上何でも示しまたは宣言することができる。1実施形態では、いいねを示しもしくは宣言することまたはユーザがあるもののファンであることを示しもしくは宣言することを、ソーシャルネットワーキング環境内で同等に処理し、定義することができ、交換可能に使用することができる。同様に、自分自身がコンセプトもしくはコンセプトプロファイルページなど、何かのファンであると宣言することまたは自分自身が或ることをいいねと思うことを宣言することを、ソーシャルネットワーキング環境内で同等に定義し、本明細書で交換可能に使用することができる。さらに、本明細書で使用される時に、興味は、ユーザのプロファイルページ内で提示される、ユーザの宣言した興味など、ユーザが宣言した興味を指すことができる。本明細書で使用される時に、欲しいwantは、ユーザが欲しがる事実上すべてのものを指すことができる。上で説明したように、コンセプトは、たとえば、スポーツ、スポーツチーム、音楽のジャンル、作曲家、趣味、会社企業、エンティティ、グループ、有名人、登録ユーザではない人、またはイベント、或る実施形態では別のユーザたとえば、認証されないユーザ、その他などへの興味、いいねと思う気持ち、または関係をユーザが宣言しまたは他の形で実証できる事実上すべてのものを指すことができる。たとえば、複数のユーザのうちの1または複数たとえば、ジェリーライス以外によって作成され、管理される、有名なプロフットボールプレイヤであるジェリーライスのコンセプトノードおよびコンセプトプロファイルページがあると同時に、ソーシャルグラフが、さらに、ジェリーライス自身またはジェリーライスの信頼されもしくは認可された代理人によって作成され、管理されるジェリーライスのユーザノードおよびユーザプロファイルページを含む場合がある。例示的なグラフ構造では、データオブジェクトは、複数の属性を含む。属性を、name-value名前/値ペアとすることができる。たとえば、或る人に対応するデータオブジェクトは、次の属性を含むことができる。{id:12345,64ビットFBidtype:person,integer型または文字列名とすることができるcreated:1253665137,name:PapaSmurf,username:papa_smurf,gender:male,emails:[psmurffacebook.com,papasmurfgmail.com]}データオブジェクト識別子idは、オブジェクトが作成される時に割り当てられる64ビット値とされることができる。データオブジェクトの属性を、1または複数のインデックスサーバ106によって維持される検索インデックス内で解析し、維持することができる。たとえば、新しいデータオブジェクトが作成される時に、タームプロデューサモジュールは、前述のデータオブジェクトから次のタームを作成することができる。type:personcreated:1253665137name:papaname:smurfusername:papa_smurfgender:male|emails:psmurffacebook.comemails:papasmurfgmail.com文書識別子docidは、タイムスタンプ32ビットカウンタまたはクロック値などおよび対応するデータオブジェクトのデータオブジェクト識別子idを含むことができる。これらのタームを、対応するdocidに関連して1または複数のインデックス内に格納することができる。たとえば、例示的な検索インデックス内で、docidは、オブジェクトIDおよびcreatedタイムスタンプから生成され、その結果、すべてのポスティングリストが、逆年代順にchronologically順序付けられる概念的には、docidはcreated32ビット:OBid64ビットである。タイムスタンプcreatedは、データオブジェクトが最初に作成された時刻に対応する。他の実装形態では、タイムスタンプは、所与のデータオブジェクトが最後に変更された時刻に対応することができる。1実装形態では、インデックスのdocidは、所与の検索の結果を作成時刻によって逆年代順に順序付けることができるように構成される。たとえば、この方式に基づけば、検索、name:smurftype:personは、名前smurfを有するすべての人を、その人に関連するデータオブジェクトが作成された時刻によって逆年代順に順序付けて返す。他の実施形態では、オブジェクトをある他の基礎で順序付けることが望まれる場合に、任意の32ビットソートキーをタイムスタンプの代わりに使用することができる。オブジェクト同士の間の関連付けエッジを、概念上、エッジオブジェクトと呼ばれるデータオブジェクトとしてモデル化し、格納することができる。したがって、インデックスは、人などのデータオブジェクト、およびソーシャルネットワークの検索を容易にするエッジ関係または他のグラフ関連情報に対応する他のオブジェクトに対応するエントリを格納することができ、これによって、システム性能を高める。次のデータオブジェクトは、上のpersonオブジェクトid12345と、音楽グループColdplayに対応する別のデータオブジェクトid67890との間のタイプfanファンの関連付けに対応する。{id:92821,type:connection.fan,created:1253665248,source:12345,PapaSmurfdest:67890Coldplay}エッジは、ソースオブジェクトおよび宛先オブジェクトに関連する、検索インデックス内の特殊なタームを生成することができる。たとえば、検索クエリconnection.fan.to67890は、すべてのColdplaydocid67890ファンに関連する文書識別子を返す。同様に、検索クエリconnection.fan.from12345は、人id12345がそのファン関連付けを確立したすべてのデータオブジェクトに関する文書識別子を返す。この構文を使用して、アプリケーションは、次のクエリを用いて、ある人の友達または他の接続からのすべてのステータス更新を見つけることができる。connection.from12345type:status追加の例として、次の検索クエリは、やはりColdplayファンである、ある人id12345の友達のすべてを返す。connection.friend.from12345connection.fan.to67890データオブジェクトに、属性を用いて別のオブジェクトを直接にポイントさせることが可能なので、あるタイプの関連付けを、別々のエッジオブジェクトなしで作成することができる。たとえば、ステータスメッセージとユーザとの間の所有者エッジオブジェクトを有するのではなく、ステータスオブジェクトが、作成するユーザに対応するデータオブジェクトの値を有するowner所有者属性を含むことができる。たとえば、{id:5834639,type:status.message,text:doingnothing,owner:12345,}1実装形態では、インデックスサーバ106は、クエリ構成を介するグラフトラバーサルgraphtraversalに関する単純な構文をサポートする。たとえば、次の検索クエリは、ある人id12345の友達の友達のすべてを返す:connection.friend.fromconnection.friend.from12345。この場合に、インデックスサーバは、まず、内部クエリconnection.friend.from12345を実行する。次に、この内部クエリによって返される文書識別子が、外部プレフィックスに適用され、その結果、この式全体が、その人の友達のすべてに関するタームからのconnection.fromのORに展開されるようになる。このクエリ構成構文を使用して、様々なクエリを構成することができる。たとえば、次の検索は、その人id12345の友達を識別するタグを有し、スタンフォードStanfordネットワーク内にある写真のすべてを返す:connection.tag.fromconnection.friend.from12345network:stanfordtype:photo。内部クエリ構文は、エッジだけではなく、すべてのプロパティに適用される。たとえば、author作成者が、ステータスメッセージの属性であると仮定すると、次の検索は、その人id12345の友達からのすべてのステータスメッセージを返す:authorconnection.friend.from12345type:status。さらに、次の検索クエリは、Papaという名前の人からのすべてのステータスメッセージを返す:authorname:papatype:persontype:status。さらに、次の検索クエリは、その人id12345の作成された友達接続を逆年代順で返す:sourceconnection.friend.from12345type:connection。インデックスサーバ106は、クエリに応答して文書識別子を返し、クライアント工程104は、この文書識別子を使用して、データベース110またはキャッシュレイヤ108などのデータストア内に格納された対応するデータオブジェクトにアクセスすることができる。1実装形態では、上で述べたタームプロデューサモジュールが、データオブジェクトの属性から検索インデックスのタームを生成する。タームプロデューサは、入力としてオブジェクトをとり、どのタームをそのデータオブジェクトについてインデクシングしなければならないのかを示すdocid,タームペアの集合setを出力する。1実装形態では、タームプロデューサモジュールのタイプまたは挙動は、挿入されるオブジェクトのタイプに基づいて選択される。たとえば、メッセージを伝える目的のために、タームプロデューサモジュールが、次のエッジオブジェクトを処理するために呼び出されたと仮定する。{id:92821,type:connection.fan,created:1253665248,source:12345,PapaSmurfdest:67890Coldplay}接続タームプロデューサモジュールは、インデックスへの挿入のために次のタームを作ることができる。92821,type:connection.fanエッジ文書92821,source:1234592821,dest:6789012345,connection.fan.to:67890PapaSmurfの文書12345,connection.to:6789067890,connection.fan.from:12345Coldplayの文書67890,connection.from:12345図4に、本発明の実装形態に従って構成されたシステム内での新しいオブジェクトの作成および格納に関連する例示的な方法を示す。図4は、新しいオブジェクトについて、オブジェクト作成工程が、新しい文書識別子docidを生成することを示し、この文書識別子は、作成タイムスタンプcreatedコンポーネントおよびオブジェクト識別子コンポーネント上を参照されたいを含む402。その後、1または複数のタームプロデューサモジュールを呼び出して、オブジェクトのタイプに基づいてdocid/タームペアdocid-termpairsを作成する404。その後、オブジェクト作成工程は、インデックスサーバ106によって維持される1または複数のインデックスにdocid/タームペアを挿入し406、データベース110にオブジェクトを書き込む408。或る実装形態では、各docid/タームペアを、所与のインデックス内で別々のエントリとして維持することができる。他の実装形態では、或るdocid/タームペアのdocidを、同一のタームを有する既存のインデックスエントリに追加することができる。たとえば、Coldplaydocid67890の新しいファンに対応するオブジェクトの文書識別子たとえば、docid12345を、タームconnection.to:67890および/またはconnection.fan.to:67890を有する1または複数の既存のインデックスエントリに追加することができる。タームプロデューサモジュールを更新することができ、すべての新しいオブジェクトは、タームプロデューサからの新しいタームをインデクシングする。さらに、更新工程は、毎日MapReduceジョブ内でインデックス全体を再生成することもでき、その結果、すべての古いオブジェクトは、新しいタームを用いて更新されるようになる。インデックス再構築を、非正規化を介して性能を改善する機構として使用することができる。多くのストレージシステムは、性能を改善するために、アプリケーションレベルでデータの非正規化を必要とする。タームプロデューサは、非正規化判断をより動的にすることを可能にし、クエリパターンが変化する時のこれらの判断に対する変更を容易にする。さらに、非正規化構成に対する変更は、基礎になるデータがデータベース110に永続的に格納される形に対する変更を必要としない。たとえば、ページを生成するスクリプトhome.phpが、友達からのステータスメッセージを得るために次の検索を頻繁に実行すると仮定する:authorconnection.fromUIDtype:status。性能が、クエリの量およびtype:statusポスティングリストのサイズのゆえに問題になる場合には、結果が単一の、より小さいポスティングリストまたはインデックスになるようにするために、タームプロデューサモジュールを、authorおよびtypeのコンポジットタームを出力するためにステータスメッセージについて追加するか更新することができる。たとえば、タームプロデューサモジュールを、下記など、ステータスオブジェクトについて追加のタームを追加するように構成することができる。{id:321224,type:status,created:1253665137,message:...,author:12345}タームプロデューサモジュールは、追加のターム321224,status:author:12345を出力するように、更新されることができる。ページを生成するスクリプトは、クエリがstatus:authorconnection.fromUIDと表されるように、更新されることができる。さらに、下でより詳細に説明するように、レプリケーションインデックスの集合は、さらなる性能改善のために特定のタームについて作成されることができる。この方式の1つの特定の利点は、非正規化判断を、簡単に変更でき、アプリケーションレベルで行う必要がないことである。これは、開発者が、概念的に最も論理的な形でデータを格納できることを意味する。クエリ性能を、これらのアプリケーションレベル判断とは相対的に独立の形でチューニングすることができ、アプリケーションを、より綺麗で理解し易く、経時的な更新がより簡単なものにする。1実装形態では、検索インデックスは、文書識別子docidによってシャーディングされる。たとえば、図1に示されているように、インデックスレイヤは、ルートサーバ106aおよび複数のリーフサーバ106bを含むインデックスサーバの階層構成によって実施されることができる。1実装形態では、各リーフサーバ106bには、1または複数のシャードが割り当てられる。もう1つの実装形態では、クラスタまたはリングトポロジを使用することができる。デフォルトでは、すべてのシャードに並列にクエリを送信し、結果をミキサまたはルートインデックスサーバ106a内でマージすることによって検索を実行することができる。1実装形態では、シャードには、文書識別子空間の1セグメントが割り当てられる。特定の実施形態では、各文書識別子docidは、一意の対応するシャードIDにマッピングされるたとえば、算術的にまたは何らかの数学関数を介して。したがって、特定のタームたとえば、connection.fan.from:12345を、オブジェクトColdplaydocid67890が対応する1つのシャード内と、人docid12345がファン接続をも確立した他のオブジェクトの対応する他のシャード内とで維持することができる。1実装形態では、インデックスサーバ106のそれぞれには、それらが維持する責任を負うシャードIDの集合が割り当てられる。この割当を調整して、システムにインデックスサーバ106を追加しまたは除去することができる。すべてのシャードにすべてのクエリを送ることは、計算的に高価である可能性があり、システムの全体的なクエリレートを制限する可能性がある。1実装形態では、インデックスサーバ106によって実施されるインデックスレイヤは、インデックスシステム内のタームのサブセットをインデクシングするのみである特殊なレプリケーションインデックスをサポートする。たとえば、主インデックスまたはマスタインデックスに加えて、インデックスレイヤは、1または複数の特定のクエリタイプに適合される1または複数の追加のレプリケーションインデックスを含むことができる。たとえば、クエリconnection.fromが、システム内で極端に一般的なクエリであると仮定する。本明細書で説明されるインデクシングシステムを、すべてのconnection.fromタームが、これらのタームだけを含む追加のレプリケーションインデックス内でレプリケーションされるように構成することができる。次のコマンドは、そのようなレプリケーションインデックスの作成を可能にする、例示的なアプリケーションプログラミングインターフェースを示す。replicas={connection.from::[...],専用のconnectionレプリケーションemail::[...],電子メール検索レプリケーション:[...],主レプリケーション}インデックスサーバ106は、クエリを実行する時に、検索を満足できる最小のレプリケーションインデックスを選択する。たとえば、クエリconnection.from12345を、connection.fromレプリケーションインデックス専用であるインデックスサーバに転送することができる。その一方で、connection.from12345type:pageなどの、より包括的なまたはより幅広い検索は、主インデックスまたは両方のタームをサポートする別のレプリケーション上で実行される。しかし、ある種のクエリの性能を改善するためのタームによるシャーディングに反対する、理論的理由はない。この設計の利点は、システムが、すべてのクエリをサポートでき、最も重要なクエリに関する最適のスループットおよび性能のためにチューニングされ得ることである。クエリが十分に一般的になった後に、管理者は、クエリのそのクラスを満足することに専用のレプリケーションのセットを作成することによって、クエリレートを高めるためにシステムをチューニングすることができる。これは、まず必要なすべてのクエリを実行するようにネットワークアプリケーションを構成することができるという点で、アプリケーション開発を単純にする。アプリケーションを起動する前に、アプリケーション開発中に作成されたクエリの構造に基づいて性能を改善するために、レプリケーションインデックスを作成することができる。図2に、サーバ22a、22bを実施するのに使用できる、例示的なコンピューティングシステムアーキテクチャを示す。1実施形態では、ハードウェアシステム1000は、プロセッサ1002、キャッシュメモリ1004、ならびに、有形のコンピュータ可読媒体上に格納された、明細書で説明される機能を対象とする、1または複数の実行可能モジュールおよびドライバを備える。さらに、ハードウェアシステム1000は、高性能入出力I/Oバス1006および標準I/Oバス1008を含む。ホストブリッジ1010は、プロセッサ1002を高性能I/Oバス1006に結合し、I/Oバスブリッジ1012は、2つのバス1006および1008をお互いに結合する。システムメモリ1014および1または複数のネットワーク/通信インターフェース1016は、バス1006に結合される。ハードウェアシステム1000は、さらに、ビデオメモリ図示せずおよびビデオメモリに結合された表示デバイスを含むことができる。マスストレージ1018およびI/Oポート1020は、バス1008に結合される。ハードウェアシステム1000は、オプションで、キーボードおよびポインティングデバイスと、バス1008に結合された表示デバイス図示せずとを含むことができる。集合的に、これらの要素は、米国カリフォルニア州サンタクララのインテルIntelCorporationによって製造されるx86互換プロセッサおよび米国カリフォルニア州サニーベールのアドバンスドマイクロデバイセズAdvancedMicroDevicesAMD,Inc.によって製造されるx86互換プロセッサ、ならびに任意の他の適切なプロセッサに基づく汎用コンピュータシステムを含むがこれに限定されないコンピュータハードウェアシステムの広いカテゴリを表すことが意図されている。ハードウェアシステム1000の要素を、下でより詳細に説明する。具体的には、ネットワークインターフェース1016は、ハードウェアシステム1000と、ETHERNET登録商標たとえば、IEEE802.3ネットワーク、バックプレーン、その他など、広範囲のネットワークのいずれかとの間の通信を提供する。マスストレージ1018は、サーバ22a、22b内で実施される上で説明した機能を実行するためのデータおよびプログラミング命令の永久ストレージを提供し、システムメモリ1014たとえば、DRAMは、プロセッサ1002によって実行される時にデータおよびプログラミング命令の1次ストレージを提供する。I/Oポート1020は、ハードウェアシステム1000に結合され得る追加の周辺デバイスの間の通信を提供する、1または複数のシリアル通信ポートおよび/またはパラレル通信ポートである。ハードウェアシステム1000は、様々なシステムアーキテクチャを含むことができ、ハードウェアシステム1000の様々なコンポーネントを、再配置することができる。たとえば、キャッシュ1004を、プロセッサ1002と共にオンチップとすることができる。その代わりに、キャッシュ1004およびプロセッサ1002を、プロセッサモジュールとして一緒にパックすることができ、プロセッサ1002は、プロセッサコアと呼ばれる。さらに、本発明のある種の実施形態は、上記のコンポーネントのすべてを必要としまたは含むのではない場合がある。たとえば、標準I/Oバス1008に結合されて図示された周辺デバイスを、高性能I/Oバス1006に結合することができる。さらに、或る実施形態では、単一のバスだけが存在する場合があり、ハードウェアシステム1000のコンポーネントは、その単一のバスに結合される。さらに、ハードウェアシステム1000は、追加のプロセッサ、ストレージデバイス、またはメモリなど、追加のコンポーネントを含むことができる。1実装形態では、本明細書で説明される実施形態の動作は、ハードウェアシステム1000によって実行される一連の実行可能モジュールとして、分散コンピューティング環境内で個別にまたは集合的に実施される。特定の実施形態では、1組のソフトウェアモジュールおよび/またはドライバが、ネットワーク通信プロトコルスタック、ブラウジング機能および他のコンピューティング機能、最適化工程、ならびに類似物を実施する。前述の機能モジュールを、ハードウェア、コンピュータ可読媒体上に格納された実行可能モジュール、またはこの両方の組合せによって実現することができる。たとえば、機能モジュールは、プロセッサ1002など、ハードウェアシステム内のプロセッサによって実行される複数のまたは一連の命令を備えることができる。当初に、一連の命令を、マスストレージ1018などのストレージデバイス上に格納することができる。しかし、一連の命令を、ディスケット、CD-ROM、ROM、EEPROM、その他などの任意の適切な記憶媒体上に有形に格納することができる。さらに、一連の命令を、ローカルに格納する必要はなく、ネットワーク/通信インターフェース1016を介して、ネットワーク上のサーバなどのリモートストレージデバイスから受信することができる。命令は、マスストレージ1018などのストレージデバイスからメモリ1014にコピーされ、その後、プロセッサ1002によってアクセスされ、実行される。オペレーティングシステムは、ソフトウェアアプリケーション図示せずへおよびソフトウェアアプリケーションからのデータの入力および出力を含む、ハードウェアシステム1000の動作を管理し、制御する。オペレーティングシステムは、システム上で実行されつつあるソフトウェアアプリケーションとシステムのハードウェアコンポーネントとの間のインターフェースを提供する。LINUX登録商標オペレーティングシステム、米国カリフォルニア州クパティーノのアップルコンピュータAppleComputerInc.から入手可能なAppleMacintoshオペレーティングシステム、UNIX登録商標オペレーティングシステム、マイクロソフトMicrosoft登録商標Windows登録商標オペレーティングシステム、BSDオペレーティングシステム、および類似物など、任意の適切なオペレーティングシステムを使用することができる。もちろん、他の実装形態が可能である。たとえば、本明細書で説明されるニックネーム生成機能を、ファームウェア内または特定用途向け集積回路上で実施することができる。さらに、上で説明した要素および動作は、記憶媒体上に格納される命令からなるものとすることができる。命令を、処理システムによって取り出し、実行することができる。命令の或る例は、ソフトウェア、プログラムコード、およびファームウェアである。記憶媒体の或る例は、メモリデバイス、テープ、ディスク、集積回路、およびサーバである。命令は、処理システムによって実行される時に、本発明に従って動作するように処理システムに指示するように動作可能である。用語処理システムは、単一の処理デバイスまたは相互動作可能な処理デバイスのグループを指す。処理デバイスの或る例は、集積回路および論理回路網である。当業者は、命令、コンピュータ、および記憶媒体を熟知している。本開示は、当業者が理解するはずの、本明細書の例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。同様に、適当である場合には、添付の特許請求の範囲は、当業者が理解するはずの、本明細書の例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。たとえば、本発明の実施形態は、ソーシャルネットワーキングウェブサイトに関連して動作するものとして説明されたが、本発明を、ウェブアプリケーションをサポートし、関連付けのグラフとしてデータをモデル化する任意の通信ファシリティに関連して使用することができる。さらに、或る実施形態では、用語ウェブサービスおよびウェブサイトが、交換可能に使用される場合があり、さらに、サーバに直接にAPI呼出しを行う、モバイルデバイスたとえば、セルラ電話機、スマートホン、パーソナルGPS、携帯情報端末、パーソナルゲーミングデバイスなどなどのデバイス上のカスタムAPIまたは一般化されたAPIを指すことができる。"