Ответ 1
Вы проводили какие-либо исследования по этому вопросу?
Выбор водителя
Вам нужен способ общения с Кассандрой, лучший вариант - использовать API высокого уровня. У вас есть широкий выбор вариантов, но когда мы смотрим на это с точки зрения высокого уровня, на самом деле есть два варианта.
- Драйверы на основе CQL - абстракция высшего уровня того, что делает Thrift. Также более новый инструмент, компании, предоставляющие поддержку/документацию для Cassandra, рекомендуют, чтобы новые приложения Cassandra основывались на CQL.
- Экономичные накопители - имеют доступ к низкоуровневым хранилищам, поэтому проще ошибиться.
Я буду использовать драйвер datastax CQL.
Загрузите и соберите драйвер из datastax github repo ИЛИ используйте maven и добавьте следующие зависимости:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
<version>2.1.2</version>
</dependency>
Выбор maven - хорошая идея, так как он будет управлять всеми вашими зависимостями за вас, но если вы не используете maven, по крайней мере вы научитесь управлять jar файлами и чтением трассировок стека.
Код
Документация водителя идет хорошо. Если вы застряли, прочитав его, документация содержит множество примеров.
Я буду использовать следующие две переменные в примерах.
String serverIP = "127.0.0.1";
String keyspace = "system";
Cluster cluster = Cluster.builder()
.addContactPoints(serverIP)
.build();
Session session = cluster.connect(keyspace);
// you are now connected to the cluster, congrats!
Читать
String cqlStatement = "SELECT * FROM local";
for (Row row : session.execute(cqlStatement)) {
System.out.println(row.toString());
}
Создание/обновление/удаление
// for all three it works the same way (as a note the 'system' keyspace cant
// be modified by users so below im using a keyspace name 'exampkeyspace' and
// a table (or columnfamily) called users
String cqlStatementC = "INSERT INTO exampkeyspace.users (username, password) " +
"VALUES ('Serenity', 'fa3dfQefx')";
String cqlStatementU = "UPDATE exampkeyspace.users " +
"SET password = 'zzaEcvAf32hla'," +
"WHERE username = 'Serenity';";
String cqlStatementD = "DELETE FROM exampkeyspace.users " +
"WHERE username = 'Serenity';";
session.execute(cqlStatementC); // interchangeable, put any of the statements u wish.
Другой полезный код
Создание Keyspace
String cqlStatement = "CREATE KEYSPACE exampkeyspace WITH " +
"replication = {'class':'SimpleStrategy','replication_factor':1}";
session.execute(cqlStatement);
Создание ColumnFamily (она же таблица)
// based on the above keyspace, we would change the cluster and session as follows:
Cluster cluster = Cluster.builder()
.addContactPoints(serverIP)
.build();
Session session = cluster.connect("exampkeyspace");
String cqlStatement = "CREATE TABLE users (" +
" username varchar PRIMARY KEY," +
" password varchar " +
");";
session.execute(cqlStatement);