Yo uso Cassandra java driver .
Recibo 150k solicitudes por segundo, que inserto en 8 tablas que tienen diferentes claves de partición.
Mi pregunta es cuál es una mejor manera:
Hago esta pregunta porque, teniendo en cuenta el tamaño de mi solicitud (150k), lote parece la mejor opción, pero debido a que todas las tablas tienen diferentes claves de partición, lote parece costoso.
Por favor, compruebe mi respuesta desde el siguiente enlace:
Rendimiento de consultas por lotes de Cassandra en tablas que tienen diferentes claves de partición
Los lotes no son para mejorar el rendimiento. Se utilizan para asegurar la atomicidad y el aislamiento.
El procesamiento por lotes puede ser efectivo para operaciones de escritura de una sola partición. Pero los lotes a menudo se usan por error en un intento de optimizar el rendimiento. Dependiendo de la operación por lotes, el rendimiento puede empeorar.
https://docs.datastax.com/en/cql/3.3/cql/cql_using/useBatch.html
Si no se necesita coherencia de datos entre esas tablas, utilice una sola inserción. Las solicitudes individuales se distribuyen o propagan correctamente (depende de la política de equilibrio de carga) entre los nodos. Si le preocupa el manejo de solicitudes y el uso por lotes, los lotes cargarán tantos trabajos adicionales en los nodos coordinadores que no serán eficientes, supongo :)
Los lotes tienen un ENORME impacto en el rendimiento. La solución que mejor se adapte a usted, según tengo entendido, se divide en diferentes listas por claves de partición y luego usa declaraciones por lotes. Verá un gran impacto en el rendimiento.