Juste curieux de savoir comment les autres traitent avec enums & nosql? Est-il préférable de stocker un attribut en tant que valeur enum ou chaîne? Cela affecte-t-il la taille ou les performances de la base de données dans certains cas? Par exemple, il suffit de penser à, disons, un joueur de sport professionnel ... son type de sport pourrait être le football, le hockey, le baseball, le basketball, etc ... chaîne vs enum, que pensez-vous tous?NoSql: Enums vs Strings
Répondre
Vous devriez utiliser des énumérations dans votre code - un typage fort permet d'éviter beaucoup d'erreurs - et de les convertir en chaînes ou en nombres pour le stockage.
Les chaînes nécessitent beaucoup plus d'espace de stockage - "Basketball" est de 10-20 octets selon l'encodage, et si vous le stockez en 4, il n'a besoin que de 1 octet. Cependant, il y a très peu de cas où cela compte vraiment - si vous avez un million d'enregistrements, il reste moins de 20 Mo de différence dans la taille totale de la base de données. Les chaînes sont plus faciles à utiliser et moins susceptibles d'échouer silencieusement si l'énumération change, utilisez donc des chaînes.
Les chaînes sont également plus lentes que les nombres pour la plupart des opérations, y compris la conversion en énumération en charge. Cependant, la différence est inférieure d'un ordre de grandeur au temps nécessaire pour extraire quoi que ce soit de la base de données, cela n'a donc pas d'importance.
String
sont mieux de la perspective de portabilité. Et Enum
est pas pris en charge par les SGBD populaires comme MSSQL Server
et beaucoup d'autres.
Vous pouvez avoir une logique au niveau de l'application pour empêcher une entrée valide sur une baie et la stocker simplement en tant que chaîne.
EDIT:
Mes préférences ont changé à String
comme CakePHP
(où je fais des applications Web) sans plus de soutien Enum
pour des raisons de portabilité.
- 1. percona nosql vs autres nosql
- 2. BigTable vs noSQL
- 3. Oracle (RAC) vs NoSQL
- 4. NoSQL MongoDB vs GT.M
- 5. enums dans une structure - C vs C++
- 6. Exemples de construction SQL vs noSQL
- 7. Utilisation des relations dans NoSQL vs SQL
- 8. NoSQL vs base de données relationnelle
- 9. Stockage de documents NOSQL vs XML
- 10. Passing POJO vs Strings (JSON) encodée à mes applications WebAPI
- 11. Débogueur VS 2010 ayant des problèmes avec enums?
- 12. C# Enums vs Listes pilotées par les données
- 13. NoSQL vs Linq To Objects pour asp.net mvc
- 14. Crashing Strings .... :(
- 15. Strings correspondant
- 16. JavaScript strings
- 17. tokenizing Strings
- 18. NoSql Battle - Survivants?
- 19. Parse IDL enums vers Java Enums
- 20. enerializing enums
- 21. TryParsing Enums
- 22. Query Strings & Mod ReWrite
- 23. Bit-Strings In C
- 24. Java Mergesort strings
- 25. JFreeChart XYSeries as Strings
- 26. C# Listbox Passing Strings
- 27. script bash 'here strings'
- 28. File Array of Strings
- 29. Hyper Strings InterviewStreet: Python
- 30. Python Raw Strings
Trouvé également cet article: http://www.objectreference.net/post/enum-to-friendly-string-extension-method.aspx – bbqchickenrobot