Java - Cassandra con un montón de parámetros en "IN"

votos
1

Estoy escribiendo una aplicación Java con Cassandra DB. Estoy haciendo una solicitud con abundante (más de 100.000) parámetros en mi cláusula de 'IN':

SELECT country, gender FROM persons WHERE person_id IN (1,7,18, 34,...,)

Pero poner algunos muchos parámetros en IN se ve mal que pienso.

También puedo hacer un montón de solicitud como esta (una vez más de 100.000 iteraciones):

for (Integer id : ids) {
    ResultSet res = session.execute(preparedStatement(id));
    //processing with data from Cassandra
}

¿No mejor tampoco, demasiado tiempo.

¿Hay alguna API, patrón a seguir en mi caso?

Gracias

Publicado el 19/12/2018 a las 14:17
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
3

Si el person_ides la clave de partición (como se ve desde la consulta), y luego usando EN dará lugar a una gran cantidad de problemas, ya que se sobrecargará nodo coordinador que tendrá que recoger los resultados de otros nodos.

En este caso, la forma más eficaz es para disparar las peticiones individuales, sino que se realice a través de ellos executeAsync, por lo que será enviada a los diferentes nodos. En este caso tendrá que controlar el número de solicitudes que ha enviado, por ejemplo a través de semáforos contando, además es posible que necesite parámetros de conexión de la puesta en común de tiempo que controlan el número de solicitudes de a bordo: https://docs.datastax.com/ es / desarrollador / java-conductor / 3.6 / Manual / agrupamiento /

Respondida el 20/12/2018 a las 13:05
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more