Cassandra作为基于角色的访问控制系统的数据库

时间:2012-03-19 10:28:03

标签: cassandra

我想知道您对使用Cassandra实现的看法 RBAC类认证&授权模型。我们简化了 一般模型的中心关系 (http://en.wikipedia.org/wiki/Role-based_access_control):

用户--- n:m ---角色--- n:m ---资源

用户和资源使用外部可见标识符编制索引。 这些标识符需要“可重新拥有”(想想:邮件别名)。

考虑Cassandra的主要原因是可用性,可扩展性 和(全球)地理冗余。使用RBDMS很难实现这一点。

另一方面,RBAC有很多m:n关系。有些人 不一致可能是可接受的,资源所有权(即角色=所有者) 永远不要混淆。

你怎么看?这种关系模型是Cassandra的反模式吗? 用法?你知道基于Cassandra的类似解决方案吗?

1 个答案:

答案 0 :(得分:4)

我将继续将我的评论转化为答案,以便他们在一个地方。

虽然你有一个庞大的探测数据集,如果我正确读取了100,000,000个帐户,你还需要强制执行某种程度的一致性以确保特定关系永远不会失去同步。您还需要强制实施许多一对多关系(资源 - >用户或m:n)。此外,听起来您将从数据集中读取而不是写入数据集。随后,我认为带有热备份的RDBMS可以比自定义的Cassandra部署更好地解决您的问题。 这背后的原因是:

  1. RDBMS中的一对多关系可以表示为跨表连接的SQL语句,您只需将数据存储一次。在Cassandra中,根据设置,您必须在多个位置存储相同的信息以正确反映关系。这将导致相当混乱和冗余的数据模型。

  2. 一致性 - Cassandra最终是一致的,在处理大多数类型的数据时都很好,恕我直言。但是,当处理安全性等问题时,RDBMSes(复数?)在交易中具有显着的优势,可以确保您的数据始终保持同步。从安全角度来看,我认为有些重要。

  3. 读取速度 - 在RDBMS中使用索引将显着加快数据库的读取速度,因此在经验确定将成为重大瓶颈之前,我不会将此作为决策因素。 Cassandra的仲裁阅读模型在某些方面可能会变慢,因为您必须等待N台机器(其中N> = 1)才能返回答案并在答案不正确时更正答案。

  4. 冗余 - 带有热备份(主 - 主复制)的RDBMS可以解决冗余问题。

  5. Cassandra是一个很棒的工具,我喜欢使用,但是,在这种情况下,我认为你的模型在使用RDBMS时比使用Cassandra更好。

    祝你好运!