es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo selecciono todas las filas de dos columnas de agrupamiento en una base de datos de Cassandra?

Tengo una clave de partición: A

Columnas de clustering: B, C

Entiendo que puedo hacer consultas de la siguiente manera:

Select * from tabla where A = ?
Select * from tabla where A = ? and B = ?
Select * from tabla where A = ? and B = ? and C = ?

Ahora tengo un escenario en el que solo necesito obtener resultados de B y C. ¿Hay alguna manera de hacer esto sin usar “Allow Filtering”?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, en Cassandra no es posible obtener resultados de consultas basadas únicamente en columnas de agrupamiento sin especificar la clave de partición o utilizar ALLOW FILTERING. La razón es que en Cassandra, los datos se almacenan y se recuperan en función de la clave de partición, que es la responsable de la distribución de datos entre los nodos del clúster. Las columnas de agrupamiento sólo determinan el orden en que se almacenan los datos dentro de una partición. Por lo tanto, para recuperar datos basados únicamente en columnas de agrupamiento, la base de datos tendría que escanear todas las particiones, lo cual es una operación costosa y viola los principios de diseño de Cassandra.

    Por lo tanto, se recomienda incluir la clave de partición en la consulta para evitar ALLOW FILTERING o rediseñar el modelo de datos para adaptarlo a los requisitos de la consulta.

Comments are closed.