考虑Cassandra的Session和Cluster类(Java驱动程序)我想知道它们的区别。在Hibernate中,每次都会创建一个会话并共享会话工厂。
从许多来源我了解到它被认为是创建一个会话并在许多线程中共享它。
我觉得这有点好奇。我原以为我会为每个线程或正在进行的操作/任务创建一个会话。
答案 0 :(得分:2)
在传统的RDBMS中,会话通常是指事务上下文,许多实现都不是线程安全的。同时,会话通常在某种连接池之上实现,并且连接的终止(通过错误)也会终止会话。
在Cassandra中,多次调用并不存在事务性上下文,因此一旦连接到keyspace
,会话就可以共享,并且不需要重新启动-established。此外,驱动程序已经处理了重新连接和连接池,因此 session 不依赖于连接。
最后,针对会话准备的语句被缓存,重新创建会话并且不得不经常重新准备语句是低效的。