2017-02-06 20 views
0

С драйвером datastax java для подключения к Cassandra, я хочу установить явно согласованность WRITE, но похоже, что мы можем установить уровень согласованности только для запросов. Ниже приведен пример кода. Как я могу упомянуть о последовательности записи из драйвера?Как установить консистенцию WRITE явно с помощью драйвера java Datastax?

Cluster cluster = Cluster 
         .builder() 
         .addContactPoint(host) 
         .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.ONE)) 
         .withRetryPolicy(DefaultRetryPolicy.INSTANCE) 
         .withCredentials(userName,password) 
         .withLoadBalancingPolicy(
           new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build())) 
         .build(); 

ответ

1

У нас совершенно разные требования к чтению и записи (у читателей есть очень плотные SLA относительно чисел задержки и записи не так важны для нас, чтобы они быстро заканчивались).

Мы решили разделить сеансы, мы создали два объекта Cluster, и из них мы создали две сессии, одну для чтения и одну для записи. Когда мы пишем, мы используем writeSession, и мы пишем CL QUORUM, а когда читаем, мы используем readSession, который настроен на требования к задержке, с CL ONE, спекулятивными исполнениями и таймаутом таймера.

Короче говоря, вы можете определить сеанс, специфичный для всех ваших записей, и определить уровень согласованности объекта Cluster. Имейте в виду только, что это приведет к еще большему количеству подключений от драйвера к кластеру Cassandra.

0

Консистенция может быть установлен на уровне кластера, в этом случае любые запросы выполняются с session.execute будет иметь такой уровень согласованности. Вы также можете установить уровень согласованности как часть самого оператора session.execute.

 Смежные вопросы

  • Нет связанных вопросов^_^