Soll ich ein handgeschriebenes Schema für meine Hochrechnung in einer Hochsprache (zB Python, Ruby) verwenden oder soll ich meine ORM-Lösung automatisch generieren lassen? Schließlich muss ich migrieren, ohne alle Daten zu zerstören. Es ist in Ordnung, an ein bestimmtes RDBMS gebunden zu sein, aber es wäre schön, wenn Features wie Constraints und Prozeduren irgendwie unterstützt werden könnten.ORM: Handgeschriebenes Schema oder automatisch generiert?
Antwort
Ich gehe nie mit ORM-generierten Schema.
Ich finde, dass die Wege, auf denen das ORM das Schema erzeugen möchte, oft im Gegensatz dazu stehen, wie meine Datenbank strukturiert sein soll. Außerdem, und ich weiß, dass das trivial ist, ist das Nomenklaturschema in der Regel schlecht.
Datenbank-Struktur hat seine eigenen Einschränkungen, die ich finde, dass in der Regel die ORM-Auto-Generierung-Tools nicht vollständig berücksichtigen. Und wenn Sie später Berichte über Ihre Datenbank ausführen möchten (und Sie werden), dann ist es sehr wichtig, eine gute Datenbankstruktur und -gestaltung zu haben.
Lassen Sie das ORM das gewünschte Schema generieren. Dann können Sie immer Dinge ändern, die zu langsam sind oder die Sie anders wollen. Aber es erlaubt Ihnen, schnell zu beginnen und etwas zu arbeiten, und die ORM-Leute wissen normalerweise, was sie tun, wenn es darum geht, Schemas zu generieren.
Siehe this Coding Horror article und Links für die Diskussion über diese Migration müssen Sie schließlich tun. Plane es jetzt.
Siehe auch Martin Fowler on database evolution; Ich empfehle insbesondere die Vorstellung, dass die Testdatenerzeugung Teil des Datenbank-Setups ist. Die Idee mag etwas unterentwickelt sein, da es keine klare Abgrenzung der verschiedenen Probleme in verschiedenen Umgebungen gibt, nämlich Entwicklung versus QA versus Produktion.
Lassen Sie Ihre ORM-Lösung es erzeugen, aber benutzen Sie es nicht blind; lies es durch und überprüfe es.
- 1. CXF automatisch generiert wsdl
- 2. Dateinamen automatisch generiert ohne Kollision
- 3. Entities mit JHipster generiert automatisch
- 4. RESTful-Webdienst generiert automatisch WADL
- 5. Generiert ColdFusion automatisch grundlegende HTML-Tags?
- 6. WSDL2Code (Maven) generiert automatisch beschädigte Klassen (Pakete)
- 7. Warum wird die serialVersionUID nicht automatisch generiert?
- 8. automatisch geöffnet Rails generiert Migrationsdatei im Editor
- 9. Wie automatisch Magento URL Rewrites generiert?
- 10. Komponententests für automatisch generierten Code: automatisch oder manuell?
- 11. Automatisch generierte Testdaten von einem Schema zu einem DB?
- 12. Svcutil.exe generiert XmlElement-Eigenschaft für xsd: beliebiges Element im Schema
- 13. Warum generiert NHibernate ein Schema mit dem Klassennamen als Spalte?
- 14. wsimport - Importiertes Schema ohne Namespace ==> Paket mit Namen 'generiert'
- 15. OpenLdap - wie wird das Attribut "uidNumber" automatisch generiert?
- 16. Wie wird die Abhängigkeit zwischen Dateien automatisch generiert?
- 17. Ein Doxygen Eclipse PlugIn, das Stub-Dokumentationen automatisch generiert?
- 18. C++ Kommentar Stil:/* M ... M * /, was 'M' steht?
- 19. Erstellen Sie ein ORM-Schema und Abfragen automatisch von einem graphQL Schema
- 20. Werden die Codenamen des Webservers automatisch mit Shotgun (Sinatra) generiert?
- 21. glatt 3 automatisch generiert - Standardwert (Zeitstempel) Spalte, wie
- 22. Wie generiert man automatisch SDF in Code First Ansatz
- 23. Kann der Standarddestruktor automatisch als virtueller Destruktor generiert werden?
- 24. Können DLL-Exporte automatisch erkannt und Interop-Code generiert werden?
- 25. automatisch eine E-Mail senden, wenn eine Datei generiert wird
- 26. Python ORM, das Tabellen automatisch generiert/aktualisiert und SQLite verwendet?
- 27. Eclipse: Wie wird Getter beim Hinzufügen eines Feldes automatisch generiert?
- 28. Vermeiden created_at und updated_at werden automatisch generiert von sequelize
- 29. Erstellen Sie eine GUI aus einem XML-Schema automatisch
- 30. vs2015 Schema vergleichen nicht bereitstellen automatisch generierten xmlserializer Assembly
Ich denke, das ist ein guter Anfang, aber ich musste immer aufhören, es selbst zu generieren und zu verwalten, normalerweise aus Gründen der db-Performance. –