NoSql:枚举 vs 字符串

3

我很好奇其他人如何处理枚举和nosql?是将属性存储为枚举值还是字符串更好?这在某些情况下是否会影响数据库的大小或性能?例如,想象一下职业运动员,他的运动类型可以是足球、曲棍球、棒球、篮球等... 字符串与枚举,你们认为哪个更好?


发现了这篇文章:http://www.objectreference.net/post/enum-to-friendly-string-extension-method.aspx - bbqchickenrobot
2个回答

2

你的代码中应该使用枚举 - 强类型可以避免很多错误,并将它们转换为字符串或数字以进行存储。

字符串确实需要更多的存储空间 - "篮球"根据编码方式而定,大约占用10-20字节,如果将其存储为4,则只需1个字节。但是,实际上很少有情况会受到这种影响 - 如果你有一百万条记录,总数据库大小仍然不到20MB。字符串更易于处理,并且如果枚举值发生更改,则不太可能静默失败,因此请使用字符串。

对于大多数操作(包括在加载时转换为枚举),字符串比数字慢。然而,与从数据库检索任何内容所花费的时间相比,差异小得多,因此并不重要。


1

String 从可移植性的角度来看更好。而且像 MSSQL Server 等流行的 DBMS 不支持 Enum

您可以在应用程序级别上编写逻辑,以防止针对数组的有效输入,并将其仅存储为字符串。

编辑:

我的偏好已更改为 String,因为 CakePHP我在其中开发 Web 应用程序)不再支持 Enum,以解决可移植性问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接