atom
2012-12-09 21:16:31 +08:00
楼主的方案就是标准范式,保证一致性,缺点是查询慢。
其它用分隔符只存一张表的是反范式方案,优点是查询快,缺点是一致性比较痛苦。
但吃过一致性的亏后,我会倾向于这样的方案:
1.用标准范式保证一致性;
2.增加缓存层保存热数据,里面的数据已做好关联,便于展现层或业务层直接拿来使用。
3.最上层会有个切换开关(读缓存还是读DB),80%的情况下使用cache数据,做到best-effort,强调可用性,但数据可能不准确。
以下是无责任引用
-----------------------------------------
• 事务处理型:对于这种类型的应用程序,你的用户更关注数据的增查改删(CRUD,Creating/Reading/Updating/Deleting)。这种类型官方称之为 “OLTP”。
• 分析型:对于这种类型的应用程序,你的用户更关注数据分析、报表、趋势预测等功能。这一类的数据库的“插入” 和“更新”操作相对来说是比较少的。用户的主要目的是更加快速地查询、分析数据。这种类型官方称之为 “OLAP”。
换句话说,如果你认为插入、更新、删除数据这些操作在你的程序中更为突出的话,那就设计一个规范化的表,否则的话就去创建一个扁平的、不规范化的数据库结构。