2012-03-17 14 views
6

El familiar Neo4j trata las relaciones como ciudadanos de primera clase; consultas ad hoc/recorridos, integridad (si se elimina un nodo, el enlace se ha ido), etc. También se anuncia como el único mecanismo para denotar relaciones y superar las uniones de los DB relacionales.Enlaces en Riak: ¿qué pueden hacer/no hacer, en comparación con las bases de datos de gráficos?

¿Qué tan poderosos son los enlaces de Riak para denotar relaciones? ¿Se pueden usar para responder consultas ad hoc como "obtener una lista de pasatiempos para cada persona que gane más de x" o friend of a friend, asumiendo características adecuadas como índices secundarios? En general, ¿pueden simular el output of a join en un RDBMS?

¿Son también para uso intensivo, como un sistema de marcadores sociales en el que hay muchos enlaces para una persona y marcadores? ¿O son para uso cuidadoso (todas las estructuras deben estar dirigidas a gráficos acíclicos)?


En el "no" categoría:

  1. integridad de vínculo es not enforced
  2. No puede responder "Lo que enlaza a este nodo?"

Respuesta

6

Los enlaces en Riak son solo algunos metadatos (lista de referencias unidireccionales a claves externas) almacenados junto con el valor. Por lo general, se utilizan como una entrada para MapReduce que puede hacer lo que quiera con ellos, incluida la simulación de combinaciones de RDBMS.

No hay comprobaciones de integridad ni ninguna magia adicional en ellas como encontrar enlaces inversos. Son solo una API de conveniencia, se podría haber logrado lo mismo al almacenar estas listas de claves externas dentro de los valores, serializadas de alguna manera.

Por ejemplo marcadores sociales le recomiendo usar Riak Buscar, ya que permite consultas más flexibles como http://example.com/ * y se han distribuido correcta indexación y búsquedas.

2

blinkov La respuesta es correcta. No, Riak Links no es apropiado para el escenario que describes. No hay una verificación de integridad referencial, y hay un límite en la cantidad de enlaces que puede almacenar con cada objeto (creo, hasta 255).

Riak Search es mucho más apropiado para un escenario de marcadores sociales. De hecho, el sitio de marcadores sociales Clipboard usa precisamente este mecanismo - los marcadores como objetos Riak, con Riak Search habilitado en ellos (para etiquetado, desencadenantes de eventos y notificaciones, etc.). Cuando los videos de la conferencia Ricon 2012 se publiquen en línea, le recomiendo que vea el Portapapeles para obtener más información al respecto.

Riak + Secondary Indexes también sería una solución adecuada para muchos de estos casos. Vea mi respuesta a Which clustered NoSQL DB for a Message Storing purpose? y How to structure data in Riak? para obtener sugerencias de esquema para una configuración similar.

Cuestiones relacionadas