EntityStore 系统限制说明

概述

EntityStore 作为 UModel 系统的数据存储引擎,具有一定的容量和性能限制。了解这些限制对于合理使用 EntityStore、避免性能问题和数据丢失至关重要。

应用案例

当前应用案例相关素材,请参考:umodel.zip

容量限制

EntityStore 的容量限制直接影响数据存储规模,超出限制时系统会采用相应的处理策略。

限制项目

上限值

超出行为

是否可调整

使用建议

实体总数

100

无法新增实体

暂不支持

设计合理的 EntitySet,避免单一类型实体过多,如果实体变化频繁,可以考虑使用动态实体或不建模成实体。

边总数

1000

无法新增边

暂不支持

合理设计关系结构,避免冗余边,如果关系变化频繁,可以考虑使用动态关系或不建模成关系。

单一类型实体总数

10

无法新增实体

暂不支持

控制单一类型实体数量,避免单一类型实体过多。

单一类型边总数

100

无法新增实体

暂不支持

避免创建过多同类型关系

单一实体大小

64KB

自动截断处理

暂不支持

避免存储大文本数据(如 Markdown、HTML)

性能限制

EntityStore 的性能限制影响数据读写的吞吐量和响应时间。

限制项目

限制值

超出行为

是否可调整

使用建议

写入QPS

1QPS

Best Effort 处理,超出后实体索引构建延迟,影响查询实时性

建议增量写入,定期写入周期不低于10分钟

查询并发

10并发

返回查询失败

缩小查询时间区间、使用精确的过滤条件和 Limit 参数;EntityStore 作为元数据系统,不建议用于支持告警等高频查询场景

实体查询扫描上限

100万条

扫描终止,按照当前扫描的结果计算,返回 PartialSuccess

尽量使用 Limit 限制输出数量

实体查询输出上限

10万条

只返回前10万条,同时返回 PartialSuccess

尽量使用 Limit 限制输出数量

关系查询扫描上限

100万条

扫描终止,按照当前扫描的结果计算,返回 PartialSuccess

尽量使用 Limit 限制输出数量

关系查询输出上限

1万条

只返回前1万条,同时返回 PartialSuccess

尽量使用 Limit 限制输出数量

查询输出带宽

20M/s

Best Effort 处理

避免大量数据传输,不建议用于数据导出

最佳实践建议

容量管理

  1. 监控容量使用:定期检查实体和边的数量,提前预警。

  2. 数据清理策略:建立定期清理历史数据的机制。

  3. 分类设计:合理设计实体类型,避免单一类型过多。

性能优化

  1. 批量操作:尽量使用批量写入,减少请求频率。

  2. 分散请求:避免在整点等时间集中发送请求。

  3. 查询优化:使用合适的过滤条件和Limit参数。

  4. 增量更新:采用增量写入方式,避免全量更新。

错误处理

  1. 限制监控:监控容量和性能限制的触发情况。

  2. 降级策略:设计服务降级方案,应对限制触发。

  3. 数据备份:重要数据需要在其他存储系统中备份。

常见问题

Q: 如何提升查询QPS?

A: 可以通过缓存查询结果、减少查询频率、缩小查询时间区间、使用精确的过滤条件和Limit参数。

Q: 实体大小限制包括哪些数据?

A: 包括实体的所有字段数据,如属性值、元数据等的总和。不包括关系数据。