0

在 Spring Data - Cassandra (SDC) 中,我想重用相同的 DataStax 驱动程序会话,但根据当前访问 Cassandra 的租户(在多租户 SaaS 模型中)访问不同的 Keyspace。也就是说,在我的研究中,添加键空间以进行完全限定的查询是实现此目的的首选方法。

SDC 有钩子可以做到这一点吗?我正在寻找类似于 Hibernate 的多租户支持的东西。在 Hibernate 中,它可以重用相同的连接池。该应用程序提供了一种方法来告诉 Hibernate 哪个租户在当前上下文中,并且可以控制 Hibernate 的 Session 连接方式 - 通过在 JDBC 连接上调用“SET SCHEMA 'foo_tenant_schema'”或其他方式,可能为每个租户提供不同的模式。

如果没有,我需要自己写。没关系。我想我会加载一个“tenantID-to-keyspace”的地图,并以某种方式动态地附加它以进行完全合格的调用。我不确定这将如何影响 DataStax 会话的 PreparedStatements 等。

如果对更好的方法有任何想法,请告诉。

4

1 回答 1

1

您绝对可以按照您的方式进行操作,另一种选择是在执行实际查询之前执行以下操作。

cassandraTemplate.execute("use " + keySpaceName + ";");

您也可以将上述查询与您的实际查询批量组合。这样您就不需要在现有查询中附加任何内容。这里的假设是所有的键空间都在同一个集群上。

于 2015-07-20T12:21:50.927 回答