对于应用程序来说,目前的设置很少(5-10),但将来会有更多的设置(最多100),这将是更好的方法:
考虑到应用程序可能有数以百万计的实例(它们都运行在同一个db上,并使用相同的表进行设置),DB可能会被分割。DB是关系型的,即MySQL或MySQL。
作为一个开发人员,我更喜欢第二个变体,这样我就可以在不更改DB模式和随意添加/删除设置的情况下扩展应用程序。据我所知,如果索引是聚集在应用程序实例上的,那么在单个表中拥有数百万条记录不应该是一个问题。我不知道有什么缺点吗?
第一个变体呢?有什么大好处吗?那么列的数量呢:表中的列是否有任何理论上的限制?如果我有一个有1000 (10,000,1000 )列的表,会发生什么呢?那会很慢吗?
发布于 2012-05-07 10:03:04
选项2被称为"EAV“或实体-属性值。
但是,这取决于你所说的“设置”是什么意思。如果您有几个1000行不是对象,并且不需要约束,那么,是的,使用此模式。这就是Server对sys.configurations所做的事情
如果您试图拥有一个可以存储任何内容的“灵活模式”,那么干脆别。它会以眼泪结束。还请参见EAV在DBA.SE上的问题
请注意,“额外列”(选项1)允许您定义默认值和数据类型安全性,而“缺少行”(选项2)则要求将默认值存储在代码中,而且数据库中的所有内容都是字符串。
“视情况而定”
发布于 2012-05-17 22:28:45
都不是。
相反,请执行以下操作:
A计划:
功能:
方案B: MariaDB 5.3+及其动态列:http://kb.askmonty.org/en/dynamic-columns
https://dba.stackexchange.com/questions/17500
复制相似问题