Различия между Гектором Кассандрой и JDBC

В настоящее время я начинаю проект, который использует Cassandra Apache. Так что мне интересно получить доступ к моей базе данных Кассандра из Java. Для этого я использую Гектора Кассандру. Однако у меня есть некоторые сомнения относительно различий между доступом через Hector или JDBC Cassandra (в частности, это: https://code.google.com/a/apache-extras.org/p/cassandra-jdbc/).

Я верю в следующее (хотя я не уверен, прав ли я):

  • одно различие между ними может заключаться в том, что это API разного уровня (я считаю, что Гектор Кассандра является API более высокого уровня, чем JDBC Cassandra)?

  • в JDBC Cassandra используется CQL для доступа / изменения базы данных, в то время как Гектор Cassandra не использует CQL (используйте только методы, предусмотренные для этого).

Я буду благодарен, если кто-то может помочь мне и сказать мне, правильно ли я / неправильно в предыдущих строках и больше различий между обоими (Гектор и JDBC Кассандра).

Заранее спасибо!

4 ответа

Официальный Java-драйвер Cassandra ( https://github.com/datastax/java-driver), вероятно, является лучшим (IMHO, единственным) выбором для нового проекта по нескольким причинам:

Новые возможности

Все остальные клиенты Cassandra (Hector, Astyanax и т. Д.) Основаны на устаревшем протоколе Thrift RPC. Модель RPC "Один ответ на один запрос" имеет серьезные ограничения, например, она не позволяет обрабатывать несколько запросов одновременно в одном соединении или передавать большие ResultSets.

Итак, DataStax разработал новый протокол, который не имеет ограничений RPC. Thrift API не будет получать новые функции, он сохранен только для обратной совместимости. Напротив, драйвер Java активно разрабатывается для включения новых функций Cassandra 2.0, таких как условные обновления, пакетные подготовленные операторы и т. Д. Обзор новых функций приведен здесь: http://www.datastax.com/dev/blog/cql-in-cassandra-2-0

удобство

В первые дни Кассандры (0,7) в нашей компании мы использовали собственный Thrift-клиент низкого уровня. Позже мы использовали Hector, Pelops и Astyanax в различных проектах. Могу сказать, что клиенты на основе Java Driver выглядят для меня максимально просто и чисто.

Спектакль

Мы провели некоторое тестирование производительности Cassandra Java Driver и других клиентов. В большинстве сценариев производительность примерно одинакова. Однако существуют определенные ситуации, когда Cassandra Java Driver значительно превосходит других клиентов из-за его асинхронного характера.

Кстати, есть пара связанных вопросов с отличными ответами:

РЕДАКТИРОВАТЬ: Когда я писал это, я не знал, что Ахиллес ( https://github.com/doanduyhai/Achilles), упомянутый в другом ответе, имеет реализацию CQL, которая работает через драйвер Java. Для той же полноты я должен сказать, что DAO Ахилла поверх CQL может быть (или может стать когда-нибудь) жизнеспособной альтернативой обычному CQL через драйвер Java.

@mol

Почему вы ограничиваетесь Hector и cassandra-jdbc, если вы начинаете новый проект?

Есть много других интересных вариантов:

  • Astyanax, как упоминал Мартин (Thrift & CQL3)
  • FireBrand ( Переход через Гектора)
  • Ахиллес, который я только что разработал (CQL3 & Cassandra 2.0 через ядро ​​драйвера Java)
  • Java Driver Core для простого CQL3

Гектор действительно API высокого уровня. Внутренне он будет использовать Thrift API Cassandra для выполнения своих функций. Он не будет конвертировать их в эквивалентные вызовы CQL. Но его API также предоставляет доступ к CQL. В этом случае он передает CQL (через Thrift) в API Cassandra для CQL.

CQL в Cassandra - это язык, похожий на SQL, который работает через API Cassandra. Таким образом, он не предоставляет никаких дополнительных возможностей при использовании Cassandra, чем API, но иногда облегчает его использование. Если вы планируете использовать Гектор, я бы также посмотрел на Asty anax, который является новым подходом к высокоуровневому Java API для Cassandra.

Поскольку вы начинаете новый проект, лучше всего начинать с CQL в качестве собственного драйвера Java:

http://www.datastax.com/documentation/developer/java-driver/1.0/webhelp/index.html

Согласно DataStax, он на 10-15% быстрее, чем Thrift API, поскольку использует двоичный протокол.

Другие вопросы по тегам