¿Cuáles son las limitaciones prácticas en una familia de columnas en Cassandra?


10

En Cassandra, no se recomienda tener más de unos pocos miles de familias de columnas , digamos 2.000 en aras de la discusión. En los casos en que sea necesario conservar más de 2,000 tipos de datos, un enfoque sería dividir múltiples tipos de datos no relacionados en cada familia de columnas.

Por ejemplo, un solo CF podría contener Órdenes, Facturas y Clientes, siempre que sus claves de fila fueran distintas (p. Ej., Prefijadas con el tipo de objeto, es decir, las claves de un solo CF podrían incluir ambos Order|1234y Customer|1234). Un segundo CF podría contener, por ejemplo, Addresses, LineItems y OrderTypes. Dada la viabilidad básica de este enfoque, ¿cuáles son sus límites prácticos? Por ejemplo, ¿qué estaría mal si pusiera los 10,000 tipos de objetos en un solo CF? Por lo que puedo ver en el wiki de Cassandra , no hay una limitación estricta en el tamaño de un CF.

Respuestas:


6

No soy fan Es una idea tan buena como crear una tabla relacional llamada OrdersOrCustomers con columnas definidas para ambos. La penalización del motor de almacenamiento es ligeramente menor en Cassandra debido al almacenamiento de celdas dispersas debajo del capó, pero sigue siendo una mala práctica.

Esto lo muerde más tarde cuando desee asignar / reducir sus datos; cada tarea tendrá que escanear todos sus datos y filtrar las filas que no coinciden con lo que realmente le interesa (por ejemplo, clientes). Y buena suerte dando sentido a las estadísticas que Cassandra rastrea por CF. ("¿Este CF es la fuente del 80% de las lecturas de mi aplicación debido a los datos del pedido? ¿O a las sesiones con los clientes con las que se combina? ¿O a los otros cinco tipos de datos que agregué?")

Si necesita absolutamente decenas o cientos de miles de FQ? Incluso entonces prefiero ejecutar Cassandra sin asignación de arena, que mutilar mi modelo de datos de esta manera.


Gracias por tu respuesta, Jonathan. Necesitaré leer sobre la asignación de arena para entender la última oración. ¿Usar la asignación de arena es una opción de configuración?
Andrew Swan el

O si la asignación de arena se integra en Cassandra hoy en día, ¿qué tan difícil sería desasignar las arenas de cualquier familia de columnas a las que no se haya accedido dentro de un período de tiempo configurable? ¿Merece la pena registrar un boleto de JIRA sobre esto?
Andrew Swan el

1
Cassandra ya es inteligente sobre el enrojecimiento para aliviar la presión de la memoria. El problema es con los peores escenarios donde todo está activo.
jbellis

¿En qué caso es la única solución para tener un segundo anillo?
Andrew Swan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.