Cassandra - 如何管理会话

Ser*_*scu 3 cassandra

我是新来的Cassandra,想请教你一些事情。我有一些事件,对于每个事件,应用程序都会使用一些与此类似的代码进行响应:

 Cluster cluster = Cluster.builder().addContactPoint(CONTACT_POINT).build();;
    Session session = cluster.connect(KEYSPACE);

    Statement statement = QueryBuilder.update(KEYSPACE, TABLE_NAME)
            .with(set(STATE_COLUMN, status.toString()))
            .and(set(PERCENT_DONE_COLUMN, percentDone))
            .where(eq(FILE_ID_COLUMN, id));
    //or whatever query I might have

    session.execute(statement);

    cluster.close();
Run Code Online (Sandbox Code Playgroud)

我的问题是这样的:

每次都调用cluster.connect()and更好,还是在应用程序启动时调用一次更好?cluster.close()cluster.connect()

谢谢

Jim*_*yer 6

Cassandra 中的连接被设计为持久性的,因此不应为每个 CQL 语句打开和关闭它们。设置连接有点昂贵,因为它创建线程池并从集群获取大量元数据。

您希望在应用程序启动时建立一次连接,并在应用程序关闭时关闭它。如果您的应用程序中有多个线程,您通常希望它们都共享一个连接。