我正在为使用 Apache Cassandra 2.2 到 Oracle Coherence 12 和 Oracle 12 后端的基于 Java 的项目寻找迁移路径。现有应用程序使用 CQL 与 3 节点 Cassandra 集群进行交互。在其他地方,我们特别不使用任何 ORM(例如 Hibernate/JPA),而是使用 JDBC 直接与数据库交互。
是的,Cassandra 是免费的,而 Oracle 解决方案非常昂贵,但这超出了这个问题的范围。
欢迎任何技术建议。
我正在为使用 Apache Cassandra 2.2 到 Oracle Coherence 12 和 Oracle 12 后端的基于 Java 的项目寻找迁移路径。现有应用程序使用 CQL 与 3 节点 Cassandra 集群进行交互。在其他地方,我们特别不使用任何 ORM(例如 Hibernate/JPA),而是使用 JDBC 直接与数据库交互。
是的,Cassandra 是免费的,而 Oracle 解决方案非常昂贵,但这超出了这个问题的范围。
欢迎任何技术建议。
根据您的用例,您有几个选项。
如果您使用 SQL 与 Cassandra 进行交互以进行标准请求/响应交互,并且需要将其迁移以使用 Oracle DB,这将需要最少的代码更改并且仍然使用标准方法是使用对象关系映射 (ORM) 工具像 Hibernate/JPA 并使用Coherence 作为 L2 缓存(我个人喜欢 MyBatis,因为您可以完全控制 SQL 代码。您可以使用这种与 MyBatis 的 Coherence 集成)。
如果您有其他应用程序/操作用户直接更新数据库并且需要这些更改对您的应用程序可用,那么您将需要实现一个CacheStore(如果您愿意,可以在此处使用您最喜欢的 ORM)来保存对数据库的更新并使用Oracle Golden Gate Hotcache 功能可将应用程序外部数据库的更新推送到 Coherence。您的应用程序将需要更改为直接使用其 Map 接口或使用“类似 SQL”的 Coherence 查询语言 (CQL) 与 Coherence 交互。这种方法还有一个额外的优势,即能够支持您可能拥有的任何异步用例,因为 Coherence API 支持侦听缓存更改(使用 MapListeners),类似于 Cassandra 的 executeAsync。
我希望这有帮助。