【发布时间】:2011-02-16 19:13:11
【问题描述】:
只是好奇其他人如何处理枚举和 nosql?将属性存储为枚举值还是字符串更好?在某些情况下,这会影响数据库的大小或性能吗?例如,想想,比方说,一个职业运动员……他的运动类型可能是足球、曲棍球、棒球、篮球等……字符串 vs 枚举,你们怎么看?
【问题讨论】:
-
也找到了这篇文章:objectreference.net/post/…
标签: enums nosql data-storage
只是好奇其他人如何处理枚举和 nosql?将属性存储为枚举值还是字符串更好?在某些情况下,这会影响数据库的大小或性能吗?例如,想想,比方说,一个职业运动员……他的运动类型可能是足球、曲棍球、棒球、篮球等……字符串 vs 枚举,你们怎么看?
【问题讨论】:
标签: enums nosql data-storage
您应该在代码中使用枚举 - 强类型有助于避免很多错误 - 并将它们转换为字符串或数字进行存储。
字符串确实需要更多的存储空间 - “篮球”是 10-20 字节,具体取决于编码,如果您将其存储为 4,它只需要 1 个字节。但是,在极少数情况下这实际上很重要——如果您有一百万条记录,那么总数据库大小的差异仍然小于 20MB。如果枚举发生变化,字符串更容易使用并且不太可能静默失败,因此请使用字符串。
对于大多数操作,字符串也比数字慢,包括在加载时转换为枚举。但是,差异比从数据库中检索任何内容所花费的时间要少几个数量级,所以没关系。
【讨论】:
String 具有更好的可移植性。并且Enum不被MSSQL Server 等流行的 DBMS 支持。
您可以使用应用程序级逻辑来防止对数组进行有效输入并将其存储为字符串。
编辑:
我的偏好更改为 String,因为 CakePHP(我在哪里做网络应用)出于便携性问题不再支持 Enum。
【讨论】: