我正在寻找具有以下功能的“实体管理器”(见列表)。
我觉得奇怪的是,有这么多软件项目的核心是 UI 和业务规则,而不是聪明的实体管理,但我还没有看到一个单一的实体管理系统是“标准”。
哦,我见过一些,但没有一个接近下面的功能列表。最值得注意的是,核心经常缺少级联和验证,水平缩放和缓存失效通常作为“学生练习”而图表性质通常受限于父/子,或者,如果幸运的话,受限于 DAG (有向无环图)。
我缺少什么聪明的东西吗?还是我注定要自己写这个东西——就像其他人一样(并且可能因为时间限制而满足于不太理想的状态)?
以下是功能列表,至少在我看来,这些功能必须融入实体管理的“核心”才能真正正常工作:
- 基于图:关系是第一级公民,两个节点之间的多重关系(标记图),可以计算生成树和闭包。
- 数据库绑定 - 或者更确切地说,不是内存绑定。可以在内存中保存缓存,但必须能够轻松包含 100m 实体和关系。
- 水平扩展——这意味着它知道如何从多个应用服务器访问数据库、使用锁定(乐观或悲观)并使来自另一个应用服务器的更新缓存无效。
- 支持事务性工作 - 通过在内存或数据库中收集事务。
- 在单个事务的范围内支持可插入的业务规则级联(例如,如果 A 已更改,则 B 也必须更改)
- 支持可插入验证(例如,如果 B 存在,则不能删除 A)。
- 支持可插拔授权(例如用户U1不能改变A/用户U1不能改变A,因为这会导致B改变[级联]而用户U1不能改变B)。
- 发出更改事件/维护更改日志(例如,可以在更改后启动工作流)。
- 元数据(如果存在)应该可以通过“数据”而不是代码进行配置。
- 无需停机升级(“云就绪”,对吗?)
- 纯Java。