实现nebula客户端的连接池功能,在多个图空间一起共用的场景下,use space放在连接初始化的时候,切换不同的库时需要重新use space,有没有好的方案
每个链接固定使用不同的space
可以为每个 space 创建一个连接池
如何每个 space 创建一个连接池那要维护很多连接池,能否像mysql一样,在ngql里面指定具体的空间,类似数据库名.表名这种方式
您好,这个没有更好的方案了,因为我们的client session设计如此,2.0我们在重写client,应该就能方便很多
@715168372 你可以自己建立一个 map 保存 space和sessions 的对应关系,session 不要进行signout释放,space的信息是在的。然后你要操作对应的space,你就从来里面拿相应是session就好。
1 个赞
用python客户端,每次get_session,要先认证,再use space,然后才是用户的query。
一个查询要3次通信,这设计不太对吧,认证信息和space应该缓存在连接里吧,已经认证过的就别再发起一次通信了
我提个建议哈,把认证信息、use space在connection一层存住,不改变,不发送。
这样用户每次with一个新的session来用,session很轻量,就不必考虑多线程的问题了。
按照现状,session很重,需要自己处理缓存:一个线程拿到session后,存在thread-local变量,后面复用,这样可以吧?
你前面说的没太看明白,按你的想法,多个 session 同时使用一个 connection 么?
因为 connection 的 tcp 通信,不能多线程并发使用一个 connection,所以我们现在一个 session 绑了一个 connection。