Enums NoSql:枚举与字符串

Enums NoSql:枚举与字符串,enums,nosql,data-storage,Enums,Nosql,Data Storage,只是好奇其他人如何处理enums和nosql?将属性存储为枚举值还是字符串更好?在某些情况下,这会影响数据库的大小或性能吗?举个例子,想想,比如说,一个职业运动员。。。他的运动类型可能是足球、曲棍球、棒球、篮球等。。。string vs enum,你们怎么看?string从可移植性的角度来看更好。而Enum是不受流行的DBMS支持的,如MSSQL服务器和许多其他数据库 您可以使用应用程序级逻辑来阻止针对数组的有效输入,并将其存储为字符串 编辑: 我的首选项更改为String,因为CakePHP(

只是好奇其他人如何处理enums和nosql?将属性存储为枚举值还是字符串更好?在某些情况下,这会影响数据库的大小或性能吗?举个例子,想想,比如说,一个职业运动员。。。他的运动类型可能是足球、曲棍球、棒球、篮球等。。。string vs enum,你们怎么看?

string
从可移植性的角度来看更好。而
Enum
受流行的DBMS支持的,如
MSSQL服务器
和许多其他数据库

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

编辑:


我的首选项更改为
String
,因为
CakePHP
(我做web应用的地方)不再支持
Enum
,这是出于可移植性的考虑。

您应该在代码中使用Enum-强键入有助于避免许多错误-并将它们转换为字符串或数字以供存储

字符串确实需要更多的存储空间-“Basketball”是10-20字节,具体取决于编码,如果存储为4,则只需要1字节。然而,在很少的情况下,这一点实际上很重要——如果您有一百万条记录,那么数据库总大小的差异仍然小于20MB。如果枚举发生更改,字符串更易于使用,并且不太可能以静默方式失败,因此请使用字符串

对于大多数操作,包括加载时转换为枚举,字符串也比数字慢。但是,两者之间的差异比从数据库中检索任何内容所花费的时间都要少几个数量级,所以这并不重要。

也发现了本文: