2011-02-16 198 views
2

只是好奇其他人如何处理枚举& nosql?将属性存储为枚举值或字符串会更好吗?这在某些情况下会影响数据库的大小或性能吗?例如,想一想,我们可以说,职业运动员......他的运动类型可以是足球,曲棍球,棒球,篮球等等......弦与枚举,你们都觉得怎么样?NoSql:枚举vs字符串

+0

发现此文章以及: http://www.objectreference.net/post/enum-to-friendly-string-extension-method.aspx – bbqchickenrobot 2011-02-18 21:21:56

回答

1

您应该在代码中使用枚举 - 强类型有助于避免很多错误 - 并将它们转换为字符串或数字进行存储。

字符串确实需要更多的存储空间 - “篮球”是10-20个字节,取决于编码,如果将它存储为4,则只需要1个字节。但是,实际上这很重要 - 如果您有一百万条记录,它在数据库总大小上的差异仍然小于20MB。如果枚举更改,字符串更容易处理,不太可能失败,所以使用字符串。

对于大多数操作,字符串也比数字慢,包括转换为加载枚举。然而,这个差别比从数据库中检索任何东西所花费的时间少数量级,所以并不重要。

1

String更好的可移植性的角度。而Enum而不是支持流行的DBMS的像MSSQL Server和许多其他。

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

编辑:

我的喜好改变StringCakePHP在那里我做网页应用)便携性的担忧不再视为支持Enum