Evolutionäres Datenbankdesign

Evolutionäres Datenbankdesign beinhaltet inkrementell Verbesserungen an der Datenbankschema damit es kontinuierlich mit Änderungen aktualisiert werden kann, was die Anforderungen des Kunden widerspiegelt. Menschen auf der ganzen Welt arbeiten gleichzeitig an derselben Software. Daher besteht ein Bedarf an Techniken, die eine reibungslose Entwicklung von ermöglichen Datenbank Wie sich das Design entwickelt. Solche Methoden verwenden automatisiert Refactoring und kontinuierliche Integration so dass es unterstützt Agile Methoden Für Softwareentwicklung. Diese Entwicklungstechniken werden auf Systeme angewendet, die sich befinden Vorproduktion Bühne auch auf Systemen, die bereits veröffentlicht wurden. Diese Techniken umfassen nicht nur relevante Änderungen im Datenbankschema entsprechend den Änderungsanforderungen des Kunden, sondern auch die Migration geänderter Daten in die Datenbank und das Anpassen des Datenbankzugriffscode Datensemantik.[1]

Geschichte

Nach Verwendung der Wasserfall-Modell Die Softwareindustrie hat seit langer Zeit einen Anstieg der agilen Methoden für die Softwareentwicklung verzeichnet. Agile Methoden Nehmen Sie nicht an Bedarf in jedem Stadium der dauerhaft sein Software -Lebenszyklus. Diese Methoden sollen sporadische Veränderungen im Gegensatz zur Wasserfalldesign -Technik unterstützen. Ein wichtiger Teil dieses Ansatzes ist iterative Entwicklung, wo der gesamte Software-Lebenszyklus während der Lebensdauer eines Projekts mehrmals ausgeführt wird. Jede Iteration sieht den gesamten Lebenszyklus für den Lebenszyklus der Softwareentwicklung, obwohl die Iterationen von kurzer Dauer sind, die zwischen Wochen und einigen Monaten variieren können.[1]

Vor der Einführung dieser Methoden wurde das gesamte System vor Beginn der Entwicklung des Codes entworfen. Das gleiche Prinzip wurde auch auf das Datenbankschema angewendet, wo es als abgeleitet angesehen wurde Software Anforderungen die wiederum durch Zusammenarbeit zwischen Kunden, Endbenutzern, Wirtschaftsanalysten usw. entwickelt wurden. Diese Anforderungen wurden nicht erwartet, dass sie sich mit dem Fortschritt in der Softwareentwicklung ändern. Dieser Ansatz erwies sich als umständlich, da im Laufe der Zeit die Entlassungen im vorhandenen Datenbankschema in Form von nicht verwendeten Zeilen oder Spalten offensichtlich waren. Diese Redundanz zusammen mit Datenqualität Die Probleme wurden zu einer kostspieligen Angelegenheit. Es wurde der Schluss gezogen, dass die Praxis, nicht mit Konstruktion und Tests eingestuft zu werden, sehr ineffizient war.[1]

Techniken

Wie in den vorherigen Abschnitten erwähnt, sind evolutionäre Methoden iterativer Natur und diese Methoden sind in den letzten zwei Jahrzehnten immens beliebt geworden. Das evolutionäre Datenbankdesign zielt darauf ab, das Datenbankschema im Verlauf des Projekts zu konstruieren, anstatt das gesamte Datenbankschema zu Beginn des Projekts zu erstellen. Diese Methode des Datenbankdesigns kann die sich ändernden Anforderungen von Projekten erfassen und effektiv behandeln.

Es gibt fünf evolutionäre Datenbankdesign -Techniken, mit denen Entwickler ihre Datenbank iterativ aufbauen können. Eine kurze Übersicht über die fünf Techniken finden Sie unten.

Datenbank Refactoring

Refactoring Ist der Prozess, Änderungen am Programm vorzunehmen, ohne die Funktionalität des Programms zu beeinflussen. Das Refactoring von Datenbank ist die Technik, kleine Änderungen am Datenbankschema zu implementieren, ohne die in der Datenbank gespeicherten Funktionen und Informationen zu beeinflussen.[2] Der Hauptzweck von Datenbank Refactoring ist die Verbesserung der Datenbank Design so dass die Datenbank mit den sich ändernden Anforderungen synchronisierter ist. Der Benutzer kann ändern Tische, Ansichten, Gespeicherte Prozeduren und löst aus. Die Abhängigkeit zwischen der Datenbank und externen Anwendungen macht die Datenbank zu einer Herausforderung.

Evolutionsdatenmodellierung

Datenmodellierung ist die Technik der Identifizierung Entitäten, assoziieren Attribute an die Entitäten und die Entscheidung der Datenstruktur die Attribute darstellen.[3] Im traditionellen Datenbankszenario wird am Anfang ein logisches Datenmodell erstellt, um die Entitäten und deren zugehörigen Attribute darzustellen. In der evolutionären Datenmodellierung wird die Technik der Datenmodellierung iterativ durchgeführt, dh mehrere Datenmodelle werden entwickelt, wobei jedes Modell einen anderen Aspekt der Datenbank darstellt. Diese Art von Datenmodellierungstechnik wird in einer agilen Umgebung praktiziert und ist eines der Hauptprinzipien der agilen Entwicklung.[4]

Datenbankregressionstests

Immer wenn eine neue Funktionalität zu einem System hinzugefügt wird, ist es wichtig zu überprüfen, ob das Update das System nicht beschädigt oder unbrauchbar macht. In einer Datenbank wird die Geschäftslogik in implementiert Gespeicherte Prozeduren, Datenvalidierung Regeln und Referenzintegrität und sie müssen gründlich getestet werden, wenn Änderungen im System implementiert werden. Regressionstests ist der Prozess der Ausführung aller Testfälle Wann immer eine neue Funktion zum System hinzugefügt wird. Test-First-Entwicklung (TFD) ist eine Form von Regressionstests, die im evolutionären Datenbankdesign folgen. Die Schritte, die mit dem TFD -Ansatz verbunden sind, sind,[3]

  • Fügen Sie vor dem Hinzufügen einer neuen Funktion zum System einen Test zur Testfallsuite hinzu, so dass das System den Test fehlschlägt
  • Führen Sie die Tests aus, entweder den gesamten Satz von Testfällen oder nur eine Untergruppe und stellen Sie sicher, dass der neu hinzugefügte Test tatsächlich fehlschlägt
  • Aktualisieren Sie die Funktion so, dass der Test besteht
  • Führen Sie die Tests erneut durch, um sicherzustellen, dass alles, was sie erfolgreich sind und dass das System nicht gebrochen ist

Konfigurationsverwaltung von Datenbankartefakten

Konfigurationsmanagement ist eine detaillierte Aufzeichnung von Versionen und Updates, die auf jedes System angewendet wurden. Konfigurationsverwaltung ist nützlich in zurück rollen Aktualisierungen und Änderungen, die das System negativ beeinflusst haben. Um sicherzustellen, dass alle in der Datenbank refactoring durchgeführten Updates zurückgerollt werden können, ist es wichtig, Datenbankartefakte wie die Wartung von Datenbank -Artefakten zu erhalten Datendefinitionssprache Skripte, Datenmodelldateien, Vergleichsdaten, gespeicherte Prozeduren usw. in einem Konfigurationsverwaltungssystem.[5]

Entwickler Sandboxen

A Sandkasten ist eine voll funktionsfähige Umgebung, in der das System erstellt, getestet und ausgeführt werden kann. Um Änderungen am Datenbankschema auf evolutionäre Weise vorzunehmen, ist es für jeden Entwickler ideal, seine eigene physische Sandbox zu haben Quellcode und eine Kopie von Datenbank. In einer Sandbox -Umgebung kann der Entwickler Änderungen am Datenbankschema vornehmen und Tests durchführen, ohne die Arbeit anderer Entwickler und anderer Umgebungen zu beeinflussen. Sobald die Änderung erfolgreich umgesetzt wurde, wird sie zu befördert Vorproduktion Umgebung wo in Akzeptanzprüfung wird durchgeführt und nach dem Erfolg der Akzeptanztests eingesetzt Produktion.

Vorteile und Nachteile

Vorteile

  1. Hohe Qualität des Datenbankdesign optimiert Datenbankschema.
  2. Umgangsänderung: in a Traditionelle Datenbank Ansatz, viel Zeit wird für die Umgestaltung und Umstrukturierung der Datenbank aufgewendet, wenn sich die Anforderungen ändern. In der evolutionären Datenbanktechnik die Schema der Datenbank wird regelmäßig angepasst, um mit den sich ändernden Anforderungen Schritt zu halten. Daher eignet sich die evolutionäre Datenbankdesign -Technik besser für die sich ändernden Anforderungen.
  3. Zu jeder Zeit garantierte Arbeiten des Systems: Der evolutionäre Datenbankdesign -Ansatz folgt Test-First-Entwicklung Modell, bei dem die vollständige Arbeit eines Systems vor und nach der Implementierung eines Updates getestet wird. Daher ist es garantiert, dass das System immer funktioniert.
  4. Kompatibel mit der Softwareentwicklung: Die IT -Branche führt zu einer agilen Methode der Softwareentwicklung und der evolutionären Datenbankdesign stellt sicher, dass die Datenentwicklung mit der Softwareentwicklung synchronisiert ist.
  5. Reduzierter Gesamtaufwand: In einer evolutionären Umgebung wird nur die in diesem Moment erforderliche Funktionalität implementiert und nicht mehr.

