2013-04-18 2 views
16

Я начинаю новый проект с Cassandra (и планирую использовать последнюю версию стабильной версии (1.2.x)). Я пробовал несколько разных библиотек Java, таких как Hector, Astyanax, Cassandra-jdbc ...Новый проект Кассандры - драйвер Astyanax или Java?

Среди них (вкратце) мой выбор - Astyanax. Но потом я также нашел и попробовал драйвер Java DataStax, который поддерживает новый двоичный протокол CQL, и намного чище, если вы используете только CQL. И, похоже, версия 1.0.0 GA скоро выйдет.

Какой из них Вы бы порекомендовали? Благодарю.

+2

+1 для Astyanax! удивительный апи! –

ответ

19

Я бы посоветовал вам воспользоваться драйвером cql3. Некоторые варианты: JDBC driver или даже лучше Datastax's driver, который поддерживает асинхронные подключения. Возможно, вам придется самостоятельно строить драйвер datastax, но это можно сделать с помощью maven.

бережливости не будет получать какие-либо новые возможности в Кассандре, его держат для обратной сопоставимости и советов большинства C * членов сообщества использовать драйвера, основанные CQL для новых проектов:

Как описано выше, мы считаем, что CQL3 - это более простой и общий API для Cassandra, чем API бережливого бизнеса. Таким образом, новые проекты/приложения рекомендуется использовать CQL3

- source

Также производительность CQL становится все лучше очень быстро. Вот некоторые устаревшие benchmarks.
UPDATE

Поскольку ответ был написан maven central repository была создана для водителя, так что теперь, чтобы использовать его просто добавить зависимость в Maven:

<dependency> 
    <groupId>com.datastax.cassandra</groupId> 
    <artifactId>cassandra-driver-parent</artifactId> 
    <version>1.0.0</version> 
</dependency> 
9

Я лично использовал Hector, Astyanax, Pelops, Fluent Cassandra, Драйвер Datastax и Pycassa, и, после использования большого количества API, я наконец понял, что Astyanax подходит мне лучше всего (его личное внимание).

особенность я нашел в Astyanax, которые отличают его от других в лиге являются

  • Удобство использования API
  • Композитный опорная стойка
  • Пулы соединений
  • Latency
  • Documentation
  • Обновлено
+8

Драйвер Hector и datastax поддерживает составные столбцы (не уверен в других), и я бы сказал, что CQL проще в использовании, чем Astyanax. Также бережливость - это выход, поэтому CQL3 следует использовать для новых проектов. –

+2

ну, я знаю друг, на самом деле мое внимание было на простоте доступа. Да, CQL всегда был более простым вариантом и останется таким (хорошо известный факт RDBMS), и я могу заверить, что даже максимальный процент пользователей Astyanax использует инструкции CQL из своего API. – abhi

+9

+1 для Astyanax. CQL не проще - это всего лишь швы: вы можете просто писать невыполненные запросы и сталкиваться с проблемами, потому что это делает вас вещью, так как это будет реляционный db и не заставляет вас реально понимать семантику магазина nosql. –

6

Я использовал Astyanax. Он хорошо документирован и прост в использовании, если у вас нет проблем с написанием в 5 раз больше кода, чем CQL.

Прямо сейчас я использую CQL, поскольку люди, с которыми я работал, не полностью поняли код Astyanax - почему они должны писать класс для имен столбцов. Я думаю, что вы никогда не поймете внутренности Кассандры правильно, если не используете Astyanax или Hector.

4

Вы должны обязательно пойти с новыми DataStax Java Driver и Cassandra 1.2 для нового проекта, который только начинается. Водитель просто отправился в GA, и оба водителя и Cassandra 1.2 будут только более стабильными в течение следующих нескольких месяцев, когда вы разработаете свой новый проект.

1

Я согласен с Zanson/Valchkou. DataStax Java Driver - это будущее. Очень удобно работать с Cassandra с SQL. Между тем, я также рекомендую CassandraExecutor, простую упаковку DataStax Java Driver. По сравнению с драйвером Java, CassandraExecutor имеет ниже функции:

  • Последовательные/Интегрированные/лаконичные интерфейсы для (синхронизации/Асинхронный) операций (CRUD) с SQL/организации.
  • DataSet, который поддерживает отчетливый/слияния/сортировки/группеПо/присоединиться/объединение/unionAll/за исключением/пересекаются/постраничной/фильтр/счетчик/toJOSN/ToXml/toCVS ...

Вот простой CRUD (создание/чтение/обновление/удаление) образец:

Account account = createAccount(); 
// create 
String sql_insert = NE.insert(ID, GUI, FIRST_NAME, LAST_NAME, LAST_UPDATE_TIME, CREATE_TIME).into(Account.class).sql(); 
cassandraExecutor.execute(sql_insert, account); 

// read 
String sql_selectByGUI = NE.select(ID, GUI, FIRST_NAME, LAST_NAME).from(Account._).where(L.eq(ID, L.QME)).sql(); 
Account dbAccount = cassandraExecutor.queryForEntity(Account.class, sql_selectByGUI, account); 

// update 
String sql_updateByLastName = NE.update(Account.class).set(FIRST_NAME).where(L.eq(ID, L.QME)).sql(); 

dbAccount.setFirstName("newFirstName"); 
cassandraExecutor.execute(sql_updateByLastName, dbAccount); 

// delete 
String sql_deleteByFirstName = NE.deleteFrom(Account.class).where(L.eq(ID, L.QME)).sql(); 
cassandraExecutor.execute(sql_deleteByFirstName, dbAccount); 

(Декларация: Я разработчик CassandraExecutor)

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