cassandra prepared-statement datastax-enterprise datastax-java-driver

cassandra - Datastax-¿PreparedStatement es seguro?



prepared-statement datastax-enterprise (1)

¿Debe una instancia de com.datastax.driver.core.PreparedStatement ser un singleton en una aplicación?

Si es así, ¿qué sucede si la conexión se pierde? ¿Se vuelve inválido el PreparedStatement y se debe tomar una acción manual para ''volver a prepararlo''?

Un ejemplo simple del uso de PreparedStatement (aparte de preparar + ejecutar en el mismo método) sería genial.


Los objetos PreparedStatement son seguros para el hilo. Puede mutarlos (estableciendo el nivel de coherencia predeterminado, por ejemplo) de forma que podría provocar incoherencias si varios subprocesos lo hicieran simultáneamente, pero eso es algo más.

Las declaraciones preparadas son básicamente envoltorios alrededor de un ID y metadatos, y el servidor mantendrá la instrucción preparada mientras esté activa (pero un bloqueo o reinicio del nodo significará que se perderá y tendrá que volver a prepararse). En teoría, una declaración preparada podría ser serializada y deserializada en otro lugar y seguir funcionando, pero no lo recomendaría.

Las sentencias preparadas son locales para un nodo y, como mencioné anteriormente, no sobreviven a los reinicios, por lo tanto, si las va a mantener, debe asegurarse de que las elimine cuando fallen las conexiones o se reinicien los nodos. Intentaría delimitarlos de la misma forma en que enfoca sus conexiones, recréelos al conectarse y reconectarse. Tal vez no sea un gran consejo, pero depende mucho de cómo esté estructurada su aplicación.