1

Я ищу путь миграции для Java-проекта, который использует Apache Cassandra 2.2 для Oracle Coherence 12 - и Oracle 12 backend. Существующее приложение использует CQL для взаимодействия с кластером Cassandra с тремя узлами. Elswhere мы специально не используем ORM (например, Hibernate/JPA), но используем JDBC для непосредственного взаимодействия с базой данных.Перенос с Apache Cassandra 2.2 в Oracle Coherence Oracle 12

Да, Cassandra является бесплатным, а решение Oracle довольно дорого, но это выходит за рамки этого вопроса.

Любые технические предложения приветствуются.

ответ

2

У вас есть несколько вариантов в зависимости от вашего варианта использования.

  1. Если вы используете SQL, чтобы взаимодействовать с Кассандрой для стандартных запросов взаимодействия/реагирования и необходимо перенести его на использование Oracle DB, который потребует наименьших изменений кода и до сих пор используют стандартный подход будет использовать Object Relational Mapping (ORM), например Hibernate/JPA, и использовать Coherence as the L2 cache (лично мне нравится MyBatis, так как у вас есть полный контроль над кодом SQL. Возможно, вы сможете использовать этот Coherence integration with MyBatis).

  2. Если у вас есть другие приложения/операторы, которые обновляют базу данных напрямую, и эти изменения должны быть доступны для вашего приложения, тогда вам нужно будет реализовать CacheStore (используйте, если хотите, свой любимый ORM), чтобы сохранить обновления базы данных и использовать Oracle Golden Gate Hotcache feature, чтобы выталкивать обновления, сделанные в базу данных вне вашего приложения, для обеспечения согласованности. Вам нужно будет изменить ваше приложение, чтобы взаимодействовать с Coherence напрямую, используя либо интерфейс их карты, либо используя язык запросов Coherence Query (CQL), который является «похожим на SQL». Этот подход будет иметь дополнительное преимущество в том, что он сможет поддерживать любые асинхронные варианты использования, которые могут быть у вас, поскольку API Coherence поддерживает прослушивание изменений в кеше (с использованием MapListeners), аналогичное исполнению Cassandra's executeAsync.

Надеюсь, это поможет.

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