【问题标题】:how should I implement data access/rights management in Cassandra我应该如何在 Cassandra 中实现数据访问/权限管理
【发布时间】:2019-12-08 15:48:11
【问题描述】:

我正在制作一个 SaaS 应用程序,用户将在其中创建广告列表。

  1. 我的注册用户以及未注册访问者的所有用户都应该可以看到所有广告
  2. 只有注册用户才能制作广告
  3. 注册用户可以创建多个广告
  4. 只有创建广告的用户才能删除或编辑它。

我从来没有做过用户和数据管理w.r.t。一个数据库,所以我需要关于如何实施它的建议(我承认这是一个悬而未决的问题,但我仍然觉得它与我还能问的其他地方相关!!)

我的数据库是cassandra

  • 我正在考虑为所有广告使用一个键空间 到地址 #1
  • 我正在考虑为 将存储其广告的每个用户(点#2,点#3 和第 4 点)。
  • 如果用户编辑/删除广告,则 用户特定的键空间和所有广告的全局键空间 需要改变

问题 1 - 我的方法是创建此类应用程序的常用方法吗?如果没有,我将不胜感激有关替代设计的建议。

问题 2 - 由于我将创建用户特定的密钥空间,我能否以编程方式创建密钥空间(使用用户提供的用户名和密码)作为我的网络注册过程的一部分?

【问题讨论】:

    标签: cassandra data-modeling


    【解决方案1】:

    在 Cassandra 中拥有每个用户的密钥空间并不是一个好主意,这只有在您有几个用户时才有效。单独的键空间意味着您正在为每个用户创建一个单独的表,因此它与第 1 点相矛盾 - 显示您需要从所有表中读取的所有广告。而且 Cassandra 对它可以支持的表数量也有限制 - 建议的值是集群中不超过 500 个表(有关更多详细信息,请参阅this answer)。

    我建议仅将用户 ID 作为分区键或分区键本身的一部分 - 但这将取决于其他因素,例如用户可以创建多少广告等 - 这需要一个单独的问题。

    我建议在DataStax Academy 参加有关 Cassandra 数据建模的 DS220 课程,以便更好地了解如何为 Cassandra 建模数据。

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      相关资源
      最近更新 更多