Есть четыре API высокого уровня для доступа к Cassandra, и у меня нет времени попробовать их всех. Поэтому я надеялся найти кого-то, кто мог бы помочь мне выбрать правильный.
Я попытаюсь записать свои выводы о них:
DataNucleus-Cassandra-Plugin
плюсы:
- поддерживает JPA1, JPA2, JDO1 - JDO3 - как я читал в обзоре, JDO масштабируется лучше, чем Hibernate с JPA
- все плюсы, упомянутые в kundera?
минусы:
- нет опыта с JDO до сих пор (актуально только для меня, конечно;)
- документация не найдена!
Кундера
плюсы:
- JPA 1.0 аннотации со всеми преимуществами (стандартное соответствие, без кода шаблона,...)
- обещание следующих функций в ближайшем будущем: слушатели JPA, @PrePersist @PostPersist и т.д. - Отношения, @OneToMany, @ManyToMany и т.д. - Транзакционная поддержка, @Transactional
минусы:
- ранняя стадия разработки плагина?
- ошибки?
- Невозможно устранить проблемы в рамках JDO/JPA?
s7 пелеты
плюсы:
- чистый java api → более тонкий контроль над сохранением?
минусы:
- чистый java api → шаблонный код
hector 0.7
плюсы:
- mavenized
- spring интеграция → инъекция зависимостей
- чистый java api → более тонкий контроль над сохранением?
- Мониторинг jmx?
- Управление узлами кажется простым и гибким.
минусы:
- чистый java api (без аннотаций) → код плиты котла
Заключение пока
Как я уверен в RDMS, Hibernate, JPA, Spring и не так уж в курсе событий с EJB, мое первое впечатление было, что пойти на kundera было бы правильным выбором. Но после прочтения некоторых сообщений относительно JPO, DataNucleus, я уже не уверен. Поскольку кривая обучения должна быть крутой (также для опытных разработчиков JPA?) Для DataNucleus, я не уверен, должен ли я ее использовать.
Моя главная проблема - это статус плагина. Насколько я понял, форум поддержки/помощи для JDO и Datanucleus-Cassandra-Plugin, поскольку он не так широко распространен.
Кто-нибудь есть, кто уже имеет опыт, с некоторыми фреймворками уже и может дать мне подсказку? Может быть, и смешанная стратегия будет иметь смысл. В случаях (если они существуют) JDO не является гибким/достаточным/все, что достаточно для моих потребностей, чтобы вернуться к одному из более простых API-панелей или певцов? Это возможно? Есть ли такой подход, как в JPA, чтобы получить соединение sql и получить/поместить данные?
После прочтения немного я нашел следующую дополнительную информацию:
Datanucleus-Cassandra-Plugin основан на пелетах, к которым также можно получить доступ для большей гибкости, большей производительности (?), которые должны использоваться в семействах столбцов с большим количеством данных, доступ JDO/JPA должен быть только используется для "административных" данных, где производительность не так важна, а количество данных не является ошеломляющим.
Которая все еще оставляет вопрос открытым, чтобы начать с hector или pelops.
для него более поздняя расширяемость Datanucleus-Cassandra-Plugin или hector для этого более достаточной поддержки на node hanldling.