【发布时间】:2021-03-17 07:00:08
【问题描述】:
当前的 Riak 2.0 API 在存储桶之前带有类型,因此很难在多租户环境中使用,这意味着多个应用程序访问同一个数据库,其他数据库通过命名空间允许这样做,例如是 Google App Engine 数据存储区,其中每个命名空间彼此完全隔离。
拥有多租户 Riak KV 的最佳解决方法是什么?
【问题讨论】:
当前的 Riak 2.0 API 在存储桶之前带有类型,因此很难在多租户环境中使用,这意味着多个应用程序访问同一个数据库,其他数据库通过命名空间允许这样做,例如是 Google App Engine 数据存储区,其中每个命名空间彼此完全隔离。
拥有多租户 Riak KV 的最佳解决方法是什么?
【问题讨论】:
我建议使用存储桶类型作为附加命名空间https://www.tiot.jp/riak-docs/riak/kv/2.2.6/using/reference/bucket-types/#buckets-as-namespaces,因为这将允许您为每个租户提供命名空间存储桶类型,然后他们可以在该存储桶类型命名空间内创建存储桶和键。
为避免人们在桶类型上钓鱼以查看他们是否可以访问不同租户的数据,然后您可以通过创建用户并按桶或桶类型授予独占权限来扩展它https://www.tiot.jp/riak-docs/riak/kv/2.2.6/using/security/basics/#managing-permissions
同时使用这两个功能应该允许在同一个 Riak KV 实例中实现多租户环境。
【讨论】:
Location key1 = new Location(new Namespace("appId:type1", "appId:my_bucket"), "my_key"); 还是不需要前缀?
sports、存储桶nba 和键champion,那么您可以使用curl -i http://localhost:8098/types/sports/buckets/nba/keys/champion 进行查询,或者以您的示例格式curl -i http://localhost:8098/types/type1/buckets/my_bucket/keys/my_key跨度>