java - Cassandra Session vs Cluster 分享什么?

标签 java session cassandra

思考 Cassandra 的 Session 和 Cluster 类(Java 驱动程序)我想知道有什么区别。在 Hibernate 中,每次都创建一个 session 并共享 session 工厂。

我从许多来源了解到,它被认为是创建一个 session 并在多个线程之间共享它。

我确实觉得这有点古怪。我本以为我会为每个线程或正在进行的操作/任务创建一个 session 。

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

最佳答案

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

在 Cassandra 中,实际上并没有跨多个调用的事务上下文,因此一旦连接到 keyspacesession 就可以共享并且不需要重新已确立的。此外,驱动程序已经处理了重新连接和连接池,因此 session 不依赖于连接。

最后,针对 session 准备的语句被缓存,重新创​​建 session 效率低下并且必须不断地重新准备语句。

关于java - Cassandra Session vs Cluster 分享什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29971005/

相关文章:

java - ORA-56721 : I/O data limit exceeded - session terminated

java - SQL命令如何将值附加(插入)到数据库中

java - 任何用于 swing 的表单生成器(来自带注释的 javabean)?

java - 随机生成整数,不重复,无数组

Django 用户已注销

Symfony 3 跨子域共享 cookie?

android - 如何避免按后退按钮/键返回登录布局?

cassandra - order by 子句在 Cassandra 查询中不起作用

java - Cassandra 数据库 : Parsing an Instant from Cassandra's Timestamp in Json fails

c++ - 在 MATLAB MEX 函数中链接 Cassandra/C++ 驱动程序库