BR112013016900A2 - cache distribuída para dados gráficos - Google Patents

cache distribuída para dados gráficos Download PDF

Info

Publication number
BR112013016900A2
BR112013016900A2 BR112013016900-1A BR112013016900A BR112013016900A2 BR 112013016900 A2 BR112013016900 A2 BR 112013016900A2 BR 112013016900 A BR112013016900 A BR 112013016900A BR 112013016900 A2 BR112013016900 A2 BR 112013016900A2
Authority
BR
Brazil
Prior art keywords
node
cache
association
nodes
identifier
Prior art date
Application number
BR112013016900-1A
Other languages
English (en)
Inventor
Venkateshwaran Venkataramani
Original Assignee
Facebook, Inc.
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 Facebook, Inc. filed Critical Facebook, Inc.
Publication of BR112013016900A2 publication Critical patent/BR112013016900A2/pt

Links

Classifications

    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • 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
    • G06F16/245Query processing
    • 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
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • 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
    • G06F16/248Presentation of query results
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/463File
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Document Processing Apparatus (AREA)

Abstract

  CACHE DISTRIBUÍDA PARA DADOS GRÁFICOS. Um sistema de caching distribuído para armazenar e servir informação modelada como um gráfico que inclui nós e bordas que definem associações ou relações entre nós que as bordas conectam no gráfico.

Description

“CACHE DISTRIBUÍDA PARA DADOS GRÁFICOS” Campo técnico A presente revelação refere-se, de forma geral, ao armazenamento e ao forneci- mento de dados gráficos, e mais particularmente, ao armazenamento e ao fornecimento de dados gráficos com um sistema de cache distribuído.
Precedentes Usuários de computador são capazes de acessar e compartilhar grandes quantida- des de informação através de várias redes de computador local e remota incluindo redes proprietárias, bem como redes públicas, tal como a Internet.
Tipicamente, um navegador da rede instalado no dispositivo de computação de um usuário facilita o acesso e a interação com a informação localizada em vários servidores de rede identificados, por exemplo, pelos localizadores de recursos uniformes (URLs) associados.
Abordagens convencionais para possibilitar o compartilhamento do conteúdo gerado pelo usuário incluem várias tecnologias de compartilhamento de informação ou plataformas, tal como sítios de rede social.
Tais sí- tiosde rede podem incluir, ser ligados com, ou proporcionar uma plataforma para aplicações possibilitando que os usuários vejam páginas da rede criadas ou personalizadas por outros usuários onde a visibilidade e a interação com tais páginas por outros usuários são gover- nadas por algum conjunto característico de regras.
Tal informação de redes sociais, e a maior parte da informação em geral, é tipica- mente armazenada em bancos de dados relacionais.
De forma geral, um banco de dados relacional é uma coleção de relações (frequentemente citadas como tabelas). Bancos de dados relacionais usam um conjunto de termos matemáticos, que podem usar terminologia de banco de dados da linguagem de consulta estruturada (SQL). Por exemplo, uma relação pode ser definida como um conjunto de tuplas que têm os mesmos atributos.
Geralmente umatuplarepresenta um objeto e a informação sobre esse objeto.
Uma relação é geralmen- te descrita como uma tabela, que é organizada em fileiras e colunas.
De forma geral, todos os dados referenciados por um atributo estão no mesmo domínio e estão de acordo com as mesmas restrições.
O modelo relacional especifica que as tuplas de uma relação não têm ordem espe- cíficae que as tuplas, por sua vez, não impõem ordem nos atributos.
Aplicações acessam os dados especificando as consultas, que usam operações para identificar as tuplas, identi- ficar os atributos e para combinar as relações.
As relações podem ser modificadas e novas tuplas podem fornecer valores explícitos ou ser derivadas de uma consulta.
Similarmente, as consultas identificam tuplas para atualização ou exclusão.
É necessário que cada tupla de uma relação seja unicamente identificável por alguma combinação (uma ou mais) dos seus valores de atributo.
Essa combinação é citada como a chave primária.
Em um banco de da-
dos relacional, todos os dados são armazenados e acessados via relações. As relações que armazenam dados são tipicamente implementadas com ou citadas como tabelas.
Bancos de dados relacionais, como implementados em sistemas de gerenciamento de banco de dados relacional, se tornaram uma escolha predominante para o armazena- —mentoda informação nos bancos de dados usados para, por exemplo, registros financeiros, informação de fabricação e logística, dados pessoais e outras aplicações. À medida que a potência do computador aumentou, as ineficiências dos bancos de dados relacionais, que os tornou não práticos nos tempos anteriores, se tornaram importantes por sua facilidade de uso para aplicações convencionais. As três implementações de fonte aberta principais são MySQL, PostgreSQL e SQLite. MySQL é um sistema de gerenciamento de banco de dados relacional (RDBMS) que funciona como um servidor proporcionando acesso por múltiplos usuários a uma série de bancos de dados. O “M” no acrônimo da pilha de software LAMP popular se refere à MySQL. A sua popularidade para uso com aplicações da rede está inti- mamente vinculada à popularidade do PHP (o “P” em LAMP). Vários sítios da rede de alto tráfego usam MySQL para armazenamento de dados e registro dos dados do usuário.
Como a comunicação com bancos de dados relacionais é frequentemente um es- trangulamento de velocidade, muitas redes utilizam sistemas de cache para fornecer consul- tas de informação particulares. Por exemplo, Memcached é um sistema de cache de memó- ria distribuído de uso geral. Ele é frequentemente usado para acelerar os sítios de rede gui- ados por bancos de dados dinâmicos colocando em cache os dados e os objetos na RAM para reduzir o número de vezes que uma fonte de dados externa (tal como um banco de dados ou API) precisa ser lida. As APIs de Memcached proporcionam uma tabela de disper- são (hash) gigante distribuída através de múltiplas máquinas. Quando a tabela está comple- ta, inserções subsequentes fazem com que os dados mais antigos sejam removidos na or- dem do menos recentemente usado (LRU). As aplicações usando Memcached tipicamente colocam em camadas as solicitações e as adições no núcleo antes de ceder em um arma- zenamento de suporte mais lento, tal como um banco de dados.
O sistema Memcached usa uma arquitetura de cliente-servidor. Os servidores man- têm uma formação associativa do valor da chave; os clientes preenchem essa formação e a — consultam. Os clientes usam bibliotecas no lado do cliente para contatar os servidores. Tipi- camente, cada cliente conhece todos os servidores e os servidores não se comunicam entre si. Se um cliente deseja definir ou ler o valor correspondendo com uma certa chave, a biblio- teca do cliente primeiro computa uma prova da chave para determinar o servidor que será usado. O cliente então contata esse servidor. O servidor calculará uma segunda prova da chave para determinar onde armazenar ou ler o valor correspondente. Tipicamente, os ser- vidores mantêm os valores na RAM; se um servidor fica sem a RAM, ele descarta os valores mais antigos. Portanto, clientes precisam tratar o Memcached como um cache transitório;
eles não podem assumir que os dados armazenados no Memcached estão ainda lá quando eles precisam deles.
Breve descrição dos desenhos A figura 1 ilustra uma arquitetura do sistema de cache exemplar de acordo com umaimplementação da invenção.
A figura 2 ilustra uma arquitetura do sistema de computador exemplar.
A figura 3 apresenta um ambiente de rede exemplar.
A figura 4 mostra um fluxograma ilustrando um método exemplar para adicionar uma nova associação a um gráfico.
A figura 5 é um diagrama esquemático ilustrando um fluxo de mensagem exemplar entre vários componentes de um sistema de cache.
A figura 6 mostra um fluxograma ilustrando um método exemplar para processar as mudanças nos dados gráficos. A figura 7 é um diagrama esquemático ilustrando um fluxo de mensagem exemplar entrevários componentes de um sistema de cache.
Descrição das modalidades exemplares Modalidades particulares se referem a um sistema de cache distribuído para arma- zenar e fornecer informação modelada como um gráfico que inclui nós e bordas que definem associações ou relações entre nós que as bordas conectam no gráfico. Em modalidades particulares, o gráfico é, ou inclui, um gráfico social e o sistema de cache distribuído é parte de um sistema, infraestrutura ou plataforma de rede maior, que possibilita um ambiente de rede social integrado. Na presente revelação, o ambiente de rede social pode ser descrito em termos de um gráfico social incluindo a informação do gráfico social. Na realidade, mo- dalidades particulares da presente revelação contam com, exploram ou fazem uso do fato quea maior parte ou todos os dados armazenados por ou para o ambiente de rede social podem ser representados como um gráfico social. Modalidades particulares proporcionam uma infraestrutura de custo efetivo que pode suportar, de modo eficiente, inteligente e bem- sucedido, o número exponencialmente crescente de usuários do ambiente de rede social, tal como esse descrito aqui.
Em modalidades particulares, o sistema de cache distribuído e infraestrutura de backend descritos aqui proporcionam um ou mais de: baixa latência na escala, um menor custo por solicitação, uma estrutura fácil de usar para desenvolvedores, uma infraestrutura que suporta múltiplos mestres, uma infraestrutura que fornece acesso aos dados armazena- dos em clientes gravados em linguagens diferentes do pré-processador de hipertexto (PHP), uma infraestrutura que possibilita consultas combinadas envolvendo ambos associações (bordas) e objetos (nós) de um gráfico social como descrito por meio de exemplo aqui e uma infraestrutura que possibilita que armazenamentos de dados persistentes diferentes sejam usados para tipos diferentes de dados. Além do mais, modalidades particulares proporcio- nam um ou mais de: uma infraestrutura que possibilita uma separação clara da API de acesso dos dados do cache da infraestrutura de cache+persistência+duplicação, uma infra- estrutura que suporta cache de gravação direta/leitura direta, uma infraestrutura que move as computações mais próximas dos dados, uma infraestrutura que possibilita a migração transparente para esquemas e back-ends de armazenamento diferentes e uma infraestrutu- ra que melhora a eficiência de acesso do objeto dos dados.
Adicionalmente, como usado aqui, “ou” pode implicar “e”, bem como “ou”, “isto é”, “ou” não necessariamente exclui “e”, a menos que explicitamente declarado ou implicitamen- te subentendido.
Modalidades particulares podem operar em um ambiente de rede remota, tal como a Internet, incluindo múltiplos sistemas endereçáveis de rede. A figura 3 ilustra um ambiente de rede exemplar, no qual várias modalidades exemplares podem operar. A nuvem da rede 60 geralmente representa uma ou mais redes interligadas, através das quais os sistemas e hospedeiros descritos aqui podem se comunicar. A nuvem de rede 60 pode incluir redes remotas baseadas em pacote (tal como a Internet), redes particulares, redes sem fio, redes de satélite, redes de celulares, redes de paginação e assim por diante. Como a figura 3 ilus- tra, modalidades particulares podem operar em um ambiente de rede compreendendo o sistema de rede social 20 e um ou mais dispositivos do cliente 30. Dispositivos do cliente 30 são conectados de modo operável no ambiente de rede via um provedor de serviço de rede, uma transportadora sem fio ou qualquer outro meio adequado.
Em uma modalidade exemplar, o sistema de rede social 20 compreende sistemas de computação que permitem que os usuários se comuniquem ou de outra forma interajam entre si e acessem conteúdo, tal como perfis de usuário, como descrito aqui. O sistema de rede social 20 é um sistema endereçável de rede que, em várias modalidades exemplares, compreende um ou mais servidores físicos 22 e armazenamento de dados 24. O um ou mais servidores físicos 22 são conectados de modo operável na rede de computador 60 via, por meio de exemplo, um conjunto de roteadores e/ou comutadores de rede 26. Em uma modalidade exemplar, a funcionalidade hospedada pelo um ou mais servidores físicos 22 pode incluir servidores de rede ou HTTP, servidores FTP, bem como, sem limitação, pági- nas da rede e aplicações implementadas usando o roteiro da interface de portão comum (CGI), pré-processador de hipertexto PHP (PHP), páginas ativas do servidor (ASP), lingua- gem de marcação de hipertexto (HTML), linguagem de marcação extensível (XML), Java, JavaScript, JavaScript assíncrono e XML (AJAX) e assim por diante.
Servidores físicos 22 podem hospedar a funcionalidade direcionada para as opera- ções do sistema de rede social 20. Por meio de exemplo, o sistema de rede social 20 pode hospedar um sítio de rede que permite que um ou mais usuários, em um ou mais dispositi-
vos do cliente 30, vejam e postem informação, bem como se comuniquem através do sítio de rede. A seguir, os servidores 22 podem ser chamados como servidor 22, embora o servi- dor 22 possa incluir numerosos servidores hospedando, por exemplo, o sistema de rede social 20, bem como outros servidores de distribuição de conteúdo, armazenamentos de —dadose bancos de dados. O armazenamento de dados 24 pode armazenar conteúdo e da- dos relacionados com, e possibilitando, a operação do sistema de rede social como objetos de dados digitais. Um objeto de dados, em implementações particulares, é um item da in- formação digital tipicamente armazenado ou personificado em um arquivo de dados, banco de dados ou registro. Objetos de conteúdo podem adotar muitas formas, incluindo: texto (por exemplo, ASCII, SGML, HTML), imagens (por exemplo, jpeg, tif e gif), gráficos (com base em vetor ou mapa de bits), áudio, vídeo (por exemplo, mpeg) ou outra multimídia e combi- nações desses. Os dados do objeto de conteúdo podem também incluir objetos de código executável (por exemplo, jogos executáveis dentro de uma janela ou quadro do navegador), podcasts, etc.. Logicamente, o armazenamento de dados 24 corresponde com um ou mais deuma variedade de bancos de dados separados e integrados, tal como bancos de dados relacionais e bancos de dados orientados a objetos, que mantêm informação como uma coleção integrada de registros ou arquivos logicamente relacionados armazenados em um ou mais sistemas físicos. Estruturalmente, o armazenamento de dados 24 pode geralmente incluir um ou mais de uma grande classe de armazenamento de dados e sistemas de ge- renciamento. Em modalidades particulares, o armazenamento de dados 24 pode ser imple- mentado por qualquer sistema(s) físico adequado incluindo componentes, tal como um ou mais servidores do banco de dados, mídia de armazenamento em massa, sistemas de bibli- oteca de mídia, redes de área de armazenamento, nuvens de armazenamento de dados e assim por diante. Em uma modalidade exemplar, o armazenamento de dados 24 inclui um oumaisservidores, bancos de dados (por exemplo, MySQL) e/ou depósitos de dados.
O armazenamento de dados 24 pode incluir dados associados com usuários e/ou dispositivos do cliente 30 de um sistema de rede social 20 diferente. Em modalidades parti- culares, o sistema de rede social 20 mantém um perfil do usuário para cada usuário do sis- tema 20. Perfis do usuário incluem dados que descrevem os usuários de uma rede social, — que podem incluir, por exemplo, nomes próprios (primeiro, intermediário e o último de uma pessoa, um nome comercial e/ou o nome da companhia de uma entidade de negócios, etc.), biográficos, demográficos e outros tipos de informação descritiva, tais como experiência pro- fissional, história educacional, passatempos ou preferências, localização geográfica e dados descritivos adicionais. Por meio de exemplo, perfis de usuário podem incluir a data do nas- cimento de um usuário, estado de relacionamento, cidade de residência e assim por diante. O sistema 20 pode ainda armazenar dados descrevendo uma ou mais relações entre usuá- rios diferentes. A informação de relação pode indicar usuários que têm experiência profissi-
onal, associações de grupo, passatempos ou história educacional similares ou comuns. Um perfil do usuário pode também incluir colocações de privacidade controlando o acesso à informação do usuário por outros usuários.
O dispositivo do cliente 30 é geralmente um computador ou dispositivo de computa- çcãoincluindo funcionalidade para se comunicar (por exemplo, remotamente) através de uma rede de computador. O dispositivo do cliente 30 pode ser um computador de mesa, compu- tador laptop, assistente digital pessoal (PDA), sistema de navegação dentro ou fora do car- ro, smartphone ou outro telefone celular ou móvel, ou dispositivo de jogo móvel, entre outros dispositivos de computação adequados. O dispositivo do cliente 30 pode executar uma ou mais aplicações do cliente, tal como um navegador da rede (por exemplo, Internet Explorer do Windows da Microsoft, Mozilla Firefox, Apple Safari, Google Chrome e Opera, etc.) para acessar e ver o conteúdo através de uma rede de computador. Em implementações particu- lares, as aplicações do cliente permitem que um usuário do dispositivo do cliente 30 insira endereços de recursos de rede específicos para serem recuperados, tais como recursos hospedados pelo sistema de rede social 20. Esses endereços podem ser localizadores de recurso uniforme ou URLs. Além disso, depois que uma página ou outro recurso foi recupe- rado, as aplicações do cliente podem prover acesso a outras páginas ou registros quando o cliente “clica” em hiperligações para outros recursos. Por meio de exemplo, tais hiperliga- ções podem ficar localizadas dentro das páginas da rede e proporcionar uma maneira auto- matizadaparao usuário inserir o URL de outra página e recuperar essa página.
A figura 1 ilustra uma modalidade exemplar de um sistema, arquitetura ou infraes- trutura de rede 100 (a seguir citada como um sistema de rede 100) que pode implementar as funções de back-end do sistema de rede social 20 ilustrado na figura 3. Em modalidades particulares, o sistema de rede 100 possibilita que os usuários do sistema de rede 100 inte- rajam entre si através de serviços da rede social proporcionados pelo sistema de rede 100, bem como com terceiros. Por exemplo, usuários em dispositivos de computação do usuário remoto (por exemplo, computadores pessoais, netbooks, dispositivos de multimídia, telefo- nes celulares (especialmente smartphones), etc.) podem acessar o sistema de rede 100 via navegadores da rede ou outras aplicações de cliente do usuário para acessar sítios de rede, páginas de rede ou aplicações de rede hospedadas ou acessíveis, pelo menos em parte, pelo sistema de rede 100 para ver informação, armazenar ou atualizar informação, comuni- car informação ou de outra forma interagir com outros usuários, sítios de rede de terceiros, páginas da rede ou aplicações da rede ou outra informação armazenada, hospedada ou acessível pelo sistema de rede 100. Em modalidades particulares, o sistema de rede 100 mantém um gráfico que inclui nós do gráfico representando usuários, conceitos, tópicos e outras informações (dados), bem como bordas do gráfico que conectam ou definem rela- ções entre nós do gráfico, como descrito em mais detalhes abaixo.
Com referência às figuras 1 e 5, em modalidades particulares, o sistema de rede 100 inclui um ou mais centros de dados 102. Por exemplo, o sistema de rede 100 pode in- cluir uma pluralidade de centros de dados 102 localizados estrategicamente dentro de várias regiões geográficas para servir aos usuários localizados dentro das regiões respectivas. Em modalidades particulares, cada centro de dados inclui um número de servidores de cliente ou rede 104 (a seguir servidores do cliente 104) que comunicam a informação para e dos usuários do sistema de rede 100. Por exemplo, os usuários em dispositivos de computação do usuário distante podem se comunicar com os servidores do cliente 104 via compensado- res de carga ou outros sistemas adequados via qualquer combinação adequada de redes e provedores de serviço. Servidores do cliente 104 podem consultar o sistema de cache des- crito aqui a fim de recuperar dados para gerar documentos estruturados para responder às solicitações do usuário.
Cada um dos servidores do cliente 104 se comunica com um ou mais grupos ou anéis de cache distribuído seguidor 106 (a seguir grupos de cache seguidor 106). Na moda- lidade ilustrada, o centro de dados 102 inclui três grupos de cache seguidor 106 que serve, cada um, a um subconjunto dos servidores da rede 104. Em modalidades particulares, um grupo de cache seguidor 106 e os servidores do cliente 104 que o grupo de cache seguidor 106 serve ficam localizados em proximidade, tal como dentro de um prédio, sala ou outra localização centralizada, o que reduz os custos associados com a infraestrutura (por exem- plo,fiosou outraslinhasde comunicação, etc.), bem como a latência entre os servidores do cliente 104 e o grupo dos nós de cache seguidor servidor respectivo 106. Entretanto, em algumas modalidades, embora cada um dos grupos de cache seguidor 106 e os servidores do cliente 104 que eles respectivamente servem, possam ficar localizados dentro de uma localização centralizada, cada um dos grupos de cache seguidor 106 e servidores do cliente respectivos 104 que os grupos de cache seguidor 106 servem respectivamente, podem ficar localizados em uma localização diferente do que os outros grupos de cache seguidor 106 e servidores do cliente respectivos 104 de um dado centro de dados; isto é, os grupos de ca- che seguidor 106 (e os servidores do cliente respectivos 104 que os grupos servem) de um dado centro de dados de uma dada região podem ficar distribuídos por todas as várias loca- lizações dentro da região.
Em modalidades particulares, cada centro de dados 102 ainda inclui um grupo de cache líder 108 que comunica a informação entre os grupos de cache seguidor 106 de um dado centro de dados 102 e um banco de dados de armazenamento persistente 110 do da- do centro de dados 102. Em modalidades particulares, o banco de dados 110 é um banco de dados relacional.Em modalidades particulares, o grupo de cache líder 108 pode incluir um programa auxiliar (plug-in) operativo para interoperar com qualquer implementação ade- quada do banco de dados 110. Por exemplo, o banco de dados 110 pode ser implementado como uma arquitetura de programa auxiliar dinamicamente variável e pode utilizar MySQL e/ou qualquer sistema de gerenciamento de banco de dados relacional adequado, tais co- mo, por exemplo, HAYSTACK, CASSANDRA, entre outros. Em uma implementação, o pro- grama auxiliar executa várias operações de tradução, tal como tradução dos dados armaze- —nadona camada de cache como nós e bordas do gráfico para consultas e comandos ade- quados para um banco de dados relacional incluindo uma ou mais tabelas ou arquivos sim- ples. Em modalidades particulares, o grupo de cache líder 108 também coordena solicita- ções de gravação no banco de dados 110 proveniente dos grupos de cache seguidor 106 e algumas vezes solicitações de leitura dos grupos de cache seguidor 106 para a informação —colocadaem cache no grupo de cache líder 108 ou (se não colocada em cache no grupo de cache líder 108) armazenada no banco de dados 110. Em modalidades particulares, o grupo de cache líder 108 ainda coordena a sincronização da informação armazenada nos grupos de cache seguidor 106 do centro de dados respectivo 102. Isto é, em modalidades particula- res, o grupo de cache líder 108 de um dado centro de dados 102 é configurado para manter a consistência do cache (por exemplo, a informação no cache) entre os grupos de cache seguidor 106 do centro de dados 102, para manter a consistência do cache entre os grupos de cache seguidor 106 e o grupo de cache líder 108 e para armazenar a informação em ca- che no grupo de cache líder 108 dentro do banco de dados 110. Em uma implementação, um grupo de cache líder 108 e um grupo de cache seguidor 106 podem ser considerados uma camada de cache entre servidores do cliente 104 e o banco de dados 110. Em uma implementação, a camada de cache é uma camada de cache de gravação direta/leitura direta, em que todas as leituras e gravações atravessam a camada de cache. Em uma implementação, a camada de cache mantém a informação de associação e, assim, pode lidar com as consultas para tal informação. Outras consultas são atravessadas para o —bancode dados 110 para execução. O banco de dados 110 geralmente conota um sistema do banco de dados que pode incluir, ele próprio, outras camadas de cache para lidar com outros tipos de consulta.
Cada grupo de cache seguidor 106 pode incluir uma pluralidade de nós de cache seguidor 112, cada um dos quais pode estar funcionando em um computador individual, sistema de computação ou servidor. Entretanto, como descrito acima, cada um dos nós de cache seguidor 112 de um dado grupo de cache seguidor 106 pode ficar localizado dentro de uma localização centralizada. Similarmente, cada grupo de cache líder 108 pode incluir uma pluralidade de nós de cache líder 114, cada um dos quais pode estar funcionando em um computador individual, sistema de computação ou servidor. Similar aos nós de cache seguidor 112 de um dado grupo de cache seguidor 106, cada um dos nós de cache líder 114 de um dado grupo de cache líder 108 pode ficar localizado dentro de uma localização centralizada. Por exemplo, cada centro de dados 102 pode incluir dezenas, centenas ou milhares de servidores do cliente 104 e cada grupo de cache seguidor 106 pode incluir de- zenas, centenas ou milhares de nós de cache seguidor 112 que servem a um subconjunto dos servidores do cliente 104. Similarmente, cada grupo de cache líder 108 pode incluir de- zenas, centenas ou milhares de nós de cache líder 114. Em modalidades particulares, cada um dos nós de cache seguidor 112 dentro de um dado grupo de cache seguidor 106 pode somente se comunicar com os outros nós de cache seguidor 112 dentro do grupo particular de cache seguidor 106, os servidores do cliente 104 servidos pelo grupo particular de cache seguidor 106 e os nós de cache líder 114 dentro do grupo de cache líder 108. Em modalidades particulares, a informação armazenada pelo sistema de rede 100 é armazenada dentro de cada centro de dados 102 tanto dentro do banco de dados 110, bem como dentro de cada um dos grupos de cache seguidor e líder 106 e 108, respectiva- mente. Em modalidades particulares, a informação armazenada dentro de cada banco de dados 110 é armazenada de modo relacional (por exemplo, como os dejetos e tabelas via MySQL), enquanto que a mesma informação é armazenada dentro de cada um dos grupos decache seguidor 106 e do grupo de cache líder 108 em vários fragmentos de dados arma- zenados por cada um dos grupos de cache seguidor e líder 106 e 108, respectivamente, na forma de um gráfico incluindo nós do gráfico e associações ou conexões entre os nós (cita- das aqui como bordas do gráfico). Em modalidades particulares, os fragmentos de dados de cada um dos grupos de cache seguidor 106 e grupo de cache líder 108 são depositados ou divididos entre os nós de cache 112 ou 114 dentro do grupo de cache respectivo. Isto é, cada um dos nós de cache 112 ou 114 dentro do grupo de cache respectivo armazena um subconjunto dos fragmentos armazenados pelo grupo (e cada conjunto de fragmentos ar- mazenado por cada um dos grupos de cache seguidor e líder 106 e 108, respectivamente, armazena a mesma informação, já que o grupo de cache líder sincroniza os fragmentos ar- —mazenados por cada um dos grupos de cache de um dado centro de dados 102 e, em al- gumas modalidades, entre centros de dados 102).
Em modalidades particulares, é atribuído para cada nó do gráfico um identificador único (ID) (a seguir chamado como ID do nó) que identifica unicamente o nó do gráfico no gráfico armazenado por cada um dos grupos de cache seguidor e líder 106 e 108, respecti- vamente, eo banco de dados 110; isto é, cada ID do nó é globalmente único. Em uma im- plementação, cada ID do nó é um identificador de 64 bits. Em uma implementação, um fra- gmento é alocado em um segmento do espaço do ID do nó. Em modalidades particulares, cada ID do nó mapeia (por exemplo, aritmeticamente ou via alguma função matemática) para um ID de fragmento correspondente único; isto é, cada ID de fragmento é também glo- — balmente único e se refere ao mesmo objeto de dados em cada conjunto de fragmentos ar- mazenados por cada um dos grupos de cache seguidor e líder 106 e 108, respectivamente. Em outras palavras, todos os objetos de dados são armazenados como nós do gráfico com
IDs de nó únicos e toda informação armazenada no gráfico nos fragmentos de dados de cada um dos grupos de cache seguidor e líder 106 e 108, respectivamente, é armazenada nos fragmentos de dados de cada um dos grupos de cache seguidor e líder 106 e 108, res- pectivamente, usando os mesmos IDs de fragmento únicos correspondentes.
Como recentemente descrito, em modalidades particulares, o espaço do ID do fra- gmento (a coleção de IDs do fragmento e informação associada armazenada por todos os fragmentos de cada grupo de cache e duplicada em todos os outros grupos de cache segui- dor 106 e grupo de cache líder 108) é dividido entre os nós de cache seguidor ou líder 112 e 114, respectivamente, dentro dos grupos de cache seguidor ou líder 106 e 108, respectiva- mente. Por exemplo, cada nó de cache seguidor 112 em um dado grupo de cache seguidor 106 pode armazenar um subconjunto dos fragmentos (por exemplo, dezenas, centenas ou milhares de fragmentos) armazenados pelo grupo respectivo de cache seguidor 106 e para cada fragmento é atribuído uma faixa de IDs do nó para os quais armazenar a informação, incluindo informação sobre os nós cujos IDs do nó respectivo mapeiam para os IDs de frag- mento na faixa de IDs de fragmento armazenados pelo fragmento particular. Similarmente, cada nó de cache líder 114 no grupo de cache líder 108 pode armazenar um subconjunto dos fragmentos (por exemplo, dezenas, centenas ou milhares de fragmentos) armazenados pelo grupo respectivo de cache líder 108 e para cada fragmento é atribuído uma faixa de IDs do nó para os quais armazenar a informação, incluindo informação sobre os nós cujos IDs do nó respectivos mapeiam para os IDs do fragmento na faixa dos IDs do fragmento arma- zenados pelo fragmento particular.
Entretanto, como descrito acima, um dado ID do fragmento corresponde com os mesmos objetos de dados armazenados pelos grupos de cache seguidor e líder 106 e 108, respectivamente. Como o número de nós de cache seguidor 106 dentro de cada grupo de cache seguidor 106 e o número de nós de cache líder 114 dentro do grupo de cache líder 108 podem variar estaticamente (por exemplo, os grupos de cache seguidor 106 e o grupo de cache líder 108 podem geralmente incluir números diferentes de nós de cache seguidor 112 e nós de cache líder 114, respectivamente) ou dinamicamente (por exemplo, nós de cache dentro de um dado grupo de cache podem ser suspensos por várias razões periodi- camente ou quando necessário para fixação, atualização ou manutenção), o número de fra- gmentos armazenados por cada um dos nós de cache seguidor 112 e nós de cache líder 114 pode variar estaticamente ou dinamicamente dentro de cada grupo de cache, bem co- mo entre grupos de cache. Além do mais, a faixa dos IDs de fragmento atribuídos para cada fragmento pode variar também estaticamente ou dinamicamente.
Em modalidades particulares, cada um dos nós de cache seguidor 112 e nós de cache líder 114 inclui software de gerenciamento de gráfico que gerencia o armazenamento e o fornecimento da informação colocada em cache dentro do nó de cache respectivo. Em modalidades particulares, o software de gerenciamento de gráfico funcionando em cada um dos nós de cache de um dado grupo de cache pode se comunicar para determinar quais fragmentos (e IDs de fragmento correspondentes) estão armazenados por cada um dos nós de cache dentro do grupo de cache respectivo.
Adicionalmente, se o nó de cache é um nó —decache seguidor 112, o software de gerenciamento de gráfico funcionando no nó de cache seguidor 112 recebe solicitações (por exemplo, solicitações de gravação ou leitura) dos ser- vidores do cliente 104, fornece as solicitações recuperando, atualizando, excluindo ou arma- zenando informação dentro do fragmento apropriado dentro do nó de cache seguidor e ge- rencia ou facilita a comunicação entre o nó de cache seguidor 112 e outros nós de cache seguidor 112 do grupo respectivo de cache seguidor 106, bem como a comunicação entre o nó de cache seguidor 112 e os nós de cache líder 114 do grupo de cache líder 108. Simi- larmente, se o nó de cache é um nó de cache líder 114, o software de gerenciamento de gráfico funcionando no nó de cache líder 114 gerencia a comunicação entre o nó de cache líder 114 e os nós de cache seguidor 112 dos grupos de cache seguidor 106 e os outros nós de cache líder 114 do grupo de cache líder 108, bem como a comunicação entre o nó de cache líder 114 e o banco de dados 110. O software de gerenciamento de gráfico funcio- nando em cada um dos nós de cache 112 e 114 entende que ele está armazenando e for-
necendo informação na forma de um gráfico.
Em modalidades particulares, o software de gerenciamento de gráfico em cada nó de cache seguidor 112 é também responsável por manter uma tabela que ele compartilha com os outros nós de cache 112 do grupo respectivo de cache seguidor 106, os nós de ca- che líder 114 do grupo de cache líder 108, bem como os servidores do cliente 104 que o grupo respectivo de cache seguidor 106 serve.
Essa tabela apresenta um mapeamento de cada ID do fragmento para o nó de cache particular 112 em um dado grupo de cache segui- —dor106que armazena o |ID do fragmento e a informação associada com o ID do fragmento.
Dessa maneira, os servidores do cliente 104 servidos por um grupo particular de cache se- guidor 106 sabe quais dos nós de cache seguidor 112 dentro do grupo de cache seguidor 106 mantêm o ID do fragmento associado com a informação que o servidor do cliente 104 está tentando acessar, adicionar ou atualizar (por exemplo, um servidor do cliente 104 pode enviar solicitações de gravação ou leitura para o nó particular de cache seguidor 112 que armazena ou armazenará a informação associada com um ID do fragmento particular depois de usar a tabela de mapeamento para determinar qual dos nós de cache seguidor 112 está atribuído e armazena o ID do fragmento). Similarmente, em modalidades particulares, o sof- tware de gerenciamento do gráfico em cada nó de cache líder 114 é também responsável pormanter uma tabela que ele compartilha com os outros nós de cache 114 do grupo res- pectivo de cache líder 108, bem como os nós de cache seguidor 112 dos grupos de cache seguidor 106 que o grupo de cache líder 108 gerencia.
Além do mais, dessa maneira, cada nó de cache seguidor 112 em um dado grupo de cache seguidor 106 conhece qual dos ou- tros nós de cache seguidor 112 no dado grupo de cache seguidor 106 armazena quais IDs do fragmento armazenados pelo grupo respectivo de cache seguidor 106. Similarmente, dessa maneira, cada nó de cache líder 114 no grupo de cache líder 108 conhece qual dos outrosnós de cache líder 114 no grupo de cache líder 108 armazena quais IDs do fragmen- to armazenados pelo grupo de cache líder 108. Além do mais, cada nó de cache seguidor 112 em um dado grupo de cache seguidor 106 sabe qual dos nós de cache líder 114 no grupo de cache líder 108 armazena quais IDs do fragmento. Similarmente, cada nó de ca- che líder 114 no grupo de cache líder 108 conhece qual dos nós de cache seguidor 112 em cadaum dos grupos de nó seguidor 106 armazena quais IDs do fragmento.
Em modalidades particulares, a informação quanto a cada nó no gráfico e, em mo- dalidades exemplares particulares, um gráfico social, é armazenada em um fragmento res- pectivo de cada um dos grupos de cache seguidor 106 e grupo de cache líder 108 com base no seu ID do fragmento. Cada nó no gráfico, como discutido acima, tem um ID do nó. Junto comolbD do fragmento, o nó de cache respectivo 112 ou 114 pode armazenar um parâmetro do tipo do nó identificando um tipo do nó, bem como um ou mais pares de nome-valor (tal como conteúdo (por exemplo, texto, mídia ou URLs para a mídia ou outros recursos)) e me- tadados (por exemplo, um carimbo de tempo quando o nó foi criado ou modificado). Em mo- dalidades particulares, cada borda no gráfico, e em modalidades exemplares particulares umgráfico social, é armazenada com cada nó ao qual a borda está conectada. Por exemplo, a maior parte das bordas é bidirecional; isto é, a maior parte das bordas conecta, cada uma, dois nós no gráfico. Em modalidades particulares, cada borda é armazenada no mesmo fra- gmento com cada nó que a borda conecta. Por exemplo, uma borda conectando o ID1 do nó no ID2 do nó pode ser armazenada com o ID do fragmento correspondendo com o ID1 do nó (porexemplo,ID1 do fragmento) e com o ID do fragmento correspondendo com o ID2 do nó (por exemplo, ID2 do fragmento), que pode ficar em fragmentos diferentes ou até mesmo nós de cache diferentes de um dado grupo de cache. Por exemplo, a borda pode ser arma- zenada com o ID1 do fragmento na forma de (ID1 do nó, tipo de borda, ID2 do nó) onde o tipo da borda indica o tipo da borda. A borda pode também incluir metadados (por exemplo, um carimbo de tempo indicando quando a borda foi criada ou modificada). A borda pode também ser colocada em cache com o ID2 do fragmento na forma de (ID1 do nó, tipo da borda, ID2 do nó). Por exemplo, quando um usuário do sistema de rede social 100 estabele- ce uma relação de contato com outro usuário ou uma relação de fã com um conceito ou usuário, a relação da borda do tipo “amigo” ou “fã” pode ser armazenada em dois fragmen- tos, um primeiro compartilhado correspondendo com o fragmento para o qual o identificador do usuário é mapeado e um segundo fragmento para o qual o identificador do objeto do ou- tro usuário ou conceito é mapeado.
O sistema de rede 100, e particularmente o software de gerenciamento de gráfico funcionando nos nós de cache seguidor 112 dos grupos de cache seguidor 106 e nos nós de cache líder 114 do grupo de cache líder 108, suporta várias consultas recebidas de ser- vidores do cliente 104, bem como para ou de outros nós de cache seguidor ou líder 112 e 114, respectivamente. Por exemplo, a consulta object add (ID1, tipo de nó 1, metadados (nem sempre especificados), carga útil nem sempre especificada)) faz com que o nó de cache receptor armazene um novo nó como o ID1 do nó especificado na consulta do tipo de nó 1 especificado no fragmento ao qual o ID1 do nó corresponde. O nó de cache receptor também armazena com o ID1 do nó os metadados (por exemplo, um carimbo de tempo) e a carga útil (por exemplo, pares de nome-valor e/ou conteúdo, tais como texto, mídia, recursos ou referências a recursos), se especificado. Como outro exemplo, a consulta object update 11ID1, tipo de nó 1 (nem sempre especificado), metadados (nem sempre especificados), car- ga útil (nem sempre especificada)) faz com que o nó de cache receptor atualize o nó identifi- cado pelo ID1 do nó especificado na consulta (por exemplo, mudar o tipo do nó para o tipo denó1 especificado na consulta, atualizar os metadados com os metadados especificados na consulta ou atualizar o conteúdo armazenado com a carga útil especificada na consulta) no fragmento correspondente. Como outro exemplo, a consulta object delete (ID1 do nó) faz com que o nó de cache receptor exclua o nó identificado pelo ID1 do nó especificado na consulta. Como outro exemplo, a consulta object get (ID1 do nó) faz com que o nó de cache receptor recupere o conteúdo armazenado com o nó identificado pelo ID1 do nó especifica- do na consulta.
Agora com referência às consultas de borda (em oposição às consultas do nó há pouco descritas), a consulta assoc add (ID1, tipo de borda 1, ID2, metadados (nem sempre especificados)) faz com que o nó de cache receptor (que armazena o ID1 do nó) crie uma borda entre o nó identificado pelo ID1 do nó e o nó identificado pelo ID2 do nó do tipo de borda tipo de borda 1 e armazene a borda com o nó identificado pelo ID1 do nó junto com os metadados (por exemplo, um carimbo de tempo indicando quando a borda foi solicitada) se especificado. Como outro exemplo, a consulta assoc update (ID1 do nó, tipo de borda 1, ID2 do nó, metadados (nem sempre especificados) faz com que o nó de cache receptor (que armazena olD1 do nó) atualize a borda entre o nó identificado pelo ID1 do nó e o nó identi- ficado pelo ID2 do nó. Como outro exemplo, a consulta assoc delete (ID1 do nó, tipo de borda 1 (nem sempre especificado), ID2 do nó) faz com que o nó de cache receptor (que armazena o ID1 do nó) exclua a borda entre o nó identificado pelo ID1 do nó e o nó identifi- cado pelo ID2 do nó. Como outro exemplo, a consulta assoc get (ID1 do nó, tipo de borda 1, chave de classificação (nem sempre especificada), início (nem sempre especificado), limite (nem sempre especificado)) faz com que o nó de cache receptor (que armazena o ID1 do nó) retorne os IDs do nó dos nós conectados no nó identificado pelo ID1 do nó pelas bordas do tipo de borda 1. Adicionalmente, se especificado, a chave de classificação específica um filtro. Por exemplo, se a chave de classificação especifica um carimbo de tempo, o nó de cache receptor (que armazena o ID1 do nó) retorna os IDs do nó dos nós conectados no nó identificado pelo ID1 do nó pelas bordas do tipo de borda 1 que foram criadas entre o valor detempo especificado pelo parâmetro de início e o valor de tempo especificado pelo parâ- metro de limite. Como outro exemplo, a consulta assoc exists (ID1 do nó, tipo de borda 1, lista de outros IDs do nó, chave de classificação (nem sempre especificada), início (nem sempre especificado), limite (nem sempre especificado)) faz com que o nó de cache recep- tor (que armazena o ID1 do nó) retorne os IDs do nó dos nós especificados na lista de ou- troslDs do nó conectados no nó identificado pelo ID1 do fragmento pelas bordas do tipo de borda 1. Além disso, as consultas descritas acima podem ser enviadas na forma descrita e usadas para atualizar os nós de cache líder 114. Em uma implementação, a camada de cache implementada pelos grupos de cache seguidor e líder 108 e 106 mantém em cache os dados de associação em um ou mais índi- cesem uma maneira que suporta altas taxas de consulta para um ou mais tipos de consulta. Em algumas implementações, a invenção facilita a interseção eficiente, a associação e con- sultas de filtragem direcionadas para associações entre nós no gráfico. Por exemplo, em uma implementação, a camada de cache coloca em cache a informação em uma maneira otimizada para lidar com a pesquisa pontual, faixa e consultas de contagem para uma varie- dade de associações entre os nós. Por exemplo, na construção de uma página, um servidor do cliente 104 pode emitir uma consulta para todos os amigos de um dado usuário. O servi- dor do cliente 104 pode emitir uma consulta assoc get identificando o usuário e o tipo de borda “amigo”. Para facilitar a manipulação da consulta, um nó de cache na camada de ca- che pode armazenar associações de um dado tipo (tais como “amigos”, “fãs”, “membros”, “semelhantes”, etc.) entre um primeiro nó (por exemplo, um nó correspondendo com um usuário) e um nó correspondendo com os contatos ou amigos de um usuário. Além disso, para construir outra parte da página, um servidor do cliente 104 pode emitir uma consulta do último N conjunto de postagens de parede no perfil, emitindo uma consulta assoc get identi- ficando o usuário ou o perfil do usuário, o tipo de borda “postagem de parede” e um valor limite. Similarmente, comentários para uma postagem de parede particular podem ser recu- perados em uma maneira similar.
Em uma implementação, a camada de cache implementada pelos grupos de cache seguidor 106 e os grupos de cache líder mantém um conjunto de estruturas na memória para associações entre os nós (id1, id2) no gráfico que facilita a rápida pesquisa e lidam com altastaxas de consulta. Por exemplo, para cada conjunto de associação (id1, tipo) (um conjunto de todas as associações que se originam em id1 e têm um dado tipo), a camada de cache mantém dois índices na memória. Como discutido acima, esses conjuntos de associ-
ação são mantidos por nós de cache em cada grupo baseado no fragmento no qual o id1 se situa. Ainda adicionalmente, dada a estrutura discutida abaixo, uma dada associação entre dois nós pode ser armazenada em dois conjuntos de associação, cada um direcionado para os nós respectivos da associação. Um primeiro índice é baseado em um atributo temporal (por exemplo, carimbos de tempo) e suporta consultas de faixa. Um segundo índice pelo id2 não suporta consultas de faixa, mas suporta melhor complexidade de tempo de inserções e pesquisas. Em uma implementação, o primeiro índice é uma formação dinâmica ordenada de entradas de associação armazenadas em um armazenamento temporário circular. Cada entrada no armazenamento temporário circular descreve ou corresponde com uma associa- çãoe contém os W campos seguintes: a) indicadores $ (1 byte) (indicando a visibilidade de uma associação); b) $id2 (8 bytes); c) tempo $ (4 bytes); d) dados $ (8 bytes) (dados $ é um campo de 8 bytes de tamanho fixo (quando mais do que 8 bytes são necessários para da- dos $, isso se torna um ponteiro para outro pedaço da memória para manter o valor comple- to dos dados $; dados S é opcional para um dado tipo de associação) e e) ligação S (8 bytes) desloca as entradas próximas e prévias no mesmo depósito de índice do id2 (ver abaixo). Em uma implementação, a formação é ordenada pela ascensão do atributo tempo $. O número de entradas no índice é igualado (tal como 10.000) e configurável pelo tipo da associação. Quando o limite é alcançado, a formação reinicia ciclicamente. Pelo fato de que a formação é classificada pelo tempo $, a maior parte das novas entradas será anexada no fim sem deslocar qualquer um dos elementos existentes.
Em uma implementação, o índice primário pode ser armazenado em uma única chave memória de cache que pode ser pesquisada por nome (“assoc:<id1>:<type>") através de uma tabela de dispersão em memória de cache global. A formação pode ser defrontada com um cabeçalho contendo os campos seguintes: a) contagem (4 bytes): a contagem de associações visíveis no conjunto de associação (id1, tipo) (armazenada de modo persisten- te, não apenas as entradas em cache no índice); b) dado inicial (4 bytes): o deslocamento do byte do dado inicial da formação (elemento que classifica mais alto) no armazenamento temporário circular; c) dado final (4 bytes): o deslocamento do byte do dado final da forma- ção (elemento que classifica mais baixo) no armazenamento temporário circular e d) pontei- rodo índice do id2 (8 bytes): um ponteiro para um bloco contendo uma tabela de dispersão do id2.
O segundo índice ($id2) é implementado, em uma modalidade, como uma tabela de dispersão e suporta rápidas inserções e pesquisas para uma dada associação ($id1, tipo $, $id2). A própria tabela de dispersão, em uma implementação, pode ser armazenada em um — bloco separado alocado com o distribuidor de memória em memória de cache. A tabela é uma formação de deslocamentos para o índice primário, cada um identificando o primeiro elemento no depósito de prova correspondente. Os elementos são vinculados em um depó-
sito através de seus campos de ligação $. O armazenamento da tabela de dispersão em um bloco separado permite que os executores redimensionem a tabela e o índice primário inde- pendentemente, assim reduzindo a quantidade de memória copiada à medida que o conjun- to de associação cresce. A ligação das entradas da associação em depósitos no lugar tam- bém melhora a eficiência da memória. A tabela de dispersão (e listas de depósito) pode pre- cisar ser reconstruída quando as entradas marcadas ocultas ou excluídas são apagadas do Índice, mas isso pode ser feito raras vezes. Dessa forma, quando uma nova associação do mesmo <tipo> é adicionada, um nó de cache 112, 114 adiciona o objeto recentemente associado na tabela de dispersão e no armazenamento temporário circular, removendo a entrada mais antiga do armazenamento temporário circular. Como discutido acima, o valor da <chave de classificação> pode ser usado para classificar entradas correspondentes com base no atributo, tal como carimbos de tempo. Além disso, um valor <limite> limita o número de resultados retornados para os primeiros N valores, onde N=<limite>. Essa configuração permite fornecer consultas com relação às associações entre nós em uma taxa de consulta muito alta. Por exemplo, uma primeira consulta pode solicitar a exibição de um conjunto de amigos em uma seção de uma página da rede. Um nó de cache pode responder rapidamente a uma consulta get assoc (id1, tipo, chave de classificação, limite) pesquisando o conjunto de associação correspon- dendo com o id1 acessando o índice primário e recuperando as primeiras N entradas de id2 (onde N = limite) no armazenamento temporário circular. Além disso, a tabela de dispersão do índice secundário facilita as pesquisas pontuais. Ainda adicionalmente, o valor de conta- gem mantido pela camada de cache facilita rápidas respostas para a contagem de um dado conjunto de associação (id1, tipo).
Alguns exemplos gerais de armazenamento e fornecimento de dados serão agora descritos (exemplos mais específicos relacionados com implementações exemplares parti- culares de um gráfico social serão descritos mais tarde depois que as implementações exemplares particulares do gráfico social são descritas). Por exemplo, quando um servidor do cliente 104 recebe uma solicitação por uma página da rede, tal como de um usuário do sistema de rede 100 ou de outro servidor, componente, aplicação ou processo do sistema de rede 100 (por exemplo, em resposta a uma solicitação do usuário), o servidor do cliente 104 pode precisar emitir uma ou mais consultas a fim de gerar a pasta de rede solicitada. Além disso, como o usuário interage com o sistema de rede 100, o servidor do cliente 104 pode receber solicitações que estabelecem ou modificam nós de objeto e/ou associações aos nós de objeto. Em alguns casos, a solicitação recebida por um servidor do cliente 104 incluigeralmente o ID do nó representando o usuário em cujo nome a solicitação para o ser- vidor do cliente 104 foi feita. A solicitação pode também, ou alternadamente, incluir um ou mais outros IDs do nó correspondendo com objetos que o usuário pode desejar ver, atuali-
zar, excluir ou conectar ou associar (com uma borda). Por exemplo, uma solicitação pode ser uma solicitação de leitura para acessar in- formação associada com o objeto ou objetos que o usuário deseja ver (por exemplo, um ou mais objetos para fornecer uma página da rede). Por exemplo, a solicitação de leitura pode ser uma solicitação por conteúdo armazenado para um nó particular.
Por exemplo, uma pos- tagem de parede em um perfil do usuário pode ser representada como um nó com um tipo de borda de “postagem de parede”. Comentários na postagem de parede podem também ser representados como nós no gráfico com associações de “comentário” do tipo de borda coma postagem de parede.
Em tal exemplo, em modalidades particulares, o servidor do cliente 104 determina o ID do fragmento correspondendo com o ID do nó do objeto (nó) que inclui o conteúdo ou outra informação solicitada, usa a tabela de mapeamento para determi- nar qual dos nós de cache seguidor 112 (no grupo de cache seguidor 106 que abastece o servidor do cliente 104) armazena o ID do fragmento e transmite uma consulta incluindo o ID dofragmento para o particular dos nós de cache seguidor 112 armazenando a informação associada com e armazenada com o ID do fragmento.
O nó de cache particular 112 então recupera a informação solicitada (se colocada em cache dentro do fragmento corresponden- te) e transmite a informação para o servidor do cliente solicitante 104, que pode então forne- cer a informação para o usuário solicitante (por exemplo, na forma de um HTML ou outro documento estruturado que pode ser renderizado pelo navegador da rede ou outra aplica- ção de renderização de documento funcionando no dispositivo de computação do usuário). Se a informação solicitada não está armazenada/colocada em cache dentro do nó de cache seguidor 112, o nó de cache seguidor 112 pode então determinar, usando a tabela de ma- peamento, qual dos nós de cache líder 114 armazena o fragmento armazenando o ID do fragmento e envia a consulta para o nó particular de cache líder 114 que armazena o ID do fragmento.
Se a informação solicitada está colocada em cache dentro do nó particular de cache líder 114, o nó de cache líder 114 pode então recuperar a informação solicitada e en- viá-la para o nó de cache seguidor 112, que então atualiza o fragmento particular no nó de cache seguidor 112 para armazenar a informação solicitada com o ID do fragmento e pros- segue para fornecer a consulta como há pouco descrito para o servidor do cliente 104, que pode então fornecer a informação para o usuário solicitante.
Se a informação solicitada não está colocada em cache dentro do nó de cache líder 114, o nó de cache líder 114 pode en- tão traduzir a consulta para a linguagem do banco de dados 110 e transmitir a nova consulta para o banco de dados 110, que então recupera a informação solicitada e transmite a infor- mação solicitada para o nó particular de cache líder 114. O nó de cache líder 114 pode en- tão traduzir a informação recuperada de volta para a linguagem gráfica entendida pelo sof- tware de gerenciamento do gráfico, atualizar o fragmento particular no nó de cache líder 114 para armazenar a informação solicitada com o ID do fragmento e transmitir a informação recuperada para o nó particular de cache seguidor 112, que então atualiza o fragmento par- ticular no nó de cache seguidor 112 para armazenar a informação solicitada com o ID do fragmento e prossegue para fornecer a consulta como há pouco descrito para o servidor do cliente 104, que pode então fornecer a informação para o usuário solicitante.
Como outro exemplo, a solicitação do usuário pode ser uma solicitação de grava- ção para atualizar a informação existente ou armazenar informação adicional para um nó ou para criar ou modificar uma borda entre dois nós. No primeiro caso, se a informação a ser armazenado é para um nó não existente, o servidor do cliente 104 recebendo a solicitação do usuáriotransmite uma solicitação por um ID do nó para um novo nó para o grupo respec- tivo de cache seguidor 106 que abastece o servidor do cliente 104. Em alguns casos ou mo- dalidades, o servidor do cliente 104 pode especificar um fragmento particular dentro do qual o novo nó deve ser armazenado (por exemplo, para colocar junto o novo nó com outro nó). Em tal caso, o servidor do cliente 104 solicita um novo ID do nó do nó particular de cache seguidor 112 armazenando o fragmento especificado. Alternadamente, o servidor do cliente 104 pode passar um ID do nó de um nó existente com a solicitação para um novo ID do nó para o nó de cache seguidor 112 armazenando o fragmento que armazena o ID do nó pas- sado para fazer com que o nó de cache seguidor 112 responda para o servidor do cliente 104 com um ID do nó para o novo nó que está na faixa dos IDs do nó armazenados no fra- gmento. Em outros casos ou modalidades, o servidor do cliente 104 pode selecionar (por exemplo, aleatoriamente ou com base em alguma função) um nó particular de cache segui- dor 112 ou um fragmento particular para enviar a nova solicitação do ID do nó. Qualquer que seja o caso, o nó de cache particular 112, ou mais particularmente o software de gerencia- mento do gráfico funcionando no nó de cache seguidor 112, então transmite o novo ID do nó parao servidor do cliente 104. O servidor do cliente 104 pode então formular uma solicita- ção de gravação que inclui o novo ID do nó para o nó correspondente de cache seguidor
112. A solicitação de gravação pode também especificar um tipo de nó do novo nó e incluir uma carga útil (por exemplo, conteúdo a ser armazenado com o novo nó) e/ou metadados (por exemplo, o ID do nó do usuário fazendo a solicitação, um carimbo de tempo indicando quando a solicitação foi recebida pelo servidor do cliente 104, entre outros dados) a ser ar- mazenados com o ID do nó. Por exemplo, a solicitação de gravação enviada para o nó de cache seguidor 112 pode se ser da forma object add (ID do nó, tipo do nó, carga útil, meta- dados). Similarmente, para atualizar um nó, o servidor do cliente 104 pode enviar uma solici- tação de gravação da forma object modify (ID do nó, tipo do nó, carga útil, metadados) para onóde cache seguidor 112 armazenando o fragmento dentro do qual o ID do nó está arma- zenado. Similarmente, para excluir um nó, o servidor do cliente 104 pode enviar uma solici-
tação da forma object delete (ID do nó) para o nó de cache seguidor 112 armazenando o fragmento dentro do qual o ID do fragmento está armazenado.
Em modalidades particulares, o nó de cache seguidor então transmite a solicitação para o nó de cache líder 114 armazenando o fragmento que armazena o ID do nó corres- pondente, de modo que o nó de cache líder 114 pode então atualizar o fragmento. O nó de cache líder 114 então traduz a solicitação para a linguagem do banco de dados 110 e transmite a solicitação traduzida para o banco de dados 110, de modo que o banco de da- dos pode então ser atualizado.
A figura 4 ilustra um método exemplar para processar uma solicitação para adicio- naruma associação (assoc add) entre dois nós. Como a figura 4 ilustra, quando um nó de cache seguidor 112 recebe uma solicitação assoc add (por exemplo, assoc addí(id1, tipo, id2, metadados), ele acessa um índice para identificar o objeto do conjunto da associação correspondendo com o id1 e tipo (402). O nó de cache seguidor 112 adiciona id2 em ambos a tabela de dispersão e o armazenamento temporário circular do objeto do conjunto da as- —sociação e incrementa o valor da contagem do objeto do conjunto da associação (404). O objeto do conjunto da associação agora mantém a nova associação do dado tipo entre o id1 do nó e o id2 do nó. Para facilitar a busca da associação relativa ao id2, o nó de cache se- guidor 112 identifica o Id do fragmento correspondendo com o id2 do identificador do nó e envia a solicitação assoc add para o nó de cache seguidor 112 no grupo que lida com o fragmento identificado (406). Se o nó de cache seguidor instantâneo 112 lida com o frag- mento, ele processa a solicitação assoc add. Em uma implementação, o nó de cache se- guidor expedidor 112 pode transmitir uma solicitação assoc add modificada que sinaliza que essa é uma atualização necessária para estabelecer uma associação bidirecional na cama- da do cache. O nó de cache seguidor 112 também envia a solicitação assoc add para o a —nóde cache líder 114 correspondendo com o fragmento no qual o id1 se situa (408). O nó de cache líder 114 pode executar um processo similar para estabelecer uma associação bidirecional no grupo de cache líder. O nó de cache líder 114 também faz com que a nova associação persista no banco de dados 110. Dessa maneira, uma associação entre o id1 do nó e o id2 do nó é agora pesquisável em um índice com referência ao id1 e tipo, e separa- — damente,id2 e tipo.
Em modalidades particulares, o gráfico pode manter uma variedade de tipos de nó diferentes, tais como usuários, páginas, eventos, postagens de parede, comentários, foto- grafias, vídeos, informação de fundo, conceitos, interesses e qualquer outro elemento que seja útil para representar como um nó. Tipos de borda correspondem com associações en- treosnóse podem incluir amigos, seguidores, assinantes, fãs, semelhantes (ou outras indi- cações de interesse), postagem de parede, comentário, ligações, sugestões, recomenda- ções e outros tipos de associações entre nós. Em uma implementação, uma porção do grá-
fico pode ser um gráfico social incluindo nós do usuário em que cada um corresponde com um usuário respectivo do ambiente de rede social.
O gráfico social pode também incluir ou- tros nós, tal como nós de conceito, cada um devotado ou direcionado a um conceito particu- lar, bem como nós de tópico, que podem ou não ser efêmeros, cada um devotado ou direci- onado para um tópico particular do interesse atual entre usuários do ambiente de rede soci- al.
Em modalidades particulares, cada nó tem, representa ou é representado por, uma pági- na de rede correspondente (“página de perfil”) hospedada ou acessível no ambiente de rede social.
Por meio de exemplo, um nó do usuário pode ter uma página de perfil do usuário correspondente na qual o usuário correspondente pode adicionar conteúdo, fazer declara- çõese de outraforma se expressar.
Por meio de exemplo, como será descrito abaixo, várias páginas de rede hospedadas ou acessíveis no ambiente de rede social, tais como, por exemplo, páginas de perfil do usuário, páginas de perfil do conceito ou páginas de perfil de tópico, possibilitam que os usuários postem conteúdo, postem atualizações de estado, pos- tem mensagens, postem comentários incluindo comentários sobre outras postagens subme- tidas pelo usuário ou outros usuários, declarem interesses, declarem um “semelhante” (des- crito abaixo) para qualquer uma das postagens acima mencionadas, bem como páginas e conteúdo específico, ou de outra forma se expressem ou executem várias ações (a seguir essas e outras ações do usuário podem ser chamadas coletivamente como “postagens” ou “ações do usuário”). Em algumas modalidades, a postagem pode incluir ligação para, ou de outra forma referência ao conteúdo adicional, tal como conteúdo de mídia (por exemplo, fotos, vídeos, música, texto, etc.), localizadores de recurso uniforme (URLs) e outros nós, via suas páginas de perfil respectivas, outras páginas de perfil do usuário, páginas de perfil do conceito, páginas de tópico ou outras páginas de rede ou aplicações de rede.
Tais posta- gens, declarações ou ações podem então ficar visíveis pelo usuário autor, bem como outros usuários.
Em modalidades particulares, o gráfico social ainda inclui uma pluralidade de bor- das que definem ou representam, cada uma, uma conexão entre um par correspondente de nós no gráfico social.
Como discutido acima, cada item de conteúdo pode ser um nó no grá-
fico ligado a outros nós.
Como há pouco descrito, em várias modalidades exemplares, uma ou mais páginas de rede descritas ou aplicações de rede são associadas com um ambiente de rede social ou serviço de rede social.
Como usado aqui, um “usuário” pode ser um indivíduo (usuário hu- mano), uma entidade (por exemplo, uma empresa, comércio ou aplicação de terceiros) ou um grupo (por exemplo, de indivíduos ou entidades) que interage ou se comunica com ou através de tal ambiente de rede social.
Como usado aqui, um “usuário registrado” se refere aum usuário que se registrou oficialmente dentro do ambiente de rede social (geralmente, os usuários e os nós do usuário descritos aqui se referem a usuários registrados somente, embora isso não seja necessariamente um requisito em outras modalidades; isto é, em ou-
tras modalidades, os usuários e os nós do usuário descritos aqui podem se referir a usuários que não se registraram com o ambiente de rede social descrito aqui). Em modalidades parti- culares, cada usuário tem uma página de “perfil” correspondente armazenada, hospedada Ou acessível pelo ambiente de rede social e visível por todos ou um subconjunto seleciona- do de outros usuários. De forma geral, um usuário tem direitos administrativos a toda ou uma porção de sua própria página de perfil respectivo, bem como potencialmente a outras páginas criadas por ou para o usuário particular incluindo, por exemplo, páginas iniciais, páginas hospedando aplicações de rede, entre outras possibilidades. Como usado aqui, um “usuário autenticado” se refere a um usuário que foi autenticado pelo ambiente de rede so- cial como sendo o usuário reivindicado em uma página de perfil correspondente ao qual o usuário tem direitos administrativos ou, alternadamente, um representante confiável ade- quado do usuário reivindicado.
Uma conexão entre dois usuários ou conceitos pode representar uma relação defi- nida entre usuários ou conceitos do ambiente de rede social e pode ser definida logicamente emuma estrutura de dados adequada do ambiente de rede social como uma borda entre os nós correspondendo com os usuários, conceitos, eventos ou outros nós do ambiente de re- de social para o qual a associação foi feita. Como usado aqui, uma “amizade” representa uma associação, tal como uma relação social definida, entre um par de usuários do ambien- te de rede social. Um “amigo”, como usado aqui, pode se referir a qualquer usuário do am- biente de rede social com o qual outro usuário formou uma conexão, amizade, associação ou relação com, fazendo uma borda ser gerada entre os dois usuários. Por meio de exem- plo, dois usuários registrados podem se tornar amigos entre si explicitamente tal como, por exemplo, por um dos dois usuários selecionando o outro para amizade como um resultado de transmitir, ou ocasionar a transmissão, uma solicitação de amizade com o outro usuário, que pode então aceitar ou negar a solicitação. Alternativamente, amizades ou outras cone- xões podem ser estabelecidas automaticamente. Tal amizade social pode ficar visível para outros usuários, especialmente esses em que eles próprios são amigos de um ou de ambos os usuários registrados. Um amigo de um usuário registrado pode também ter mais privilé- gios de acesso ao conteúdo, especialmente conteúdo gerado ou declarado pelo usuário, no perfilou outra página do usuário registrado. Deve ser observado, entretanto, que dois usuá- rios que têm uma conexão de amizade estabelecida entre eles no gráfico social podem não ser necessariamente amigos (no sentido convencional) na vida real (fora do ambiente de rede social). Por exemplo, em algumas implementações, um usuário pode ser uma entidade de negócios ou outra não humana e, assim, incapaz de ser um amigo de um usuário huma- nono sentido tradicional da palavra. Como usado aqui, um “fã” pode se referir a um usuário que é um sustentador ou seguidor de um usuário particular, página de rede, aplicação de rede ou outro conteúdo de rede acessível no ambiente de rede social.
Em modalidades particulares, quando um usuá- rio é um fã de uma página de rede particular (“admira” a página de rede particular), o usuário pode ser listado nessa página como um fã para outros usuários registrados ou o público em geral ver.
Adicionalmente, um avatar ou imagem de perfil do usuário pode ser mostrado na página (ou dentro/em qualquer uma das páginas descritas abaixo). Como usado aqui, um “semelhante” pode se referir a alguma coisa, tal como, por meio de exemplo e não por meio de limitação, uma postagem, um comentário, um interesse, uma ligação, um pedaço de mí- dia (por exemplo, foto, álbum de fotos, vídeo, música, etc.), um conceito, uma entidade ou uma página, entre outras possibilidades (em algumas implementações um usuário pode in- —dicarou declarar um semelhante a ou para virtualmente qualquer coisa em qualquer página hospedada por ou acessível pelo sistema ou ambiente de rede social) que um usuário, e particularmente um usuário registrado ou autenticado, declarou ou de alguma outra forma demonstrou que ele ou ela gosta, é um fã de, suporta, aproveita ou de outra forma tem uma visão positiva.
Em uma modalidade, indicar ou declarar um “semelhante” ou indicar ou de- clararque o usuário é um “fã” de alguma coisa pode ser processado e definido equivalente- mente no ambiente de rede social ou pode ser usado de modo permutável; similarmente, se declarar um “fã” de alguma coisa, tal como um conceito ou página de perfil do conceito, ou declarar que se “gosta” da coisa, pode ser definido equivalentemente no ambiente de rede social e usado de modo permutável aqui.
Adicionalmente, como usado aqui, um “interesse” pode se referir ao interesse declarado pelo usuário, tal como um interesse declarado pelo usuário apresentado na página de perfil do usuário.
Como usado aqui, um “desejo” pode se referir a virtualmente qualquer coisa que um usuário deseja.
Como descrito acima, um “con- ceito” pode se referir a virtualmente qualquer coisa que um usuário pode declarar ou de ou- tra forma demonstrar um interesse, um gosto para ou uma relação com, tal como, por meio de exemplo, um esporte, um time de esporte, um gênero de música, um compositor musical, um passatempo, um negócio (empresa), uma entidade, um grupo, uma celebridade, uma pessoa que não é um usuário registrado ou até mesmo um evento, em algumas modalida- des, outro usuário (por exemplo, um usuário não autenticado), etc.
Por meio de exemplo, pode existir um nó de conceito e página de perfil do conceito para “Jerry Rice”, o jogador de futebol profissional famoso, criado e administrado por um ou mais de uma pluralidade de usuários (por exemplo, diferentes de Jerry Rice), enquanto o gráfico social adicionalmente inclui um nó do usuário e página de perfil do usuário para Jerry Rice criado por e adminis-
trado pelo próprio Jerry Rice (ou representantes confiáveis ou autorizados de Jerry Rice). A figura 5 ilustra um sistema redundante distribuído.
Na implementação mostrada, o sistema redundante distribuído inclui pelo menos primeiro e segundo centros de dados 102a, 102b.
Cada um dos centros de dados 102a, 102b inclui um ou mais grupos de cache seguidor 106 e um grupo de cache líder 108a, 108b.
Em uma implementação, o grupo de cache líder 108a age como um grupo de cache primário (mestre), enquanto o grupo de ca- che líder 108b é um grupo de cache secundário (escravo). Em uma implementação, os cen- tros de dados 102a, 102b são redundantes no sentido que as funções de sincronização são utilizadas para obter cópias duplicadas do banco de dados 110. Em uma implementação, o centrode dados 102a pode estar fisicamente localizado em uma região geográfica (tal como a costa oeste dos Estados Unidos) para fornecer o tráfego dessa região, enquanto o centro de dados 102b pode estar fisicamente localizado em outra região geográfica (tal como a costa leste dos Estados Unidos). Dado que os usuários de qualquer uma dessas regiões podem acessar os mesmos dados e associações, mecanismos de sincronização eficientes sãodesejados.
A figura 6 ilustra um método exemplar de como um nó de cache líder 114 processa comandos de gravação. Como discutido acima e com referência à figura 5, um nó de cache seguidor 112 pode receber um comando de gravação para adicionar/atualizar um objeto ou associação de um servidor do cliente 104 (figura 5, No. 1). O nó de cache seguidor 112 en- viaocomando de gravação para um nó de cache líder correspondente 114 (figura 5, No. 2). Quando o nó de cache líder 114 recebe um comando de gravação de um nó de cache se- guidor (602), ele processa o comando de gravação para atualizar uma ou mais entradas no cache mantido pelo grupo de cache líder 108a (604) e grava a atualização no banco de da- dos persistente 110a (606) (figura 5, No. 3). O nó de cache líder 114 também reconhece o comando de gravação (ACK) para o nó de cache seguidor 112 e difunde a atualização para outros grupos de cache seguidor 106 do centro de dados 102a (figura 5, No. 4a) e o grupo de cache líder secundário 108b, que envia a atualização para seus grupos de cache segui- dor 106 (figura 5, No. 4b) (608). Como a figura 6 ilustra, o nó de cache líder 114 também adiciona a atualização em um registro de duplicação (610). Os bancos de dados 110a, 110b implementam um mecanismo de sincronização, tal como duplicação MySQL, para sincroni- zar os bancos de dados persistentes.
A figura 7 ilustra um fluxo de mensagem de acordo com uma implementação da in- venção. Quando um comando de gravação é recebido em um nó de cache seguidor 112 em um anel 106 que não está diretamente associado com o grupo de cache líder primário 108a (figura7,No.1),onóde cache seguidor 112 envia a mensagem de gravação para o grupo de cache líder primário 108a para processamento (figura 7, No. 2). Um nó de cache líder 114 no grupo de cache líder primário 108a pode então difundir a atualização para os seus grupos de cache seguidor 106 (figura 7, No. 3) e grava as mudanças no banco de dados 110a. Como a figura 7 mostra, o nó de cache seguidor 112 que recebeu o comando de gra- vação pode também enviar o comando de gravação para seu grupo de cache líder secundá- rio 108b (figura 7, No. 5), que difunde as atualizações para outros grupos de cache seguidor 106 (figura 7, No. 5). A arquitetura precedente permite, portanto, que as mudanças na ca-
mada de cache sejam rapidamente duplicadas através dos centros de dados, enquanto a duplicação separada entre bancos de dados 110a, 110b permite a segurança dos dados.
As aplicações ou processos descritos aqui podem ser implementados como uma série de instruções legíveis por computador, personificadas ou codificadas em ou dentro de ummeiode armazenamento de dados tangível, que quando executadas são operáveis para fazer com que um ou mais processadores implementem as operações descritas acima. Em- bora os processos e mecanismos precedentes possam ser implementados por uma ampla variedade de sistemas físicos e em uma ampla variedade de ambientes de rede e computa- ção, os sistemas de computação descritos abaixo proporcionam arquiteturas de sistema de computação exemplar do servidor e sistemas do cliente descritos acima, para finalidades didáticas, ao invés de limitadoras.
A figura 2 ilustra uma arquitetura do sistema de computação exemplar, que pode ser usada para implementar um servidor 22a, 22b. Em uma modalidade, o sistema de hardware 1000 compreende um processador 1002, uma memória de cache 1004 e um ou maismódulos e acionadores executáveis, armazenados em um meio legível por computador tangível, direcionado para as funções descritas aqui. Adicionalmente, o sistema de hardware 1000 inclui um barramento de entrada/saída (1/O) de alto desempenho 1006 e um barramen- to /O padrão 1008. Uma ponte hospedeira 1010 acopla o processador 1002 no barramento 1/O de alto desempenho 1006, enquanto que a ponte do barramento 1/O 1012 acopla os dois barramentos 1006 e 1008 entre si. A memória do sistema 1014 e uma ou mais interfaces de comunicação/rede 1016 acoplam no barramento 1006. O sistema de hardware 1000 pode ainda incluir memória de vídeo (não mostrada) e um dispositivo de monitor acoplado na memória de vídeo. O armazenamento em massa 1018 e as portas 1/O 1020 acoplam no bar- ramento 1008. O sistema de hardware 1000 pode incluir opcionalmente um teclado e dispo- sitivo ponteiro e um dispositivo de monitor (não mostrado) acoplado no barramento 1008. Coletivamente, esses elementos são planejados para representar uma ampla categoria de sistemas de hardware de computador, incluindo, mas não limitado a sistemas de computa- dor de uso geral com base nos processadores compatíveis x86 fabricados por Intel Corpora- tion de Santa Clara, Califórnia e os processadores compatíveis x86 fabricados por Advanced Micro Devices (AMD), Inc., de Sunnyvale, Califórnia, bem como qualquer outro processador adequado.
Os elementos do sistema de hardware 1000 são descritos em mais detalhes abai- xo. Em particular, a interface de rede 1016 propicia a comunicação entre o sistema de hardware 1000 e qualquer uma de uma ampla faixa de redes, tais como uma rede da Ether- net(porexemplo, IEEE 802.3), um barramento, etc.. O armazenamento de massa 1018 pro- porciona o armazenamento permanente para os dados e instruções de programação para executar as funções acima descritas implementadas nos servidores 22a, 22b, enquanto que a memória do sistema 1014 (por exemplo, DRAM) proporciona o armazenamento temporá- rio para os dados e instruções de programação quando executados pelo processador 1002. As portas 1/O 620 são uma ou mais portas de comunicação em série e/ou paralelas que pro- porcionam a comunicação entre dispositivos periféricos adicionais, que podem ser acopla- dosnosistema de hardware 1000. O sistema de hardware 1000 pode incluir uma variedade de arquiteturas do sistema e vários componentes do sistema de hardware 1000 podem ser reorganizados.
Por exem- plo, o cache 1004 pode estar na pastilha com o processador 1002. Alternativamente, o ca- che 1004 e o processador 1002 podem ser acondicionados juntos como um “módulo de pro- cessador”, com o processador 1002 sendo chamado como o “núcleo do processador”. Além do mais, certas modalidades da presente invenção podem não requerer nem incluir todos os componentes acima.
Por exemplo, os dispositivos periféricos mostrados acoplados no bar- ramento 1/O padrão 1008 podem acoplar no barramento 1/O de alto desempenho 1006. Além disso, em algumas modalidades, somente um único barramento pode existir, com os com- ponentes do sistema de hardware 1000 sendo acoplados no barramento único.
Além do mais, o sistema de hardware 1000 pode incluir componentes adicionais, tais como proces- sadores adicionais, dispositivos de armazenamento ou memórias.
Em uma implementação, as operações das modalidades descritas aqui são imple- mentadas como uma série de módulos executáveis executados pelo sistema de hardware 1000, individual ou coletivamente em um ambiente de computação distribuído.
Em uma mo- dalidade particular, um conjunto de módulos de software e/ou acionadores implementam uma pilha de protocolo de comunicações de rede, navegação e outras funções de computa- ção, processos de otimização e assim por diante.
Os módulos funcionais precedentes po- dem ser realizados por hardware, módulos executáveis armazenados em um meio legível —porcomputador ou uma combinação de ambos.
Por exemplo, os módulos funcionais podem compreender uma pluralidade ou série de instruções a ser executada por um processador em um sistema de hardware, tal como o processador 1002. Inicialmente, a série de instru- ções pode ser armazenada em um dispositivo de armazenamento, tal como armazenamento em massa 1018. Entretanto, a série de instruções pode ser armazenada de modo tangível em qualquermeio de armazenamento adequado, tais como um disquete, CD-ROM, ROM, EEPROM, etc.. Além do mais, a série de instruções não precisa ser armazenada localmente e poderia ser recebida de um dispositivo de armazenamento remoto, tal como o servidor em uma rede, via a interface de rede/comunicações 1016. As instruções são copiadas do dispo- sitivo de armazenamento, tal como armazenamento em massa 1018, na memória 1014 e — depoisacessadas e executadas pelo processador 1002. Um sistema operacional gerencia e controla a operação do sistema de hardware 1000, incluindo a entrada e a saída dos dados para e das aplicações de software (não mos-
tradas). O sistema operacional proporciona uma interface entre as aplicações de software sendo executadas no sistema e os componentes de hardware do sistema. Qualquer sistema operacional adequado pode ser usado, tais como o sistema operacional LINUX, o sistema operacional Apple Macintosh, disponível de Apple Computer Inc. de Cupertino, Califórnia, os sistemas operacionais UNIX, os sistemas operacionais Microsoft& WindowsG, os sistemas operacionais BSD e assim por diante. Naturalmente, outras implementações são possíveis. Por exemplo, as funções de geração de apelido descritas aqui podem ser implementadas em firmware ou em um circuito integrado específico da aplicação. Além do mais, os elementos e operações acima descritos podem ser compreendi- dos de instruções que são armazenadas em meios de armazenamento. As instruções po- dem ser recuperadas e executadas por um sistema de processamento. Alguns exemplos de instruções são software, código de programa e firmware. Alguns exemplos de meios de ar- mazenamento são dispositivos de memória, fita, discos, circuitos integrados e servidores. As instruções são operacionais quando executadas pelo sistema de processamento para dire- cionaro sistema de processamento a operar de acordo com a invenção. O termo “sistema de processamento” se refere a um dispositivo de processamento único ou um grupo de dis- positivos de processamento interoperacionais. Alguns exemplos de dispositivos de proces- samento são circuitos integrados e conjunto de circuitos lógico. Aqueles versados na técnica são familiarizados com instruções, computadores e meios de armazenamento.
A presente revelação abrange todas as mudanças, substituições, variações, altera- ções e modificações nas modalidades exemplares aqui que uma pessoa tendo conhecimen- to na técnica compreenderia. Similarmente, onde apropriado, as reivindicações anexas abrangem todas as mudanças, substituições, variações, alterações e modificações nas mo- dalidades exemplares aqui que uma pessoa tendo conhecimento na técnica compreenderia.
Por meio de exemplo, embora modalidades da presente invenção tenham sido descritas como operando em conjunto com um sítio de rede de rede social, a presente invenção pode ser usada em conjunto com qualquer facilidade de comunicações que suporte aplicações de rede e modele os dados como um gráfico de associações. Além do mais, em algumas mo- dalidades, o termo “serviço de rede” e “sítios de rede" pode ser usado de modo permutável e adicionalmente pode se referir a uma API personalizada ou generalizada em um dispositivo, tal como um dispositivo móvel (por exemplo, telefone celular, smartphone, GPS pessoal, assistente digital pessoal, dispositivo de jogos pessoais, etc.) que faz as chamadas da API diretamente para um servidor.

Claims (10)

REIVINDICAÇÕES
1. Método, CARACTERIZADO por compreender: receber, em um primeiro nó de cache, uma solicitação para adicionar uma associa- ção entre um primeiro nó e um segundo nó, em que o primeiro nó é identificado por um pri- meiro identificador em uma primeira faixa de identificadores alocados ao primeiro nó de ca- che de um grupo (cluster) e em que o segundo nó é identificado por um segundo identifica- dor em uma segunda faixa de identificadores alocados a um segundo nó de cache do grupo, armazenar dados indicando a associação entre o primeiro e o segundo nós em uma memória do primeiro nó de cache; e transmitir uma mensagem para o segundo nó de cache, em que a mensagem é operativa para fazer com que o segundo nó de cache adicione a associação entre o primeiro e o segundo nós em uma memória do segundo nó de cache.
2. Método de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que ainda compreende identificar um identificador de fragmento correspondendo com o segundo identificador e em que o segundo nó de cache é associado com o identificador de fragmento identificado.
3. Método de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a mensagem sinaliza para o segundo nó de cache que a mensagem contém uma atualização necessária para estabelecer uma associação bidirecional na camada de cache entre o pri- meironóeo segundo nó.
4. Método de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que ainda compreende enviar a mensagem para um nó de cache líder correspondendo com um identificador de fragmento associado com o primeiro identificador.
5. Método de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o primeiro eo segundo nós ficam contidos em uma estrutura de gráfico compreendendo um a uma pluralidade de tipos de nó.
6. Método de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a associação é um tipo de associação identificada de uma pluralidade de tipos de associação.
7. Método de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a solicitação identifica um tipo de associação e em que o método ainda compreende: manter em uma memória, para cada conjunto de associação correspondendo com o primeiro nó de uma pluralidade de nós e um tipo de associação de uma pluralidade de tipos de associação, um primeiro Índice e um segundo índice; em que o primeiro índice compreende uma formação ordenada de entradas, cada entrada incluindo um identificador denódeum segundo nó que é associado com o primeiro nó e um atributo de classificação; em que o segundo índice compreende uma tabela de dispersão compreendendo entradas correspondendo com os identificadores do nó dos respectivos segundos nós que estão as- sociados com o primeiro nó; e acessar a memória contra o primeiro tipo de associação e o primeiro identificador do nó para adicionar o segundo identificador do nó a um primeiro índice e um segundo índi- ce correspondendo com o primeiro tipo de associação e o primeiro identificador do nó.
8. Nó de cache operativo em um grupo de nós de cache, CARACTERIZADO por compreender: um ou mais processadores, uma memória, um meio de armazenamento não-transitório armazenando instruções legíveis por computador, as instruções, quando executadas, operam para fazer com que o um ou mais processadores: recebam uma solicitação para adicionar uma associação entre um primeiro nó e um segundo nó, em que o primeiro nó é identificado por um primeiro identificador em uma pri- meirafaixa de identificadores alocados no nó de cache de um grupo e em que o segundo nó é identificado por um segundo identificador em uma segunda faixa de identificadores aloca- dos em um segundo nó de cache do grupo, armazenem dados indicando a associação entre o primeiro e o segundo nós em uma memória do nó de cache; e transmitam uma mensagem para o segundo nó de cache, em que a mensagem é operativa para fazer com que o segundo nó de cache adicione a associação entre o primeiro e o segundo nós em uma memória do segundo nó de cache.
9. Nó de cache de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que as instruções são ainda operativas para fazer com que o um ou mais processadores identifiquem um identificador de fragmento correspondendo com o segundo identificador e em que o segundo nó de cache é associado com o identificador de fragmento identificado.
10. Meio de armazenamento não-transitório, CARACTERIZADO por compreender armazenar instruções legíveis por computador, as instruções, quando executadas, operati- vas para fazer com que um ou mais processadores: recebam, em um primeiro nó de cache, uma solicitação para adicionar uma associ- ação entre um primeiro nó e um segundo nó, em que o primeiro nó é identificado por um primeiro identificador em uma primeira faixa de identificadores alocados no primeiro nó de cache de um grupo e em que o segundo nó é identificado por um segundo identificador em uma segunda faixa de identificadores alocados em um segundo nó de cache do grupo; armazenem dados indicando a associação entre o primeiro e o segundo nós em uma memória do primeiro nó de cache; e transmitam uma mensagem para o segundo nó de cache, em que a mensagem é operativa para fazer com que o segundo nó de cache adicione a associação entre o primeiro e o segundo nós em uma memória do segundo nó de cache.
BR112013016900-1A 2010-12-30 2011-11-30 cache distribuída para dados gráficos BR112013016900A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201061428799P 2010-12-30 2010-12-30
US61/428,799 2010-12-30
US13/227,381 US8612688B2 (en) 2010-12-30 2011-09-07 Distributed cache for graph data
US13/227,381 2011-09-07
PCT/US2011/062609 WO2012091846A2 (en) 2010-12-30 2011-11-30 Distributed cache for graph data

Publications (1)

Publication Number Publication Date
BR112013016900A2 true BR112013016900A2 (pt) 2020-10-27

Family

ID=46381711

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112013016900-1A BR112013016900A2 (pt) 2010-12-30 2011-11-30 cache distribuída para dados gráficos

Country Status (10)

Country Link
US (9) US8438364B2 (pt)
EP (2) EP3296896B1 (pt)
JP (5) JP5745649B2 (pt)
KR (4) KR101753766B1 (pt)
CN (2) CN103380421B (pt)
AU (3) AU2011353036B2 (pt)
BR (1) BR112013016900A2 (pt)
CA (5) CA2911784C (pt)
MX (2) MX337805B (pt)
WO (1) WO2012091846A2 (pt)

Families Citing this family (188)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631411B1 (en) 2009-07-21 2014-01-14 The Research Foundation For The State University Of New York Energy aware processing load distribution system and method
US8516063B2 (en) 2010-02-12 2013-08-20 Mary Anne Fletcher Mobile device streaming media application
US9633121B2 (en) 2010-04-19 2017-04-25 Facebook, Inc. Personalizing default search queries on online social networks
US9177041B2 (en) * 2010-09-03 2015-11-03 Robert Lewis Jackson, JR. Automated stratification of graph display
US9280574B2 (en) 2010-09-03 2016-03-08 Robert Lewis Jackson, JR. Relative classification of data objects
US8438364B2 (en) 2010-12-30 2013-05-07 Facebook Inc. Distributed cache for graph data
US8527497B2 (en) * 2010-12-30 2013-09-03 Facebook, Inc. Composite term index for graph data
US8713056B1 (en) 2011-03-30 2014-04-29 Open Text S.A. System, method and computer program product for efficient caching of hierarchical items
US9495477B1 (en) * 2011-04-20 2016-11-15 Google Inc. Data storage in a graph processing system
US8725681B1 (en) * 2011-04-23 2014-05-13 Infoblox Inc. Synthesized identifiers for system information database
US8977611B2 (en) * 2011-10-18 2015-03-10 Facebook, Inc. Ranking objects by social relevance
US8825666B1 (en) * 2012-01-17 2014-09-02 Netapp, Inc. Space-efficient, durable key-value map
US9479488B2 (en) * 2012-01-26 2016-10-25 Facebook, Inc. Network access based on social-networking information
US8965921B2 (en) * 2012-06-06 2015-02-24 Rackspace Us, Inc. Data management and indexing across a distributed database
US8935255B2 (en) * 2012-07-27 2015-01-13 Facebook, Inc. Social static ranking for search
US20140074927A1 (en) * 2012-09-13 2014-03-13 International Business Machines Corporation Caching content based on social network relations
US9626692B2 (en) 2012-10-08 2017-04-18 Facebook, Inc. On-line advertising with social pay
US9576020B1 (en) * 2012-10-18 2017-02-21 Proofpoint, Inc. Methods, systems, and computer program products for storing graph-oriented data on a column-oriented database
US9398104B2 (en) 2012-12-20 2016-07-19 Facebook, Inc. Ranking test framework for search results on an online social network
US9928287B2 (en) 2013-02-24 2018-03-27 Technion Research & Development Foundation Limited Processing query to graph database
US9223826B2 (en) 2013-02-25 2015-12-29 Facebook, Inc. Pushing suggested search queries to mobile devices
US9424330B2 (en) * 2013-03-15 2016-08-23 Tactile, Inc. Database sharding by shard levels
US9910887B2 (en) 2013-04-25 2018-03-06 Facebook, Inc. Variable search query vertical access
US9223898B2 (en) 2013-05-08 2015-12-29 Facebook, Inc. Filtering suggested structured queries on online social networks
US9330183B2 (en) 2013-05-08 2016-05-03 Facebook, Inc. Approximate privacy indexing for search queries on online social networks
US10334069B2 (en) * 2013-05-10 2019-06-25 Dropbox, Inc. Managing a local cache for an online content-management system
US9330055B2 (en) 2013-06-04 2016-05-03 International Business Machines Corporation Modular architecture for extreme-scale distributed processing applications
US9305322B2 (en) 2013-07-23 2016-04-05 Facebook, Inc. Native application testing
US9298633B1 (en) * 2013-09-18 2016-03-29 Emc Corporation Adaptive prefecth for predicted write requests
US9832278B2 (en) 2013-09-30 2017-11-28 International Business Machines Corporation Utility-based invalidation propagation scheme selection for distributed cache consistency
US9450992B2 (en) * 2013-10-23 2016-09-20 Facebook, Inc. Node properties in a social-networking system
US9497283B2 (en) * 2013-12-13 2016-11-15 Oracle International Corporation System and method for providing data interoperability in a distributed data grid
US9652554B2 (en) * 2013-12-26 2017-05-16 Facebook, Inc. Systems and methods for adding users to a networked computer system
US8954441B1 (en) * 2014-01-02 2015-02-10 Linkedin Corporation Graph-based system and method of information storage and retrieval
US9336300B2 (en) 2014-01-17 2016-05-10 Facebook, Inc. Client-side search templates for online social networks
US9460137B2 (en) * 2014-04-18 2016-10-04 International Business Machines Corporation Handling an increase in transactional data without requiring relocation of preexisting data between shards
US20150302063A1 (en) * 2014-04-21 2015-10-22 Linkedln Corporation System and method for searching a distributed node-sharded graph
US10025710B2 (en) 2014-04-30 2018-07-17 Walmart Apollo, Llc Pattern for integrating primary and secondary data stores in a sharded data domain
US9426143B2 (en) 2014-07-07 2016-08-23 Facebook, Inc. Providing social network content based on the login state of a user
CN105468624A (zh) * 2014-09-04 2016-04-06 上海福网信息科技有限公司 网站交互缓存方法及系统
US9860316B2 (en) * 2014-09-19 2018-01-02 Facebook, Inc. Routing network traffic based on social information
KR20160046235A (ko) * 2014-10-20 2016-04-28 한국전자통신연구원 컨텐츠 캐시의 그룹 형성 방법 및 컨텐츠 제공 방법
US9773272B2 (en) * 2014-11-10 2017-09-26 0934781 B.C. Ltd. Recommendation engine
CN104516967A (zh) * 2014-12-25 2015-04-15 国家电网公司 一种电力系统海量数据管理系统及其使用方法
US9483474B2 (en) 2015-02-05 2016-11-01 Microsoft Technology Licensing, Llc Document retrieval/identification using topics
US10382534B1 (en) 2015-04-04 2019-08-13 Cisco Technology, Inc. Selective load balancing of network traffic
US10095683B2 (en) 2015-04-10 2018-10-09 Facebook, Inc. Contextual speller models on online social networks
US10049099B2 (en) 2015-04-10 2018-08-14 Facebook, Inc. Spell correction with hidden markov models on online social networks
US20160299958A1 (en) * 2015-04-13 2016-10-13 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for visual logging in networking systems
US10628636B2 (en) 2015-04-24 2020-04-21 Facebook, Inc. Live-conversation modules on online social networks
US10037388B2 (en) * 2015-04-27 2018-07-31 Microsoft Technology Licensing, Llc Fast querying of social network data
US10298535B2 (en) 2015-05-19 2019-05-21 Facebook, Inc. Civic issues platforms on online social networks
US9619391B2 (en) * 2015-05-28 2017-04-11 International Business Machines Corporation In-memory caching with on-demand migration
WO2016190868A1 (en) * 2015-05-28 2016-12-01 Hewlett Packard Enterprise Development Lp Processing network data using a graph data structure
CN106325756B (zh) * 2015-06-15 2020-04-24 阿里巴巴集团控股有限公司 一种数据存储、数据计算方法和设备
US10397167B2 (en) 2015-06-19 2019-08-27 Facebook, Inc. Live social modules on online social networks
US10509832B2 (en) 2015-07-13 2019-12-17 Facebook, Inc. Generating snippet modules on online social networks
US10091087B2 (en) * 2015-07-20 2018-10-02 Cisco Technology, Inc. Methods and systems for load balancing based on data shard leader
US10268664B2 (en) 2015-08-25 2019-04-23 Facebook, Inc. Embedding links in user-created content on online social networks
US10810179B2 (en) * 2015-09-25 2020-10-20 Microsoft Technology Licensing, Llc Distributed graph database
US10025867B2 (en) * 2015-09-29 2018-07-17 Facebook, Inc. Cache efficiency by social graph data ordering
US11005682B2 (en) 2015-10-06 2021-05-11 Cisco Technology, Inc. Policy-driven switch overlay bypass in a hybrid cloud network environment
US10810217B2 (en) 2015-10-07 2020-10-20 Facebook, Inc. Optionalization and fuzzy search on online social networks
JP6902579B2 (ja) * 2015-10-22 2021-07-14 オラクル・インターナショナル・コーポレイション トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法
JP6902580B2 (ja) * 2015-10-22 2021-07-14 オラクル・インターナショナル・コーポレイション トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法
US9602965B1 (en) 2015-11-06 2017-03-21 Facebook, Inc. Location-based place determination using online social networks
US10270868B2 (en) 2015-11-06 2019-04-23 Facebook, Inc. Ranking of place-entities on online social networks
US10795936B2 (en) 2015-11-06 2020-10-06 Facebook, Inc. Suppressing entity suggestions on online social networks
US10534814B2 (en) 2015-11-11 2020-01-14 Facebook, Inc. Generating snippets on online social networks
US10523657B2 (en) 2015-11-16 2019-12-31 Cisco Technology, Inc. Endpoint privacy preservation with cloud conferencing
US10387511B2 (en) 2015-11-25 2019-08-20 Facebook, Inc. Text-to-media indexes on online social networks
US10740368B2 (en) 2015-12-29 2020-08-11 Facebook, Inc. Query-composition platforms on online social networks
US10229058B2 (en) * 2015-12-30 2019-03-12 Roku, Inc. Providing rolling updates of distributed systems with a shared cache
US10282434B2 (en) 2016-01-11 2019-05-07 Facebook, Inc. Suppression and deduplication of place-entities on online social networks
US10162899B2 (en) 2016-01-15 2018-12-25 Facebook, Inc. Typeahead intent icons and snippets on online social networks
US10262039B1 (en) 2016-01-15 2019-04-16 Facebook, Inc. Proximity-based searching on online social networks
US10740375B2 (en) 2016-01-20 2020-08-11 Facebook, Inc. Generating answers to questions using information posted by users on online social networks
US10270882B2 (en) 2016-02-03 2019-04-23 Facebook, Inc. Mentions-modules on online social networks
US10242074B2 (en) 2016-02-03 2019-03-26 Facebook, Inc. Search-results interfaces for content-item-specific modules on online social networks
US10216850B2 (en) 2016-02-03 2019-02-26 Facebook, Inc. Sentiment-modules on online social networks
US10157224B2 (en) 2016-02-03 2018-12-18 Facebook, Inc. Quotations-modules on online social networks
US20170293593A1 (en) * 2016-04-12 2017-10-12 International Business Machines Corporation Managing node pagination for a graph data set
US10452671B2 (en) 2016-04-26 2019-10-22 Facebook, Inc. Recommendations from comments on online social networks
KR101825294B1 (ko) * 2016-05-10 2018-02-02 한양대학교 에리카산학협력단 인간관계와 시간성이 높은 서비스를 위한 스토리지 서버의 데이터 구분 방법 및 장치
US10579680B2 (en) * 2016-05-13 2020-03-03 Tibco Software Inc. Using a B-tree to store graph information in a database
US10659283B2 (en) 2016-07-08 2020-05-19 Cisco Technology, Inc. Reducing ARP/ND flooding in cloud environment
US10635661B2 (en) 2016-07-11 2020-04-28 Facebook, Inc. Keyboard-based corrections for search queries on online social networks
US10263898B2 (en) 2016-07-20 2019-04-16 Cisco Technology, Inc. System and method for implementing universal cloud classification (UCC) as a service (UCCaaS)
WO2018020495A1 (en) * 2016-07-27 2018-02-01 Epistema Ltd. Computerized environment for human expert analysts
US10540360B2 (en) 2016-07-29 2020-01-21 Hewlett Packard Enterprise Development Lp Identifying relationship instances between entities
US10223464B2 (en) 2016-08-04 2019-03-05 Facebook, Inc. Suggesting filters for search on online social networks
US10282483B2 (en) 2016-08-04 2019-05-07 Facebook, Inc. Client-side caching of search keywords for online social networks
US10552450B2 (en) 2016-08-05 2020-02-04 International Business Machines Corporation Distributed graph databases that facilitate streaming data insertion and low latency graph queries
US9787705B1 (en) * 2016-08-19 2017-10-10 Quid, Inc. Extracting insightful nodes from graphs
US10726022B2 (en) 2016-08-26 2020-07-28 Facebook, Inc. Classifying search queries on online social networks
US10534815B2 (en) 2016-08-30 2020-01-14 Facebook, Inc. Customized keyword query suggestions on online social networks
US10102255B2 (en) 2016-09-08 2018-10-16 Facebook, Inc. Categorizing objects for queries on online social networks
US10645142B2 (en) 2016-09-20 2020-05-05 Facebook, Inc. Video keyframes display on online social networks
US10026021B2 (en) 2016-09-27 2018-07-17 Facebook, Inc. Training image-recognition systems using a joint embedding model on online social networks
US10083379B2 (en) 2016-09-27 2018-09-25 Facebook, Inc. Training image-recognition systems based on search queries on online social networks
US10579688B2 (en) 2016-10-05 2020-03-03 Facebook, Inc. Search ranking and recommendations for online social networks based on reconstructed embeddings
KR101828328B1 (ko) * 2016-10-26 2018-03-22 주식회사 리얼타임테크 내장형 데이터베이스 시스템의 다중 데이터베이스 운용 장치 및 그 방법
US10545945B2 (en) * 2016-10-28 2020-01-28 Microsoft Technology Licensing, Llc Change monitoring spanning graph queries
US10417134B2 (en) 2016-11-10 2019-09-17 Oracle International Corporation Cache memory architecture and policies for accelerating graph algorithms
US10311117B2 (en) 2016-11-18 2019-06-04 Facebook, Inc. Entity linking to query terms on online social networks
US10650009B2 (en) 2016-11-22 2020-05-12 Facebook, Inc. Generating news headlines on online social networks
US10162886B2 (en) 2016-11-30 2018-12-25 Facebook, Inc. Embedding-based parsing of search queries on online social networks
US10313456B2 (en) 2016-11-30 2019-06-04 Facebook, Inc. Multi-stage filtering for recommended user connections on online social networks
US10185763B2 (en) 2016-11-30 2019-01-22 Facebook, Inc. Syntactic models for parsing search queries on online social networks
US10235469B2 (en) 2016-11-30 2019-03-19 Facebook, Inc. Searching for posts by related entities on online social networks
US11044162B2 (en) 2016-12-06 2021-06-22 Cisco Technology, Inc. Orchestration of cloud and fog interactions
US10362110B1 (en) * 2016-12-08 2019-07-23 Amazon Technologies, Inc. Deployment of client data compute kernels in cloud
US10326817B2 (en) 2016-12-20 2019-06-18 Cisco Technology, Inc. System and method for quality-aware recording in large scale collaborate clouds
US10607148B1 (en) 2016-12-21 2020-03-31 Facebook, Inc. User identification with voiceprints on online social networks
US11223699B1 (en) 2016-12-21 2022-01-11 Facebook, Inc. Multiple user recognition with voiceprints on online social networks
US10535106B2 (en) 2016-12-28 2020-01-14 Facebook, Inc. Selecting user posts related to trending topics on online social networks
US10334029B2 (en) 2017-01-10 2019-06-25 Cisco Technology, Inc. Forming neighborhood groups from disperse cloud providers
US10838819B2 (en) 2017-01-18 2020-11-17 Microsoft Technology Licensing, Llc Including personal relationship metadata within duplicated resources shared across partitioned storage
US10536465B2 (en) 2017-01-18 2020-01-14 Microsoft Technology Licensing, Llc Security for accessing stored resources
US10542088B2 (en) 2017-01-18 2020-01-21 Microsoft Technology Licensing, Llc Modifying data resources within party-partitioned storage areas
US10552191B2 (en) 2017-01-26 2020-02-04 Cisco Technology, Inc. Distributed hybrid cloud orchestration model
US10489472B2 (en) 2017-02-13 2019-11-26 Facebook, Inc. Context-based search suggestions on online social networks
US10445321B2 (en) * 2017-02-21 2019-10-15 Microsoft Technology Licensing, Llc Multi-tenant distribution of graph database caches
US10242223B2 (en) 2017-02-27 2019-03-26 Microsoft Technology Licensing, Llc Access controlled graph query spanning
US10614141B2 (en) 2017-03-15 2020-04-07 Facebook, Inc. Vital author snippets on online social networks
US10769222B2 (en) 2017-03-20 2020-09-08 Facebook, Inc. Search result ranking based on post classifiers on online social networks
US10445319B2 (en) * 2017-05-10 2019-10-15 Oracle International Corporation Defining subgraphs declaratively with vertex and edge filters
US11379861B2 (en) 2017-05-16 2022-07-05 Meta Platforms, Inc. Classifying post types on online social networks
US10248645B2 (en) 2017-05-30 2019-04-02 Facebook, Inc. Measuring phrase association on online social networks
CN108984433B (zh) * 2017-06-05 2023-11-03 华为技术有限公司 缓存数据控制方法及设备
US10268646B2 (en) 2017-06-06 2019-04-23 Facebook, Inc. Tensor-based deep relevance model for search on online social networks
US10892940B2 (en) 2017-07-21 2021-01-12 Cisco Technology, Inc. Scalable statistics and analytics mechanisms in cloud networking
US10489468B2 (en) 2017-08-22 2019-11-26 Facebook, Inc. Similarity search using progressive inner products and bounds
US10887235B2 (en) * 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US10642582B2 (en) 2017-08-24 2020-05-05 Google Llc System of type inference for tuple graph programs method of executing a tuple graph program across a network
US10776437B2 (en) 2017-09-12 2020-09-15 Facebook, Inc. Time-window counters for search results on online social networks
CN107622124B (zh) * 2017-09-28 2021-02-02 深圳市华傲数据技术有限公司 基于块数据的数据查询方法及系统
US10678786B2 (en) 2017-10-09 2020-06-09 Facebook, Inc. Translating search queries on online social networks
US10810214B2 (en) 2017-11-22 2020-10-20 Facebook, Inc. Determining related query terms through query-post associations on online social networks
US20220232024A1 (en) 2017-11-27 2022-07-21 Lacework, Inc. Detecting deviations from typical user behavior
US11979422B1 (en) 2017-11-27 2024-05-07 Lacework, Inc. Elastic privileges in a secure access service edge
US11792284B1 (en) 2017-11-27 2023-10-17 Lacework, Inc. Using data transformations for monitoring a cloud compute environment
US10498845B1 (en) 2017-11-27 2019-12-03 Lacework Inc. Using agents in a data center to monitor network connections
US10963514B2 (en) 2017-11-30 2021-03-30 Facebook, Inc. Using related mentions to enhance link probability on online social networks
US10129705B1 (en) 2017-12-11 2018-11-13 Facebook, Inc. Location prediction using wireless signals on online social networks
US11604968B2 (en) 2017-12-11 2023-03-14 Meta Platforms, Inc. Prediction of next place visits on online social networks
KR102036419B1 (ko) 2017-12-27 2019-10-24 충북대학교 산학협력단 그래프 처리 성능 향상을 위한 복수 계층 캐싱 방법 및 복수 계층 캐싱 시스템
US11055286B2 (en) * 2018-03-23 2021-07-06 Amazon Technologies, Inc. Incremental updates for nearest neighbor search
US11924297B2 (en) 2018-05-24 2024-03-05 People.ai, Inc. Systems and methods for generating a filtered data set
US10565229B2 (en) 2018-05-24 2020-02-18 People.ai, Inc. Systems and methods for matching electronic activities directly to record objects of systems of record
US11463441B2 (en) 2018-05-24 2022-10-04 People.ai, Inc. Systems and methods for managing the generation or deletion of record objects based on electronic activities and communication policies
US11044090B2 (en) * 2018-07-24 2021-06-22 ZenDesk, Inc. Facilitating request authentication at a network edge device
US10732861B2 (en) * 2018-07-26 2020-08-04 Qualtrics, Llc Generating and providing low-latency cached content
CN109344269A (zh) * 2018-08-14 2019-02-15 北京奇虎科技有限公司 图形数据库写入的方法、电子设备及计算机可读存储介质
WO2020037625A1 (zh) * 2018-08-23 2020-02-27 袁振南 分布式存储系统及其数据读写方法、存储终端及存储介质
CN109388657B (zh) * 2018-09-10 2023-08-08 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质
CN110896404B (zh) 2018-09-12 2021-09-14 华为技术有限公司 数据处理的方法、装置和计算节点
CN109274762B (zh) * 2018-10-22 2021-10-29 杭州领智云画科技有限公司 Cdn刷新方法和系统
US20200192880A1 (en) 2018-12-14 2020-06-18 Samsung Electronics Co., Ltd. Optimal dynamic shard creation in storage for graph workloads
CN109933312B (zh) * 2019-03-25 2021-06-01 南京邮电大学 一种有效降低容器化关系型数据库i/o消耗的方法
CN110134704B (zh) * 2019-05-31 2021-11-02 厦门大学嘉庚学院 一种基于分布式缓存的大数据集群事务实现方法
KR102325047B1 (ko) 2019-06-10 2021-11-11 포항공과대학교 산학협력단 그래프 데이터 처리 방법 및 그래프 데이터 처리 장치
CN110825743B (zh) * 2019-10-31 2022-03-01 北京百度网讯科技有限公司 一种图数据库的数据导入方法、装置、电子设备和介质
CN111010672A (zh) * 2019-11-18 2020-04-14 杭州电子科技大学 一种基于缓存节点过滤的无线传感器网络数据传输方法
US11256759B1 (en) 2019-12-23 2022-02-22 Lacework Inc. Hierarchical graph analysis
US11201955B1 (en) 2019-12-23 2021-12-14 Lacework Inc. Agent networking in a containerized environment
US11188571B1 (en) 2019-12-23 2021-11-30 Lacework Inc. Pod communication graph
US10873592B1 (en) 2019-12-23 2020-12-22 Lacework Inc. Kubernetes launch graph
CN111209106B (zh) * 2019-12-25 2023-10-27 北京航空航天大学杭州创新研究院 一种基于缓存机制的流式图划分方法和系统
CN111475821B (zh) * 2020-01-17 2023-04-18 吉林大学 基于文件存储证明的区块链共识机制方法
CN113590543A (zh) * 2020-04-30 2021-11-02 伊姆西Ip控股有限责任公司 信息处理的方法、设备和计算机程序产品
CN111680036B (zh) * 2020-05-12 2022-09-27 国网宁夏电力有限公司信息通信公司 一种基于图存储的配置管理数据库
CN111737298B (zh) * 2020-06-19 2024-04-26 中国工商银行股份有限公司 基于分布式存储的缓存数据管控方法及装置
JP7458610B2 (ja) * 2020-10-27 2024-04-01 株式会社日立製作所 データベースシステム、及びクエリ実行方法
CN112182982B (zh) * 2020-10-27 2024-03-01 北京百度网讯科技有限公司 多方联合建模方法、装置、设备及存储介质
CN112364246B (zh) * 2020-11-19 2024-02-06 中国平安人寿保险股份有限公司 数据搜索方法、装置、计算机设备及存储介质
US20220238193A1 (en) * 2021-01-26 2022-07-28 Prognos Health Inc. Methods and systems for managing patient-centric information
CN112883307B (zh) * 2021-02-03 2023-10-20 深圳市大成天下信息技术有限公司 一种缓存更新方法、装置和社交网络系统
US11914617B2 (en) * 2021-04-19 2024-02-27 Wealthfront Corporation Executing updates of records in a distributed database system
CN113449152B (zh) * 2021-06-24 2023-01-10 西安交通大学 图数据预取器及预取方法
US11741093B1 (en) 2021-07-21 2023-08-29 T-Mobile Usa, Inc. Intermediate communication layer to translate a request between a user of a database and the database
US11822551B2 (en) 2021-08-31 2023-11-21 International Business Machines Corporation Pre-optimized writes to a database based on intelligence gathered from read cache
CN113961753B (zh) * 2021-09-08 2023-04-21 南湖实验室 一种基于集合的图数据存储模型及其图数据库
CN114040346B (zh) * 2021-09-22 2024-02-06 福建省新天地信勘测有限公司 一种基于5g网络的档案数字化信息管理系统与管理方法
US11645014B1 (en) * 2021-10-26 2023-05-09 Hewlett Packard Enterprise Development Lp Disaggregated storage with multiple cluster levels
US11874835B2 (en) * 2021-11-08 2024-01-16 Sap Se Scheduling of query pipeline execution
US20230179655A1 (en) * 2021-12-06 2023-06-08 Ebay Inc. Techniques to achieve cache coherency across distributed storage clusters
US20240152518A1 (en) * 2022-11-07 2024-05-09 Microsoft Technology Licensing, Llc Copying graph data between tenancies in different regions

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448727A (en) 1991-04-30 1995-09-05 Hewlett-Packard Company Domain based partitioning and reclustering of relations in object-oriented relational database management systems
JP2000020385A (ja) * 1998-07-07 2000-01-21 Hitachi Ltd データ検索システムにおけるデータキャッシュ方法
US6457020B1 (en) * 2000-03-20 2002-09-24 International Business Machines Corporation Query optimization using a multi-layered object cache
US6925490B1 (en) * 2000-05-31 2005-08-02 International Business Machines Corporation Method, system and program products for controlling system traffic of a clustered computing environment
US6829654B1 (en) * 2000-06-23 2004-12-07 Cloudshield Technologies, Inc. Apparatus and method for virtual edge placement of web sites
US6512063B2 (en) 2000-10-04 2003-01-28 Dupont Dow Elastomers L.L.C. Process for producing fluoroelastomers
US6675264B2 (en) 2001-05-07 2004-01-06 International Business Machines Corporation Method and apparatus for improving write performance in a cluster-based file system
JP4306152B2 (ja) * 2001-06-26 2009-07-29 株式会社日立製作所 クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム
US8442689B2 (en) 2002-03-11 2013-05-14 Craig P. Lovell System for flexibly representing and processing assay plates
US7096213B2 (en) * 2002-04-08 2006-08-22 Oracle International Corporation Persistent key-value repository with a pluggable architecture to abstract physical storage
US7099873B2 (en) * 2002-05-29 2006-08-29 International Business Machines Corporation Content transcoding in a content distribution network
EP1510938B1 (en) 2003-08-29 2014-06-18 Sap Ag A method of providing a visualisation graph on a computer and a computer for providing a visualisation graph
US7860894B2 (en) 2004-05-12 2010-12-28 Oracle International Corporation Template driven type and mode conversion
US7596571B2 (en) * 2004-06-30 2009-09-29 Technorati, Inc. Ecosystem method of aggregation and search and related techniques
US8562633B2 (en) * 2004-08-02 2013-10-22 W. L. Gore & Associates, Inc. Tissue repair device with a bioabsorbable support member
US7716140B1 (en) * 2004-12-31 2010-05-11 Google Inc. Methods and systems for controlling access to relationship information in a social network
CN101091177B (zh) * 2004-12-31 2010-05-26 英特尔公司 贝叶斯网络结构学习并行化的方法、设备及系统
EP2317450A1 (en) * 2005-02-24 2011-05-04 Xeround Inc. Method and apparatus for distributed data management in a switching network
US20070094214A1 (en) * 2005-07-15 2007-04-26 Li Eric Q Parallelization of bayesian network structure learning
US7860897B2 (en) * 2005-09-30 2010-12-28 International Business Machines Corporation Optimized method of locating complete aggregation of patient health records in a global domain
US7376796B2 (en) * 2005-11-01 2008-05-20 Network Appliance, Inc. Lightweight coherency control protocol for clustered storage system
US8892509B2 (en) * 2006-03-28 2014-11-18 Oracle America, Inc. Systems and methods for a distributed in-memory database
US20070230468A1 (en) * 2006-03-31 2007-10-04 Matsushita Electric Industrial Co., Ltd. Method to support mobile devices in a peer-to-peer network
US7831772B2 (en) * 2006-12-12 2010-11-09 Sybase, Inc. System and methodology providing multiple heterogeneous buffer caches
US8346864B1 (en) * 2006-12-13 2013-01-01 Qurio Holdings, Inc. Systems and methods for social network based conferencing
US7555412B2 (en) 2007-02-09 2009-06-30 Microsoft Corporation Communication efficient spatial search in a sensor data web portal
US7920512B2 (en) 2007-08-30 2011-04-05 Intermec Ip Corp. Systems, methods, and devices that dynamically establish a sensor network
WO2009050741A2 (en) * 2007-10-19 2009-04-23 Amsoft Systems Private Limited Method and system of ranking transaction channels associated with real world identities, based on their attributes and preferences
EP2056562B1 (en) * 2007-11-02 2016-09-07 Alcatel Lucent Resilient service quality in a managed multimedia delivery network
US8468510B1 (en) * 2008-01-16 2013-06-18 Xilinx, Inc. Optimization of cache architecture generated from a high-level language description
CN104123239B (zh) * 2008-01-31 2017-07-21 甲骨文国际公司 用于事务缓存的系统和方法
US20090248709A1 (en) 2008-03-26 2009-10-01 Oded Fuhrmann Evaluating Associations Among Entities
US8417698B2 (en) * 2008-05-06 2013-04-09 Yellowpages.Com Llc Systems and methods to provide search based on social graphs and affinity groups
CN101673244B (zh) * 2008-09-09 2011-03-23 上海华虹Nec电子有限公司 多核或集群系统的存储器控制方法
JP2010128713A (ja) * 2008-11-26 2010-06-10 Ripplex Inc ネットワークサービスを利用する利用者間の関係を提供するためのサーバ
JP2010198258A (ja) * 2009-02-25 2010-09-09 Nippon Telegr & Teleph Corp <Ntt> キャッシュメンテナンス装置、その方法及びそのプログラム
US8433771B1 (en) * 2009-10-02 2013-04-30 Amazon Technologies, Inc. Distribution network with forward resource propagation
US11122009B2 (en) * 2009-12-01 2021-09-14 Apple Inc. Systems and methods for identifying geographic locations of social media content collected over social networks
US9129017B2 (en) * 2009-12-01 2015-09-08 Apple Inc. System and method for metadata transfer among search entities
US8473582B2 (en) * 2009-12-16 2013-06-25 International Business Machines Corporation Disconnected file operations in a scalable multi-node file system cache for a remote cluster file system
US8495250B2 (en) * 2009-12-16 2013-07-23 International Business Machines Corporation Asynchronous file operations in a scalable multi-node file system cache for a remote cluster file system
US9158788B2 (en) * 2009-12-16 2015-10-13 International Business Machines Corporation Scalable caching of remote file data in a cluster file system
US8458239B2 (en) * 2009-12-16 2013-06-04 International Business Machines Corporation Directory traversal in a scalable multi-node file system cache for a remote cluster file system
US8769155B2 (en) * 2010-03-19 2014-07-01 Brocade Communications Systems, Inc. Techniques for synchronizing application object instances
US8572129B1 (en) * 2010-04-19 2013-10-29 Facebook, Inc. Automatically generating nodes and edges in an integrated social graph
US8244848B1 (en) * 2010-04-19 2012-08-14 Facebook, Inc. Integrated social network environment
US20120110678A1 (en) * 2010-10-27 2012-05-03 Sony Ericsson Mobile Communications Ab Digital Rights Management (DRM) Domain Recommendation and Selection Based on a User's Social Graphs
US8484191B2 (en) 2010-12-16 2013-07-09 Yahoo! Inc. On-line social search
US8438364B2 (en) 2010-12-30 2013-05-07 Facebook Inc. Distributed cache for graph data
US8527497B2 (en) * 2010-12-30 2013-09-03 Facebook, Inc. Composite term index for graph data
US8744912B2 (en) * 2011-04-14 2014-06-03 Koozoo Inc. Method and system for an advanced player in a network of multiple live video sources
US9613339B2 (en) * 2011-06-30 2017-04-04 International Business Machines Corporation Information exchange in the social network environment
US8535163B2 (en) * 2012-01-10 2013-09-17 Zynga Inc. Low-friction synchronous interaction in multiplayer online game
US20130289991A1 (en) * 2012-04-30 2013-10-31 International Business Machines Corporation Application of Voice Tags in a Social Media Context
US9462066B2 (en) * 2012-08-21 2016-10-04 Facebook, Inc. Social action by quick response (QR) code

Also Published As

Publication number Publication date
JP6584575B2 (ja) 2019-10-02
US20140074876A1 (en) 2014-03-13
CA2823187C (en) 2015-11-10
JP2018133100A (ja) 2018-08-23
US20160085881A1 (en) 2016-03-24
KR101640185B1 (ko) 2016-07-18
US8832111B2 (en) 2014-09-09
CN106372136B (zh) 2018-09-11
US20150106359A1 (en) 2015-04-16
AU2017203364A1 (en) 2017-06-08
JP5745649B2 (ja) 2015-07-08
US9514245B2 (en) 2016-12-06
JP2017073162A (ja) 2017-04-13
JP6346255B2 (ja) 2018-06-20
US20120173541A1 (en) 2012-07-05
MX337805B (es) 2016-03-18
KR101592479B1 (ko) 2016-02-05
AU2011353036A1 (en) 2013-07-18
US20120173820A1 (en) 2012-07-05
US9886484B2 (en) 2018-02-06
CA2823187A1 (en) 2012-07-05
EP2659386A2 (en) 2013-11-06
CA2964006C (en) 2017-09-05
US20140330840A1 (en) 2014-11-06
CN103380421B (zh) 2016-08-10
CA2911784C (en) 2017-05-30
US9208207B2 (en) 2015-12-08
EP3296896B1 (en) 2019-05-29
CA2974065C (en) 2018-09-18
JP2017068852A (ja) 2017-04-06
CA2974065A1 (en) 2012-07-05
KR101826115B1 (ko) 2018-03-22
CN103380421A (zh) 2013-10-30
US10268725B2 (en) 2019-04-23
EP2659386A4 (en) 2016-07-13
KR20170073739A (ko) 2017-06-28
WO2012091846A2 (en) 2012-07-05
KR20160014111A (ko) 2016-02-05
EP3296896A1 (en) 2018-03-21
AU2016203589A1 (en) 2016-06-16
AU2016203589B2 (en) 2017-04-20
JP2014501416A (ja) 2014-01-20
US20170075892A1 (en) 2017-03-16
CA2964006A1 (en) 2012-07-05
US9767152B2 (en) 2017-09-19
CA2911784A1 (en) 2012-07-05
US8438364B2 (en) 2013-05-07
EP2659386B1 (en) 2017-12-20
US8612688B2 (en) 2013-12-17
AU2011353036B2 (en) 2015-08-13
KR20160083142A (ko) 2016-07-11
US20180157660A1 (en) 2018-06-07
WO2012091846A3 (en) 2012-08-30
CA2901113C (en) 2016-01-26
KR20130143706A (ko) 2013-12-31
CA2901113A1 (en) 2012-07-05
MX349037B (es) 2017-07-07
AU2017203364B2 (en) 2017-10-19
JP6028065B2 (ja) 2016-11-16
US20120173845A1 (en) 2012-07-05
MX2013007686A (es) 2013-12-02
US8954675B2 (en) 2015-02-10
CN106372136A (zh) 2017-02-01
KR101753766B1 (ko) 2017-07-19
JP6062101B1 (ja) 2017-01-18
JP2015167034A (ja) 2015-09-24

Similar Documents

Publication Publication Date Title
US10268725B2 (en) Distributed cache for graph data
US20120215785A1 (en) Composite Term Index for Graph Data
AU2015227480B2 (en) Distribution cache for graph data
AU2016200251B2 (en) Distributed cache for graph data

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B11B Dismissal acc. art. 36, par 1 of ipl - no reply within 90 days to fullfil the necessary requirements
B350 Update of information on the portal [chapter 15.35 patent gazette]