【发布时间】:2018-06-05 16:21:46
【问题描述】:
我们计划使用 Cassandra 3.x,并希望允许我们的客户直接连接到 Cassandra 以将数据导出到他们的数据仓库中。 他们将从远程通过 ODBC 连接。
有什么方法可以防止客户执行大量或错误的SELECT 语句,这将导致所有节点的高负载?我们在复制策略中使用了一个额外的数据中心,只有客户可以连接,因此实时系统不会受到影响。但我们也想设置一些将在这个 shadow 系统上运行的工作人员。最重要的是,连接的远程客户端不会对其他远程连接或我们的本地工作人员工作产生任何明显影响。已经有一个物化视图,我想强制客户仅基于主键获取数据(即不允许使用ALLOW FILTERING)。如果可以限制返回的行数(例如 100 万行)以防止提取所有数据,那也很棒。
此用例是否有最佳实践?
我知道与 C* 中的多租户策略相关的 BlackRocks 视频,该视频建议在架构中使用 tenant_id。这就是我们已经在做的事情,但是如何通过 ODBC 连接的租户/客户确保安全/隔离?还是我必须自己编写一个 API 来处理安全性?
【问题讨论】:
-
我建议通过 API 而不是通过 ODBC 公开访问权限 - 至少您可以更好地控制执行的内容,并强制执行tenant_id 和其他检查...但这可能会很多工作,但也许你可以使用 Apache Calcite,或者类似的东西:calcite.apache.org/docs/cassandra_adapter.html
-
@AlexOtt 很遗憾,您的帖子已经很久没有新答案了。但由于我认为我的问题与其他用户相关,您会这么好心并根据您的评论做出回答,以便我接受吗?