2008-09-24 3 views
5

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

3

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.

1

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.

+0

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. –

2

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.

0

Lassen Sie Ihre ORM-Lösung es erzeugen, aber benutzen Sie es nicht blind; lies es durch und überprüfe es.

Verwandte Themen