database graph riak

database - Link-walking con Riak-búsqueda de ''amigos comunes''



graph (1)

Veo dos posibles soluciones:

  1. El trabajo de MapReduce con aproximadamente este escenario:
    • Se comparan dos entradas con personas A y B
    • Fase de enlace recuperando las ID de sus amigos
    • Asignarlos a tuplas {FriendID, 1}
    • Reducir la suma de 1s
    • Reduce el filtro donde suma = 2
    • %% Los últimos pasos se pueden combinar en uno si es necesario
  2. Simplemente emita una consulta de enlace para cada persona e interseque conjuntos devueltos en el cliente, un poco feo, pero funciona.

¿Puede alguien familiarizado con Riak explicar cómo hacer una caminata de enlace para encontrar amigos comunes entre dos personas (por ejemplo, al igual que los amigos comunes de Facebook)? Además, el requisito de computación idealmente debería ser mínimo, es decir. el servidor no tiene que pasar por largos cálculos de hacer hacer.

Estoy pensando en poner a todas las "personas" en una categoría de "personas", y cada "persona" tendrá un enlace de amigos (esto es como una relación de uno a varios), luego, para cada "persona" se invierte la relación- vinculado a la otra persona (esto es como una relación de uno a uno). Creo que es posible hacer esto de manera eficiente y el cálculo / resultado estará disponible al instante, pero no se puede resolver.

(Muy bien, no he empezado exactamente a programar con Riak, por lo que se agradecería una explicación más detallada sobre la función de enlace de Riak.)

¡Gracias!