Estoy buscando almacenar imágenes en una base de datos NoSQL (< 5MB) y vincularlas a artículos en un cubo diferente. ¿Qué tipo de velocidad ofrece la función de enlace para caminar de Riak? ¿Es como un RDBMS unirse en absoluto?Riak link-walking como una unión?
Respuesta
Los enlaces no son en absoluto similares a los JOIN (que implican un producto cartesiano), pero se pueden usar para fines similares en algunos sentidos. Son muy similares a los enlaces en un documento HTML.
Con el enlace caminando, o bien comienza con una sola tecla o crea un trabajo de reducción de mapa que comienza con varias teclas. (Link-walking/transversal es en realidad un caso especial de map-reduce). Esos valores se obtienen, sus enlaces se filtran contra su especificación (depósito, etiqueta) y luego los enlaces coincidentes se pasan a la siguiente fase (o de nuevo a la cliente). Por supuesto, todo esto se hace en paralelo (a diferencia de JOIN) con alta data-localidad.
Además, map-reduce no es lento por sí mismo, simplemente no tiene un planificador de consultas sofisticado para hacer el trabajo por usted; debe pensar cómo consultará y organizará sus datos según sea necesario.
Piense en relaciones unidireccionales y tan rápido como consultar normalmente. No tan lento como MapReduce.
Desde: http://seancribbs.com/tech/2010/02/06/why-riak-should-power-your-next-rails-app/
La primera forma en que se ocupa de Riak esto es con enlace a pie. Cada dato almacenado en Riak puede tener relaciones unidireccionales con otros datos a través del encabezado HTTP Link del . En el ejemplo canónico , conoce la clave de una banda que ha almacenado en el cubo "artistas" (las cubetas Riak son como las tablas de la base de datos o las cubetas S3). Si ese artista está vinculado a sus álbumes, que están en virales vinculados a las pistas en los álbumes , puede encontrar todas las pistas producidas en una única solicitud. Como voy a describir en la siguiente sección, esto es mucho menos doloroso que un JOIN en SQL porque cada elemento se opera en de forma independiente, en lugar de una tabla en por vez. Esto es lo que esa consulta sería aspecto:
GET /primas/artistas/Thebeatles/álbumes, ,/pistas, _, 1 “/ bruto” es la parte superior del espacio de nombres URL , “artistas” es el cubo, "TheBeatles" es la clave del objeto fuente. Lo que sigue son las especificaciones de coincidencia cuyos enlaces a continuación, en el formato de cubo, etiqueta, mantener triples, donde los subrayados coinciden con cualquier cosa. El tercer parámetro , "mantener" dice que devuelve resultados de ese paso, lo que significa que puede recuperar los resultados de cualquier paso que desee, en cualquier combinación. No sé ustedes, pero a mí que se siente más natural que esto:
pistas SELECT * FROM pistas internas JOIN álbumes en tracks.album_id = albums.id INNER JOIN artistas en álbumes.. artist_id = artists.id WHERE artists.name = "The Beatles" La advertencia de enlaces es que son intrínsecamente unidireccionales, pero este se puede solucionar con poca dificultad en su aplicación. Sin restricciones de integridad referencial en su base de datos SQL (que ActiveRecord ha hecho doloroso en el pasado), que no tiene ninguna garantía de que su sólida de eliminación o actualización no causará una fila para quedará huérfana, de todos modos. Somos algo así como echado a perder porque ActiveRecord maneja la vinculación de las asociaciones automáticamente.
El lugar en el que la función de enlace de caminar realmente brilla es en autorreferencial y profundo transitiva relaciones (has_many pensar: a través de auto grande).Como no es necesario crear una tabla virtual mediante un JOIN y alias de las diferentes versiones de la misma tabla , puede hacer fácilmente cosas como gráficos de redes sociales (friends-of-friends-of-friends), y estructuras de datos como árboles y listas.
- 1. unión dinámica parece como una mentira
- 2. ¿Una explicación simple de Rings en Riak?
- 3. Erlang - Clientes de Riak
- 4. Riak vs GlusterFS
- 5. Riak en Windows
- 6. SELECCIONE LA UNIÓN como DISTINCT
- 7. Asegurar la corrección en riak?
- 8. en codeigniter como hago una unión con una cláusula where
- 9. ¿Cómo podría diseñar un blog utilizando una tienda de documentos (como CouchDB, Redis, MongoDB, Riak, etc.)
- 10. ¿Buenas prácticas al desarrollar una aplicación en Erlang (y Riak)?
- 11. ¿Cómo obtener una búsqueda como Unión de 2 búsquedas anteriores?
- 12. ¿Cómo ordenar/ordenar datos en Riak?
- 13. ¿Qué es una unión?
- 14. Convertidor de unión como clase interna?
- 15. XPath 'o' comportarse como unión ('|') con xmllib2
- 16. ¿Cómo inicializar una unión?
- 17. Auto-unión de una subconsulta
- 18. ejecución de una c/C++ unión de estilo como una columna en MySQL
- 19. casting una constante a una unión
- 20. Diferencia entre unión interna y unión completa
- 21. MySQL: Use el valor CASE/ELSE como parámetro de unión
- 22. Cómo simular una 'unión externa' en core.logic?
- 23. rendimiento de unión versus unión todos
- 24. ¿Dónde se ejecutan los enganches Riak Post-Commit?
- 25. Unión-encontrar en una estructura gráfica
- 26. unión inicialización
- 27. Declaración de unión para una lista
- 28. Default_scope en una tabla de unión
- 29. Ejecución de un clúster riak de tres nodos con una instalación homebrew
- 30. En SQL, ¿una unión es en realidad una intersección? ¿Y también es un enlace o una "Unión Sideway"?
Almacenado en el encabezado, ¿significa eso que el enlace almacenado en el documento es un enlace http a la ubicación del documento vinculado? – tesserakt
Se accede a Riak a través de HTTP, así que, técnicamente, sí, el documento se almacena en un enlace http. Pero no tiene que recorrer la cadena de enlaces para acceder a su documento, puede acceder directamente a él. – databyte