当前位置: 首页 > 知识库问答 >
问题:

应用程序引擎数据存储上的Spring SecurityACL

闻人和泽
2023-03-14

我们正在使用SpringSecurityACL基础设施与AppEngine数据存储相结合。我们不使用低级数据存储API,而是使用Objectify框架访问数据存储。我们需要将Spring SecurityACL模型(适用于RDBMS)转换为更适用于无模式面向对象数据存储的模型。到目前为止,我们已经完成了下面描述的两个实体。

国际计算语言学协会

  • id:Long

阿兰特里

  • sid:字符串
  • 负责人:布尔值
  • 掩码:int
  • 批准:布尔

几乎每次ACL都由已知的domainObject(而不是ACL id)检索,因此我们决定使用域对象作为给定ACL的祖先,这样我们就可以使用祖先查询(强一致性)并获取最新数据,这对于ACL来说至关重要

问题是,这样的模型不足以进行诸如“给定用户(sid)可以访问哪些[实体]”之类的查询其中,[实体]可以是任何可用实体,如项目、组等。。。

有人有在非关系型数据库上运行Spring Security ACL的经验吗?任何提示将不胜感激。

共有1个答案

朱俊雅
2023-03-14

一开始你可能会认为我的答案是错误的,但你的问题超出了Spring Security性:你需要改变你的数据处理方法。

如果您使用的是“无SQL”数据存储,那么它是为了允许您的应用程序进行扩展,而不是围绕您的数据构建应用程序。

您需要根据您的用例对您的实体进行建模,而不是将它们紧密地放在为RDBMS构建的框架中。这是性能IMHO的折衷。

如果您不愿意以结构换取性能,这可能意味着您的应用程序更适合Google Cloud SQL:)

但我可能错了:请告诉我们更多关于您的用例的信息?这就是使用“NoSQL”数据库获得有用建议的方式。

 类似资料:
  • 我第一次使用谷歌云环境,特别是谷歌应用程序引擎和数据存储,当我在本地运行时,一切都很好。我正在通过根据文档设置环境变量GOOGLE\u APPLICATION\u凭据来验证数据存储。但一旦我部署到应用程序引擎,请求总是超时,似乎GetAll方法永远不会返回。以下是我的应用程序代码: 应用程序引擎日志中的错误有以下两行: 顺便说一句,这在我的本地服务器上以闪电般的速度完成,并且我的数据存储中只有一条

  • ZtbCMS数据库的存储引擎 ZtbCMS所有表的存储引擎(包括创建模型)默认是: InnoDB [从v3.2.0.0] 考虑到大部分情况下: 对事务需要不高,除了支付,余额统计,收益记录等 查询远大于插入 MyISAM 本身支持FULLTEXT索引,InnoDB直到My SQL 5.6.4才支持 若需要事务需求,请自行对该表的存储引擎改为 InnoDB 阅读参考 MySQL 5.5手册 - 存储

  • 我正在看新的谷歌云数据存储,看起来很棒。但有件事我不明白。。。它应该替代谷歌应用引擎数据存储吗?我如何在GAE内部使用它?它们之间有什么区别? 我在Java有一个GAE应用程序,它使用3个实体,每个实体都有数千行,我需要经常做连接...

  • Blackwidow本质上是基于rocksdb的封装,使本身只支持kv存储的rocksdb能够支持多种数据结构, 目前Blackwidow支持五种数据结构的存储:String结构(实际上就是存储key, value), Hash结构,List结构,Set结构和ZSet结构, 因为Rocksdb的存储方式只有kv一种, 所以上述五种数据结构最终都要落盘到Rocksdb的kv存储方式上,下面我们展示B

  • nemo本质上是对rocksdb的改造和封装,使其支持多数据结构的存储(rocksdb只支持kv存储)。总的来说,nemo支持五种数据结构类型的存储:KV键值对(为了区分,nemo的的键值对结构用大写的“KV”表示)、Hash结构、List结构、Set结构和ZSet结构。因为rocksdb的存储方式只有kv一种结构,所以以上所说的5种数据结构的存储最终都要落盘到rocksdb的kv存储方式上。 1

  • 我有一个导入jar的app引擎app。在那个罐子里,我用的是GoogleClientSecrets。load()以加载client\u机密。用于使用BigQuery进行身份验证的json文件。显然,当我在localhost上部署应用程序时,应用程序引擎不喜欢我从磁盘上的某个位置读取文件。我假设,如果我把凭据放在WEBINF文件夹中,它会工作,但还没有测试,但这样任何人都可以轻松访问该文件。哪里是放