Cassandra

Модуль 5. Spring
17 уровень , 8 лекция
Открыта

Cassandra – это распределенная система управления базами данных с открытым исходным кодом, предназначенная для обработки больших объемов данных на множестве типовых серверов. В добавок Spring Boot предусматривает автоконфигурацию для Cassandra и абстракции, предоставляемые через Spring Data Cassandra. Для удобного сбора зависимостей существует "стартер" spring-boot-starter-data-cassandra.

Подключение к Cassandra

Можно внедрить автоконфигурируемый CassandraTemplate или экземпляр CqlSession из Cassandra так же, как и любой другой бин Spring. Свойства spring.data.cassandra.* можно использовать для настройки соединения. Как правило, указывается keyspace-name и contact-points, а также имя локального центра данных, как показано в следующем примере:

Properties
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1:9042,cassandrahost2:9042
spring.data.cassandra.local-datacenter=datacenter1
Yaml
spring:
  data:
    cassandra:
      keyspace-name: "mykeyspace"
      contact-points: "cassandrahost1:9042,cassandrahost2:9042"
      local-datacenter: "datacenter1"

Если порт одинаков для всех контактных точек, можно воспользоваться сокращением и указать только имена хостов, как показано в следующем примере:

Properties
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1,cassandrahost2
spring.data.cassandra.local-datacenter=datacenter1
Yaml
spring:
  data:
    cassandra:
      keyspace-name: "mykeyspace"
      contact-points: "cassandrahost1,cassandrahost2"
      local-datacenter: "datacenter1"
Эти два примера идентичны, поскольку порт по умолчанию – 9042. Если нужно сконфигурировать порт, используйте spring.data.cassandra.port.

Драйвер для Cassandra имеет свою собственную конфигурационную инфраструктуру, которая загружает application.conf в корень classpath.

Spring Boot не осуществляет поиска такого файла по умолчанию, но может загружать его с помощью spring.data.cassandra.config. Если свойство одновременно присутствует в spring.data.cassandra.* и в конфигурационном файле, значение в spring.data.cassandra.* имеет более высокий уровень старшинства.

Для более глубокой настройки драйверов можно регистрировать произвольное количество бинов, реализующих DriverConfigLoaderBuilderCustomizer. CqlSession можно настроить с помощью бина типа CqlSessionBuilderCustomizer.

Если вы используете CqlSessionBuilder для создания нескольких бинов CqlSession, имейте в виду, что средство сборки является изменяемым, поэтому следует убедиться, что для каждой сессии внедряется новая копия.

В следующем листинге кода показано, как внедрить бин Cassandra:

Java
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); } } 
Kotlin
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) } } 

Если вы добавите свой собственный бин типа CassandraTemplate, помеченный аннотацией @Bean, он заменит шаблон по умолчанию.

Репозитории Spring Data Cassandra

Spring Data содержит средства поддержки репозиториев для Cassandra. В настоящее время они более ограничены, чем аналогичная поддержка репозиториев для JPA, рассмотренная ранее, и требует аннотирования методов поиска с помощью аннотации @Query.

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