有一棵对象树:
网页提供了用于创建TypeA
对象的表单。填写表单时,用户还选择应生成TypeB
个对象并将其附加到父TypeA
对象。对于TypeC
的对象也是如此。
例如,用户创建一个公司(TypeA
对象),选择创建100个员工(typeB
对象)在其中工作,每个员工都有一个 unique 技能(TypeC
对象)。
创建TypeA
对象时,会生成许多TypeB
对象。该数字可以是1到100000。每个TypeC
对象也有1到25 TypeB
个对象。添加单个TypeA
对象后,数十万条记录可以添加到数据库中,而系统中还有其他用户可以创建数千个自己的TypeA
对象。
如何有效地存储和检索此类数据?
将每个对象存储在数据库中。 优势:易于访问和 代码维护。 缺点:数据库表已满 不久,在数据库存储上的巨额支出。
仅将TypeA
个对象存储在数据库中。 TypeB
对象及其子对象的集合存储为JSON字符串。 优势:
数据库中的记录更少。 缺点:JSON解析时间和问题
TypeB
或TypeC
更改时。
将每个对象存储在数据库中,但是与 solution#1 相反,它仅存储签名(算法)以生成以下内容的集合
TypeB
个对象。 优点:数据库中的记录更少,问题更少
模型更改时。 缺点:增加对象的CPU使用率
生成并查询生成的集合。