前言
驱动程序采用的是
1 | <dependency> |
默认创建
默认情况下,session是没有指向任何的keyspace。当我们在查询的时候需要指定keyspace前缀
1 | Session session = cluster.connect(); |
这里就指定keyspace为system,查询的表为local
指定keyspace创建
还有一种方法在创建session时指定keyspace,如下
1 | Session session = cluster.connect("system"); |
在创建session的时候指定了keyspace,然后在执行查询语句的时候就可以不用写前缀。但是如果要查其他keyspace里面的数据的时候就不得不带上前缀。
也许你想过动态的创建session,每个keyspace一个session,可以,demo如下:
1 | Session session1 = cluster.connect("ks1"); |
这种方式不是不行,但是需要注意的是,连接池是在session级别上建立的,每创建一个session将会额外的消耗一部分系统资源。
而且,由官网介绍,在使用命名的session时,在某些情况可能会导致意外的线程阻塞问题。
如果采用的是全异步模式,建议使用没有keyspace的命名空间。
注:如果使用use来改变keyspace,这将会改变session的默认的keyspace。那么多如果是在多线程共享的情况下,某一个线程突然改变了keyspace,这将会导致其他线程出现问题
总结
通过上面的了解,建议采用单个session,不使用keyspace命名,在查询的时候手动指定keyspace前缀