限制客户端的Cassandra查询语法

限制客户端的Cassandra查询语法,cassandra,cassandra-3.0,Cassandra,Cassandra 3.0,我们计划使用Cassandra 3.x,我们希望允许我们的客户直接连接到Cassandra,以便将数据导出到他们的数据仓库中。 它们将通过远程ODBC进行连接 是否有任何方法可以防止客户执行巨大或错误的SELECT语句,从而导致所有节点的高负载?我们在复制策略中使用了一个额外的数据中心,只有客户才能连接,所以实时系统不会受到影响。但是,我们想设置一些工人,将运行在这个影子系统也。最重要的是,连接的远程客户端不会对其他远程连接或本地工人作业产生任何明显的影响。已经有一个物化视图,我想强制客户仅基于

我们计划使用Cassandra 3.x,我们希望允许我们的客户直接连接到Cassandra,以便将数据导出到他们的数据仓库中。 它们将通过远程ODBC进行连接

是否有任何方法可以防止客户执行巨大或错误的
SELECT
语句,从而导致所有节点的高负载?我们在复制策略中使用了一个额外的数据中心,只有客户才能连接,所以实时系统不会受到影响。但是,我们想设置一些工人,将运行在这个影子系统也。最重要的是,连接的远程客户端不会对其他远程连接或本地工人作业产生任何明显的影响。已经有一个物化视图,我想强制客户仅基于主键获取数据(即,不允许使用
允许筛选
)。如果可以限制返回的行数(例如100万行)以防止拉取所有数据,那也太好了

这个用例有最佳实践吗


我知道BlackRocks视频与C*中的多租户策略有关,建议在模式中使用
tenant\u id
。这是我们已经在做的事情,但如何通过ODBC连接的租户/客户确保安全性/隔离性?或者我必须自己编写一个处理安全性的API吗?

我建议通过API公开访问,而不是通过ODBC-至少您可以更好地控制执行的内容,强制执行租户id和其他检查,如限制等。您可以试着利用Cassandra的CQL解析器来分解查询,把所有需要的东西都放回去


例如,理论上,您可以利用。它有可以使用的JDBC驱动程序的实现,另外还有可以修改以完成任务的现有驱动程序(将身份验证映射到租户ID等),但这将是相当多的工作。

我建议通过API公开访问,而不是通过ODBC公开访问-至少您可以更好地控制执行的内容,并强制执行租户id和其他检查。。。但这可能是相当多的工作,但也许你可以利用阿帕奇方解石,或类似的:@AlexOtt很长时间没有你的帖子了,没有新的答案,很遗憾。但由于我认为我的问题与其他用户相关,您是否会如此友好,并根据您的评论作出回答,以便我能够接受?