2011-02-16 5 views
2

다른 사람들이 열거 형을 처리하는 방법에 대해 궁금합니다. & nosql? enum 값이나 문자열로 특성을 저장하는 것이 더 좋습니까? 어떤 경우에는 이것이 데이터베이스의 크기 나 성능에 영향을 줍니까? 예를 들어, 프로 스포츠 선수를 생각해 봅시다 ... 그의 스포츠 유형은 축구, 하키, 야구, 농구 등이 될 수 있습니다 ... 문자열 대 열거, 모두 어떻게 생각하니?NoSql : Enums vs Strings

+0

이 기사도 찾았습니다. http://www.objectreference.net/post/enum-to-friendly-string-extension-method.aspx – bbqchickenrobot

답변

1

코드에서 열거 형을 사용해야합니다. 강력한 입력은 많은 실수를 방지하고 저장을 위해 문자열이나 숫자로 변환하는 데 도움이됩니다.

문자열에 저장 공간이 훨씬 필요합니다. "Basketball"은 인코딩에 따라 10-20 바이트이며, 4로 저장하면 1 바이트 만 필요합니다. 그러나 이것이 실제로 중요한 경우는 거의 없습니다. 백만 개의 레코드가있는 경우 총 데이터베이스 크기의 차이는 20MB 미만입니다. 문자열은 열거가 변경되면 자동으로 실패하지 않으므로 작업하기가 더 쉽습니다. 따라서 문자열을 사용하십시오.

문자열은로드시 열거 형으로의 변환을 포함하여 대부분의 작업에서 숫자보다 느립니다. 그러나 차이점은 데이터베이스에서 아무것도 검색하는 데 걸리는 시간보다 훨씬 짧은 순서이므로 중요하지 않습니다.

1

String은 이식성 관점에서 더 좋습니다. 그리고 EnumMSSQL Server 및 기타 많은 인기있는 DBMS에서 지원되는 이 아니며이 아닙니다.

배열에 대한 올바른 입력을 막고 String으로 저장할 수있는 응용 프로그램 수준 논리를 사용할 수 있습니다.

편집 :

내 환경 설정 CakePHP (I 웹 애플리케이션을 )로 String로 변경 이동성 문제에 대한 노 더 이상 지원 Enum.