0

我正在寻找一种策略来在具有数据隔离的客户之间实现共享 RethinkDB 集群。

我希望有多个客户使用共享的 RethinkDB 集群,但我不确定如何强制执行数据分离。客户的请求不可信,但他们应该可以使用 RethinkDB API 完全访问自己的数据。

它看起来像是多租户数据库的经典案例(我不确定),但无论如何我都找不到关于如何使用 RethinkDB 做到这一点的足够信息。

另一个想法:也许我也可以制作一个包装器并在每个表前面加上一个 customerID,但他们能绕过它吗?有没有办法在查询的其余部分做类似的事情r.db('customerID')不能改变?这是否取决于特定的驱动程序?

如何隔离 RethinkDB 中的客户?

注意:我打算使用https://github.com/apa512/clj-rethinkdb以防万一,但我也接受使用 JavaScript 的任何答案。

4

1 回答 1

1

我认为这是一个开放式问题。RethinkDB 身份验证只需要一个 Auth Key。基本上,据我所知,它共享整个服务器数据,甚至跨数据库。

所以,在你的情况下,我认为最好运行多个 docker 来隔离数据。每个客户也有自己的 IP 地址要连接,还有他们自己的身份验证密钥,当然还有他们自己的数据。

也许我也可以制作一个包装器并在每个表前面加上一个 customerID,但他们能绕过它吗

没有什么能阻止这一点,Auth 密钥是为整个集群共享的。

有没有办法做类似 r.db('customerID') 在查询的其余部分中无法更改的事情

不确定,但我认为目前不可能。

看起来使用单独的 RethinkDB 实例,使用像 Docker 这样的解决方案,是要走的路。

当您创建一个新客户时,您将启动一个 RethinkDB docker 容器,将 RethinkDB 端口映射到主机上可用的随机端口。并将这些主机:端口 URI 字符串提供给客户。

您可能想在 compose.io、redistogo.com 上注册一个帐户并尝试猜测他们是如何做到的,因为他们的每个客户都有自己的数据。我认为它们与您的情况非常相似。

于 2015-08-30T10:28:39.453 回答