2011-02-16 199 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