¿Podría alguien explicarme el concepto de PROYECCIÓN en la base de datos de vertica con una consulta de ejemplo?PROYECCIÓN en la base de datos de vertica
Respuesta
De Concepts Guide.pdf (en la página 23) de la documentación de Vertica.
Las proyecciones almacenan datos en un formato que optimiza la ejecución de consultas. Son similares a las vistas materializadas ya que almacenan los conjuntos de resultados en el disco en lugar de calcularlos cada vez que se utilizan en una consulta.
también
Las proyecciones son transparentes para SQL de los usuarios finales. El optimizador de consulta Vertica selecciona automáticamente las mejores proyecciones para usar en cualquier consulta .
Todo lo que se necesita hacer para una proyección para mejorar el rendimiento de las consultas es crear la proyección. Vertica seleccionará automáticamente la mejor proyección para usar para esa consulta. (Nota: Es posible forzar una proyección específica al consultar específicamente en lugar de una tabla)
No sé en qué consiste su comprensión de las proyecciones, pero las preguntas más específicas sobre las proyecciones permitirán una mayor elaboración en puntos. Si está buscando obtener una visión general de los conceptos, recomiendo obtener y leer la Concepts Guide.pdf. http://my.vertica.com
Vertica no utiliza índices para buscar los datos.
Conceptualmente, todavía tiene acceso a las tablas mediante SQL. Pero debajo del capó, los datos en la tabla se almacenan en proyecciones, que puede optimizar para diferentes consultas.
Me gusta pensar que es una mesa que representa una baraja de cartas. Si juega al póker, puede decir algo como "Seleccione * del límite 5 de CardDeck".
Digamos que usted tiene una tabla definida con las siguientes columnas:
int valor facial (vamos a suponer valores faciales son enteros), Traje varchar (10)
A continuación, puedo crear mis proyecciones (I omitiendo detalles sobre particionamiento, superproyecciones, compliaciones, etc.).
crear proyección CardDeck_p1 ( valor facial CODIFICACIÓN RLE, Traje ) como seleccionar valor facial, Traje de orden CardDeck por valor facial;
crear proyección CardDeck_p2 ( valor facial, Traje ) como seleccione valor facial, Traje de orden CardDeck por Suit;
Ahora, cada columna puede obtener un tipo diferente de codificación que se define en la proyección.Y el diseñador de la base de datos, que no he usado mucho desde que estoy en una versión anterior, puede ayudar a diseñar las proyecciones para usted.
Volviendo a la baraja de las analogías de cartas, imagina que quieres acceder a un mazo de cartas pero quieres tener diferentes barajas de cartas. Las proyecciones en Vertica te dan las diferentes combinaciones. Las tablas son realmente una construcción que le permite acceder a los datos que se almacenan en las proyecciones. Pero si está escribiendo SQL, tiene acceso a las tablas.
Muchas gracias, geoffrobinson! – Murali
Quiero enfatizar el punto hecho en la respuesta de geoff: las proyecciones son estructuras físicas en el disco. La definición de múltiples proyecciones para una tabla puede mejorar el rendimiento de la consulta, pero a costa de un mayor espacio en el disco y tiempos de carga más lentos (ya que las filas deben colocarse en cada proyección).
Hay superproyecciones que almacenan todas las columnas en una tabla, así como proyecciones parciales. Utilizaría una proyección parcial cuando la consulta que intenta soportar/optimizar solo necesita un subconjunto de columnas de la tabla. Cada tabla necesita al menos una superproyección. Si no define uno, Vertica aprovisionará uno predeterminado, que puede tener un rendimiento muy bajo.
La práctica recomendada es que la herramienta del Diseñador de base de datos lo ayude a analizar su tabla con datos de prueba y consultas de prueba, después de lo cual puede sugerirle una proyección. Personalmente, no he obtenido buenos resultados de esta manera, pero saber cómo usar la herramienta DBD debería ser parte del plan de estudios para cualquier persona que entrene en Vertica.
Gracias kimbo305 – Murali
Hay algunas explicaciones agradables de las proyecciones de Vertica en vertica.com blog y asesora de cómo usarlo:
Los enlaces ya están rotos. Solo página principal. –
Parece que está familiarizado con las vistas. Las proyecciones son muy parecidas a las vistas en concepto, ambas guardan algo en caché pero en diferentes niveles. En pocas palabras, las vistas almacenan en caché las instrucciones de consulta, mientras que las proyecciones almacenan en caché los resultados de la consulta.
Ve la caché las declaraciones de consulta. Da nombres a las consultas predefinidas y luego las invoca. Las consultas de vista no se ejecutan cuando se crean. Cuando realiza las consultas utilizando vistas, no obtendrán ninguna mejora en el rendimiento, ya que son solo consultas ordinarias.
Caché de proyecciones los resultados de la consulta. Las consultas de proyección se ejecutan cuando las creas, y los resultados se conservan en el almacenamiento. Cuando realiza una consulta que puede utilizar el resultado de la consulta, Vertica utilizará esas proyecciones para responder a la consulta, por lo tanto, mejorará el rendimiento de la consulta. Después de crear las proyecciones, no hay nada especial que deba hacer, Vertica seleccionará las proyecciones automáticamente si puede beneficiar a la consulta. Las proyecciones se pueden usar para la consulta porque la consulta utiliza las columnas del subconjunto de proyecciones, tiene el mismo orden de ordenación, etc.
Proyecciones como vistas, puede seleccionar un subconjunto de columnas de tabla, realizar unir con otras tablas, ordenar por columnas específicas. Sin embargo, diferentes proyecciones ocuparán su propio espacio para guardar el resultado de la consulta, mientras más proyecciones se creen, más espacio se consumirán. Las proyecciones se actualizarán automáticamente mientras se actualizan las tablas fuente relacionadas. El proceso de actualización se ejecuta en segundo plano y puede tardar mucho tiempo según la complejidad de la consulta y el tamaño de los datos. Por lo tanto, las proyecciones son más adecuadas para muchas lecturas en lugar de muchas escrituras.Desde la perspectiva del caso de uso, las proyecciones son más adecuadas para informar en comparación con el panel web en tiempo real.
En el detalle de la implementación, las tablas en Vertica son todas lógicas. Todos los datos en las tablas se almacenan en cada super proyección asociada. La super proyección contiene todas las columnas en la tabla y se crea automáticamente de forma predeterminada. Todas las demás proyecciones se derivan de las super proyecciones.
Vertica decidirá qué proyecciones serán utilizados para la consulta, pero también se puede especificar el nombre de las proyecciones directamente a la fuerza Vertica utilizarlos:
-- List all projections
SELECT projection_name FROM projections;
-- Force to use super projection, _super is the suffix of the super projection
SELECT * FROM FACT_TABLE_super;
Usted puede utilizar la instrucción explican a ver qué las proyecciones se usan en el plan de consulta. Esto lo ayudará a mejorar el rendimiento de su consulta.
- 1. Configuración del esquema predeterminado para la base de datos de Vertica
- 2. ¿Cómo buscar column_names en Vertica?
- 3. Proyección de datos en Entity Framework y Automapper
- 4. Índice en la Selección de proyección
- 5. ¿Qué es una proyección?
- 6. Ventajas de bases de datos como Greenplum o Vertica en comparación con MongoDB o Cassandra
- 7. Copia de datos relacionales de la base de datos a la base de datos
- 8. Error al tirar de la base de datos mysql en la base de datos mysql local
- 9. Manejo de datos de jerarquía en la base de datos
- 10. LINQ elemento de proyección
- 11. ¿Cómo colocar todas las tablas en la base de datos sin soltar la base de datos?
- 12. Rieles: almacenamiento de datos cifrados en la base de datos
- 13. Cifrado de datos para almacenamiento en la base de datos
- 14. Obteniendo datos almacenados de la base de datos en ListView.
- 15. Mostrar datos de la base de datos SQL en Gridview
- 16. ¿Herencia en la base de datos?
- 17. imagen en la base de datos
- 18. Actualizando la base de datos en __destruct()?
- 19. Hibernate consultas en la base de datos
- 20. Internacionalización en la base de datos
- 21. Inserción en la base de datos
- 22. Tienda IPv6 en la base de datos
- 23. cómo almacenar datos en la base de datos en HTML5
- 24. Guardar datos en árabe en la base de datos MySQL
- 25. ¿Qué es una proyección en NHibernate?
- 26. ¿Cómo copiar la base de datos en uso a otra base de datos en django?
- 27. Grails: ¿Proyección en muchas tablas?
- 28. código de proyección repetida en Entity Framework
- 29. ¿Cuál es la diferencia entre NoSQL y una base de datos orientada a columnas?
- 30. Convertir la base de datos de Postgres en una base de datos espacial
Gracias Nija. Tu respuesta es muy útil. Tengo algunas preguntas más sobre esto. Según tengo entendido, las PROYECCIONES son similares a VIEWS, excepto que las proyecciones almacenan conjuntos de resultados en el disco mientras que las vistas calculan los datos de la tabla cada vez que se utilizan en una consulta. ¿Puedo usar VIEW como alternativa a PROJECTION? Si es así, ¿tendré problemas de rendimiento? – Murali
@Murali: 'Views' en Vertica son, esencialmente, consultas. (De _SQL Reference Manual.pdf_) "[en] una consulta que contiene una vista, el nombre de vista es reemplazado por la consulta de definición de la vista" – Nija
Gracias. Por cierto, no pude descargar la Guía de conceptos.pdf de http://my.vertica.com. solo el usuario autorizado podría descargar, parece. Me inscribí pero todavía no recibí el correo de activación. ¿Hay alguna otra forma de obtener la guía .pdf? – Murali