Cassandra es un sistema de gestión de bases de datos
distribuidas de código abierto diseñado para procesar grandes volúmenes de datos en múltiples servidores típicos.
Además, Spring Boot proporciona configuración automática para Cassandra y abstracciones proporcionadas a través de
Spring Data Cassandra. Para
una recopilación conveniente de dependencias, existe un spring-boot-starter-data-cassandra
de
“inicio”.
Conectando con Casandra
Puedes implementar una instancia CassandraTemplate
o CqlSession
configurada automáticamente
desde Cassandra como cualquier otro Spring Bean. Las propiedades spring.data.cassandra.*
se pueden
utilizar para configurar la conexión. Normalmente, se especifican keyspace-name
y
contact-points
, así como el nombre del centro de datos local, como se muestra en el siguiente ejemplo:
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1:9042,cassandrahost2:9042
spring.data.cassandra.local-datacenter=centro de datos1
spring:
data:
cassandra:
keyspace-name: "mykeyspace"
contact-points: "cassandrahost1:9042,cassandrahost2:9042"
local-datacenter: "datacenter1"
Si el puerto es el mismo para todos los puntos de contacto, puede utilizar un acceso directo y especificar solo los nombres de host, como se muestra en el siguiente ejemplo:
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1,cassandrahost2
spring.data.cassandra.local-datacenter=centro de datos1
spring:
data:
cassandra:
keyspace-name: "mykeyspace"
contact-points: "cassandrahost1,cassandrahost2"
local-datacenter: "datacenter1"
9042
. Si necesita configurar el puerto, utilice spring.data.cassandra.port
.
El controlador Cassandra tiene su propio marco de configuración que carga application.conf
en la
ruta de clase raíz.
Spring Boot no busca dicho archivo de forma predeterminada, pero puede cargarlo usando spring.data.cassandra.config
.
Si una propiedad está presente tanto en spring.data.cassandra.*
como en el archivo de
configuración, el valor en spring.data.cassandra.*
tiene un nivel de precedencia más alto.
Para una personalización más profunda del controlador, puede registrar una cantidad arbitraria de beans que
implementen DriverConfigLoaderBuilderCustomizer
. CqlSession
se puede personalizar
utilizando un bean como CqlSessionBuilderCustomizer
.
CqlSessionBuilder
para crear varios beans
CqlSession
, tenga en cuenta que el constructor es mutable. Por lo tanto, , debe asegurarse de
implementar una nueva copia para cada sesión.
La siguiente lista de código muestra cómo implementar un bean Cassandra:
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final CassandraTemplate template;
public MyBean(CassandraTemplate template) {
this.template = template;
}
// ...
public long someMethod() {
return this.template.count(User.class);
}
}
import org.springframework.data.cassandra.core.CassandraTemplate
import org.springframework.stereotype.Component
@Component
class MyBean(private val template: CassandraTemplate) {
// ...
fun someMethod(): Long {
return template.count(User::class.java)
}
}
Si agrega su propio bean CassandraTemplate
marcado con la anotación @Bean
, reemplazará la
plantilla predeterminada.
Repositorios de datos de primavera Cassandra
Spring Data contiene soporte de repositorio para Cassandra. Actualmente son más limitados que el soporte de
repositorio similar para JPA discutido anteriormente y requieren que los métodos de búsqueda estén anotados con la
anotación @Query
.