【问题标题】:Using Riak KV for Multitenant Applications将 Riak KV 用于多租户应用程序
【发布时间】:2021-03-17 07:00:08
【问题描述】:

当前的 Riak 2.0 API 在存储桶之前带有类型,因此很难在多租户环境中使用,这意味着多个应用程序访问同一个数据库,其他数据库通过命名空间允许这样做,例如是 Google App Engine 数据存储区,其中每个命名空间彼此完全隔离。

拥有多租户 Riak KV 的最佳解决方法是什么?

【问题讨论】:

    标签: database riak


    【解决方案1】:

    我建议使用存储桶类型作为附加命名空间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跨度>
    猜你喜欢
    • 2021-06-14
    • 2013-12-23
    • 1970-01-01
    • 2018-08-29
    • 2011-05-05
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多