我正在开发一种医疗软件,我的目标是将大量自定义操作存储到数据库中。因为跟踪谁做了什么非常重要,所以每次用户做一些有意义的事情(例如写评论、添加一些医疗信息等)时都会产生一个动作。现在的问题是随着时间的推移会有很多动作,假设每个患者有 10000 个,可能有 50000 个患者,总共有 5 亿个动作(甚至更多)。
当前数据库模型看起来像这样:
[Patient] 1 -- 1 [ActionBlob]
因此,每个患者都只有一个大 blob,其中包含所有动作作为大序列化字节数组。当然,当表变大时,这将不起作用,因为我必须一直在数据库和客户端之间来回传输整个字节数组。
我的下一个想法是列出单独序列化的动作(不是大块),即
[Patient] 1 -- * [Action]
但我开始怀疑这是否是一个好方法。现在,当我添加新动作时,我不必序列化所有其他动作并将它们传输到数据库,而只需序列化一个动作并将其添加到 Actions 表中。但是加载数据怎么样,因为一张表可能有 5 亿行,它会超慢吗?
所以基本上问题是:
- sql server 可以处理从 5 亿行的表中加载 10000 行吗?(这些数字可能更大)
- 实体框架可以处理 10000 个实体的具体化而不会很慢吗?