Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra作为基于角色的访问控制系统的数据库_Cassandra - Fatal编程技术网

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

Cassandra作为基于角色的访问控制系统的数据库,cassandra,Cassandra,我想知道您对使用Cassandra实现 类似RBAC的身份验证和授权模型。我们简化了程序 一般模型的中心关系 (http://en.wikipedia.org/wiki/Role-based_access_control)致: 用户--n:m--角色--n:m--资源 用户和资源使用外部可见的标识符编制索引。 这些标识符也需要“可重新拥有”(想想:邮件别名) P>考虑卡桑德拉的主要原因是可用性、可伸缩性。 和(全球)地理冗余。使用RBDM很难实现这一点 另一方面,RBAC有许多m:n关系。而一

我想知道您对使用Cassandra实现 类似RBAC的身份验证和授权模型。我们简化了程序 一般模型的中心关系 (http://en.wikipedia.org/wiki/Role-based_access_control)致:

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

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

<> P>考虑卡桑德拉的主要原因是可用性、可伸缩性。 和(全球)地理冗余。使用RBDM很难实现这一点

另一方面,RBAC有许多m:n关系。而一些 不一致可能是可以接受的,资源所有权(即角色=所有者) 绝不能把事情搞混

你觉得怎么样?对于Cassandra来说,这种关系模型是一种反模式吗
用法?你知道基于卡桑德拉的类似解决方案吗?

我将继续,把我的评论变成一个答案,这样它们就在一个地方

虽然您有一个庞大的数据集,需要管理100000000个帐户(如果我读得正确的话),但您也有一个限制,即需要强制执行某种级别的一致性,以确保特定关系永远不会失去同步。您还需要执行大量一对多关系(资源-->用户或上面的m:n)。此外,听起来您从数据集中读取的数据要多于向数据集中写入的数据。随后,我认为带有热备份的RDBMS将比定制Cassandra部署更好地解决您的问题。 这背后的原因是:

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

  • 一致性——卡桑德拉最终是一致的,这在处理大多数类型的数据时都很好,IMHO。然而,在处理诸如安全性之类的问题时,需要始终保持一致性,RDBMS(复数?)在事务中具有显著优势,可以确保您的数据始终保持同步。从安全角度来看,我认为这是很重要的

  • 读取速度——在RDBMS中使用索引将显著加快DB的读取速度,所以在您能够根据经验确定这将是一个显著的瓶颈之前,我不会将其作为驱动决策因素。Cassandra的仲裁读取模型在某些方面可能会慢一些,因为您必须在N台机器(其中N>=1)上等待返回一个答案,如果答案不同步,则需要更正该答案

  • 冗余——带有热备份(主复制)的RDBMS可以解决冗余问题

  • Cassandra是一个很棒的工具,我喜欢使用,但是,在这种情况下,我认为您的模型使用RDBMS比使用Cassandra更有效


    祝你好运

    在评估Cassandra时,在进入RDBMS和NoSQL之前,首先想到两个问题。1) 您将要处理多大的数据集?2) 向其中添加数据的频率和速度如何?例如,您从1TB数据集开始,每天将添加10GB数据。如果您的数据集较小,并且不会增长太多,我认为RDBMS将为m:n关系提供更强大的功能,而无需做额外的工作。如果您没有大量的写入操作,我会倾向于使用带有热备份的RDBMS来实现安全性。原因是,您可以使用索引来加速RDBMS中的读取,并且您将能够处理m:n关系,而无需编写大量列族代码来处理所有这些关系。您还将确保没有不一致的情况——我认为在实现安全体系结构时,您可能需要这样做。大约100.000.000个帐户。虽然写负载不重,但很多readsI都有一个重要的要求:全局地理冗余。Cassandra支持开箱即用,使用RDBMS的多主机也会出现诸如丢失更新或混合更新之类的问题。没错,但是使用Cassandra仍然会丢失数据。如果部分仲裁写入失败,则整个写入失败。使用RDBMS,即使更新失败,您仍然至少在一个位置拥有数据。请参阅PG wiki,了解有关集群postgres的更多详细信息,作为扩展RDBMS的一个示例:@FloppyDisk当您在Cassandra中的写入一致性级别无法满足要求时(即,如果您请求的是节点仲裁,您没有收到响应),客户端会收到一个异常,让他们知道发生了什么。对于Cassandra,写操作可以是幂等的,因此您可以安全地重试写操作,直到成功为止,而无需担心会覆盖新的更改。不涉及数据丢失。