Cassandra Session vs Cluster要分享什么?

时间:2015-04-30 14:54:46

标签: java session cassandra

考虑Cassandra的Session和Cluster类(Java驱动程序)我想知道它们的区别。在Hibernate中,每次都会创建一个会话并共享会话工厂。

从许多来源我了解到它被认为是创建一个会话并在许多线程中共享它。

我觉得这有点好奇。我原以为我会为每个线程或正在进行的操作/任务创建一个会话。

  • 这样做有问题吗?
  • 性能影响是什么?会话是线程安全的吗?
  • 我是否在更大的结果集上遇到游标问题(或cassandra没有游标吗?)
  • 假设Session是线程安全的还是我应该注意的边缘情况,是否安全?

1 个答案:

答案 0 :(得分:2)

在传统的RDBMS中,会话通常是指事务上下文,许多实现都不是线程安全的。同时,会话通常在某种连接池之上实现,并且连接的终止(通过错误)也会终止会话。

在Cassandra中,多次调用并不存在事务性上下文,因此一旦连接到keyspace会话就可以共享,并且不需要重新启动-established。此外,驱动程序已经处理了重新连接和连接池,因此 session 不依赖于连接。

最后,针对会话准备的语句被缓存,重新创​​建会话并且不得不经常重新准备语句是低效的。