问题一:能否给出“写扩散”的一个实际案例?
能否给出“写扩散”的一个实际案例?
参考回答:
群发消息的场景。比如,往每个群员的收件箱中发一个消息,虽然这样要写很多冗余的数据,但当每个群员阅读消息时,性能会好很多,因为只需要查询自己的收件箱,而不需要去一个集中的地方拉取数据。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639163
问题二:“规范化”的数据库设计有什么特点?
“规范化”的数据库设计有什么特点?
参考回答:
主张每张表都是原子的,不含有不属于该维度的冗余数据。在读取时,通常需要通过外键join来获取其他维度的数据。这种设计对于写性能是非常友好的,但读取时可能需要查询大量其他维度的数据。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639164
问题三:“反规范化”为什么在互联网中越来越受欢迎?
“反规范化”为什么在互联网中越来越受欢迎?
参考回答:
“反规范化”在互联网中越来越受欢迎主要有两点原因。
第一,很多互联网场景是读多写少,优化读取性能更为重要。
第二,很多新兴的no sql数据库为了提升水平扩展能力,不支持join操作,因此更倾向于“反规范化”的设计。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639165
问题四:查询驱动(query-driven)的库表设计是什么样的?
查询驱动(query-driven)的库表设计是什么样的?
参考回答:
查询驱动(query-driven)的库表设计是针对每一种查询视图,设计一张单独的表。比如在MongoDB中,可以针对购物车视图单独新建一个集合,集合中的每个文档就是完整的购物车记录。这种设计方式能够直接满足特定的查询需求,提高查询效率。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639166
问题五:“规范化”和“反规范化”在设计数据库时应该如何权衡?
“规范化”和“反规范化”在设计数据库时应该如何权衡?
参考回答:
在设计数据库时,“规范化”和“反规范化”的权衡主要取决于具体的应用场景。如果应用是写密集型的,且数据一致性要求高,“规范化”可能更合适。如果应用是读密集型的,且对读取性能有较高要求,“反规范化”可能更为适合。但需要注意的是,随着冗余数据的增多,虽然读性能会提升,但写性能会下降,同时数据一致性的维护也会变得更加复杂。
关于本问题的更多回答可点击原文查看: