Spring中的模式动态地将Keyspace附加到表中?

时间:2015-05-21 16:30:27

标签: spring spring-data datastax-java-driver spring-data-cassandra

在Spring Data - Cassandra(SDC)中,我想重用相同的DataStax驱动程序会话,但访问不同的Keyspace,具体取决于哪个租户(在多租户SaaS模型中)正在访问Cassandra。也就是说,在我的研究中,添加密钥空间来进行完全限定的查询是实现这一目标的首选方法。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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