Hier muss zwangsläufig das Zusammentreffen der Köpfe, dh der Köpfe von Entwicklern (DVs) und DBAs, stattfinden. Das Arbeiten mit Business Logic (BL) und das Speichern in einer Datenbank können Auswirkungen haben, die die Implementierung verherrlichen oder erschüttern können.
Für einige RDBMS-Produkte gibt es überlegene Bibliotheken / Tools / APIs für Geschäftslogik und Objektinfrastrukturen, die man schnell erlernen und in ihren Anwendungen einsetzen kann. Für andere RDBMS existieren keine Bibliotheken / Tools / APIs.
In der Vergangenheit haben Client-Server-Apps über Stored Procedures (SP) die Brücke zu BL hergestellt. Bei Produkten wie Oracle und SQL Server wurde dies frühzeitig durchgeführt. Als Open-Source-Datenbanken wie PostgreSQL und MySQL entstanden, drohten die Benutzer, mit gespeicherten Prozeduren in BL Neuland zu betreten. PostgreSQL entwickelte sich dabei sehr schnell, da nicht nur gespeicherte Prozeduren implementiert wurden, sondern auch die Fähigkeit, Kundensprachen zu erstellen, hinzukam. MySQL hat sich im Grunde genommen in der Welt der gespeicherten Prozeduren nicht mehr weiterentwickelt und wurde in einer reduzierten Form einer Sprache mit vielen Einschränkungen angeboten. Wenn es also um BL geht, sind Sie MySQL und seiner Sprache für gespeicherte Prozeduren völlig ausgeliefert.
Es bleibt wirklich nur eine Frage: Sollte BL unabhängig vom RDBMS ganz oder teilweise in der Datenbank gespeichert sein?
Denken Sie an den Entwickler. Wenn in einer Anwendung Probleme auftreten, springt der Entwickler beim Debug-Vorgang in eine Datenbank und verlässt diese, um Datenänderungen zu folgen, die möglicherweise zeitweise korrekt sind oder nicht. Es ist wie das Codieren einer C ++ - Anwendung und das Aufrufen von Assembler-Code in der Mitte. Sie müssen von Quellcode, Klassen und Strukturen zu Interrupts, Registern und Offsets UND ZURÜCK wechseln !!! Dies bringt das Debuggen auf die gleiche Ebene.
Entwickler sind möglicherweise in der Lage, eine Hochgeschwindigkeitsmethode zum Ausführen von BL in Verbindung mit Sprachkonfigurationen (Compiler-Flags für C ++, verschiedene Einstellungen für PHP / Python usw.) über Geschäftsobjekte im Speicher und nicht in einer Datenbank zu erstellen. Einige haben versucht, diese Ideologie zu überbrücken, um Code schneller in die Datenbank auszuführen, indem sie Bibliotheken schreiben, in denen das Debuggen gespeicherter Prozeduren und Trigger gut in die Datenbank integriert und scheinbar nutzbar ist.
Daher ist der Entwickler aufgefordert, Quellcode und BL in zwei Sprachen zu entwickeln, zu debuggen und zu warten.
Denken Sie jetzt an den DBA. Der DBA möchte die Datenbank so schlank und gemein wie möglich im Bereich der gespeicherten Prozeduren halten. Der DBA sieht BL möglicherweise als etwas außerhalb der Datenbank. Wenn SQL jedoch die für BL erforderlichen Daten abruft, muss das SQL schlank und gemein sein.
Nun zum Treffen der Geister !!!
Der Entwickler codiert SP und verwendet iteraktive Methoden. DBA schaut auf den SP. DBA stellt fest, dass eine einzelne SQL-Anweisung vom Entwickler geschriebene iteraktive Methoden ersetzen kann. Der Entwickler stellt fest, dass für die vom DBA vorgeschlagene SQL-Anweisung ein anderer BL-Code oder SQL-Code aufgerufen werden muss, der nicht den normalen Ausführungsplänen der SQL-Anweisung entspricht.
In Anbetracht dessen wird die Konfiguration, Leistungsoptimierung und SP-Codierung eine Funktion der Tiefe und Datenintensität von BL für den Datenabruf. Je tiefer und datenintensiver der BL ist, desto mehr Entwickler und DBA müssen in Bezug auf die Datenmenge und die Verarbeitungsleistung der Datenbank auf derselben Seite sein.
FAZIT
Die Art des Datenabrufs sollte immer sowohl Entwickler- als auch DBA-Camps umfassen. Es müssen immer Zugeständnisse gemacht werden, welche Codierungsmethoden und Datenabrufparadigmen für Geschwindigkeit und Effizienz zusammenarbeiten können. Wenn die Aufbereitung der Daten für den Quellcode nur ein Mal erfolgt, bevor der Code die Daten erhält, sollte der DBA die Verwendung von Lean- und Mean-SQL vorschreiben. Wenn der BL etwas ist, mit dem der DBA nicht in Einklang ist, dann sind die Zügel in den Händen des Entwicklers. Aus diesem Grund sollte sich der DBA als Teil des Projektteams und nicht als Insel für sich selbst sehen, während der Entwickler den DBA die Feinabstimmung des SQL überlassen muss, wenn dies dies rechtfertigt.