Nachteile

  1. Kulturelle Hindernisse: Evolutionärer Datenbankdesign -Ansatz ist relativ ein neueres Konzept und viele gut qualifizierte Datenfachleute Befürworten Sie immer noch den traditionellen Ansatz. Daher werden die meisten Datenbanken immer noch seriell gestaltet, und das evolutionäre Datenbankdesign ist noch nicht Unterstützung und Traktion bei erfahrenen Datenfachleuten.
  2. Benötigt eine Lernkurve: Die meisten Entwickler sind mit dem traditionellen Ansatz besser vertraut und es braucht Zeit, um evolutionäres Design zu lernen, da es nicht intuitiv ist.
  3. Komplex: Wenn die Datenbank viele externe Abhängigkeiten aufweist, wird die Änderung des Schemas umso komplizierter, da die externen Abhängigkeiten auch aktualisiert werden sollten, um die im Datenbankschema vorgenommenen Änderungen zu bewältigen. Mit der Anzahl der Abhängigkeiten wird der evolutionäre Datenbankdesign -Ansatz äußerst komplex.

Vergleich mit traditionellem Datenbankdesign

Die traditionelle Datenbankdesign -Technik unterstützt keine Änderungen wie die evolutionäre Datenbankdesign -Technik. «[1] In gewisser Weise ist das evolutionäre Design für Anwendungsentwickler besser und traditionelles Design ist für Datenfachleute besser.[6]

Eigenschaften Traditionelles Datenbankdesign Evolutionäres Datenbankdesign
Entwurf Traditionelle Datenbanken wurden durch Zusammenarbeit zwischen entwickelt. Business Analysten und Benutzer. Evolutionäre Datenbanken wurden von Softwareentwicklern und Datenfachleuten entworfen.
Entwurfsprobleme Sie zeigen einige Designprobleme in Datenbanken. Im Handel erhältliche Datenbanken wurden von erfahrenen Personen entwickelt, werden jedoch jetzt von der Datenbank und nicht von Datenfachleuten bedient.[6] Sie werden von einer engen Allianz von Softwareentwicklern und Datenfachleuten entwickelt. Die Datenbank entwickelt sich mit der Entwicklung und wird daher von denselben Personen verarbeitet, die für die Entwicklung verantwortlich waren.
Ansatz in Richtung Veränderung Jede vom Benutzer angeforderte Änderung ist in das logische Modell aufgenommen, gefolgt vom physischen Modell und dann getestet, um eine perfekte Funktionalität zu gewährleisten.[6] Veränderung ist ein wesentlicher Bestandteil des evolutionären Datenbankdesigns. Jede vom Benutzer angeforderte Änderung wird sofort in der Datenbank sowie im Code implementiert. Das Datenmigration Skripte müssen ebenfalls aktualisiert werden.
Abhängigkeit vom ER -Diagramm Traditionelles Design ist methodisch und aufgrund seiner Abhängigkeit von ER -Diagramm und seine detaillierten Designphasen wie Benutzer, Logik und physische können wir sowohl Daten als auch ihre Bedeutung verfolgen.[6] Das Design wird zwischen den Stufen für die evolutionäre Datenbankdesign verschachtelt. Daher kann sich die Beziehung zwischen Entitäten über den Softwareentwicklungszyklus ändern, ebenso wie das ER -Diagramm.

Werkzeug

Im Folgenden finden Sie eine Liste von Tools, die die Funktionalität des Entwerfens und Entwickelns einer Datenbank auf evolutionäre Weise bieten.

Siehe auch

Verweise

  1. ^ a b c d "Evolutionäres Datenbankdesign". Abgerufen 2016-09-14.
  2. ^ Vial, G. (2015-11-01). "Datenbank Refactoring: Lehren aus den Gräben". IEEE -Software. 32 (6): 71–79. doi:10.1109/ms.2015.131. ISSN 0740-7459. S2CID 15349486.
  3. ^ a b Ambler, Scott; Sadalage, Pramod J (2006). Refactoring -Datenbank: evolutionäres Datenbankdesign.Addison Wesley Professional. ISBN 978-0-321-29353-4.
  4. ^ "Die Prinzipien der agilen Modellierung (Am)" ". www.agilemodeling.com. Abgerufen 2016-09-22.
  5. ^ "Best Practices für evolutionäre/agile Datenbank". Agiledata.org. Abgerufen 2016-09-14.
  6. ^ a b c d Daten, groß;Daten, Gott sei Dank für den Siliziumchip: A. Kurzgeschichte von;Motor, Car Hacker Secrets enthüllte: Einklammerung eines Tankmotors in einem Klassiker;Jenseits des Genoms: Sie wurden wieder dekodiert. "Evolutionär vs. traditionelles Datenbankdesign". Abgerufen 2016-09-14.