![]() |
AW: suche nach SQL Schulungsunterlagen
Zitat:
Ich saug mir mal ein Beispiel aus den Fingern: Der Kunde möchte eine Pivotmatrix des Umsatzes über alle Produktkategorien, die eine bestimmte Umsatzgrenze übersteigen je Filiale. Die Produktkategorien kann er natürlich selber vergeben. Das Ergebnis ist hier in beiden Dimensionen variabel, Anzahl und Name (sagen wir Standort) der Filialen ist beliebig und Anzahl der Kategorien und deren Name auch. Das kann eine SQL Engine nicht direkt, selbst wenn sie eine Pivotimplementierung hat. Also gut, ich kenne zumindest keine. Und so wird es unkomfortabel und Du landest bei dynamischen SQL, SP oder nicht, wie auch immer. |
AW: suche nach SQL Schulungsunterlagen
Du meinst also, was man machen soll, wenn nicht mal die Struktur des Ergebnisses bekannt ist ? Ja, dann nützt eine fest in der DB befindliche SP natürlich wirklich nichts oder zumindest wenig. So etwas sollte man dann eben tatsächlich in Delphi zusammenbauen, ist am einfachsten. Aber dann auch mit Parametern. Mit den SPs, das sieht bei mir so aus : wenn ich die Anzahl der Tabellen und die der SPs (Stored Procedures) vergleiche, dann muss ich feststellen, das die SPs doppelt so häufig vorhanden sind. Schätze deshalb mal, dass die, die von diesem Wert weit abweichen (z.B. 50 Tabellen und nur 10 SPs), sich mal um die DB kümmern sollten. 8-) Ich habe aber auch schon mal gesehen, dass Programm 80 Tabellen braucht und ich keine einzige SP finde. Auf Nachfrage wurde mir dann gesagt, dass sie die tatsächlich nicht verwenden. :shock:
Um nicht zu weit abzuschweifen: ![]() Da mal selber suchen. |
AW: suche nach SQL Schulungsunterlagen
Hallo,
auch wenn ich nach Schulungsunterlagen suche, bringt mich die geführte Diskussion auch schon weiter, ich hoffe sie geht weiter, oder macht es Sinn ein eigenes Thread einzustellen um sich der Aufgabe separat zu widmen ? |
AW: suche nach SQL Schulungsunterlagen
Zitat:
|
AW: suche nach SQL Schulungsunterlagen
Zitat:
Lohnt sich eher, wenn ein statisches Ergebnis (Spaltengerüst) erwartet wird oder wenn die Sprachmächtigkeit im SP code genutzt werden kann/muss (z.B. für Pivot) oder wenn so die Datenkonsistenz wegen Normalformverletzung einfacher zu halten ist (insert, update, delete auf mehreren Tabellen plus Prüfungen) ansonsten tut's vielleicht eher ein View oder man nimmt tatsächlich eine Zwischenschicht, wie Sir Rufo vorgeschlagen hat (Das endbindet einen natürlich nicht von der Performancefrage bzw. die gilt von der Zwischenschicht aus gegen den DB Server genauso wie vom Client aus) |
AW: suche nach SQL Schulungsunterlagen
So eine Zwischenschicht ist schon Klasse und die damit gewonnene Flexibilität relativiert auch den größeren Initialaufwand für die Zwischenschicht.
Diesen Mehraufwand am Anfang sollte man aber nicht ausser Acht lassen. So eine Zwischenschicht gibt es eben nicht auf Knopfdruck. Und ein einfaches Durchreichen von SQL-Statements ist dann auch keine wirkliche Zwischenschicht, bzw. führt diese eigentlich wieder ad absurdum, denn die Flexibilität ist damit wieder weg. |
AW: suche nach SQL Schulungsunterlagen
von mir auch noch mal ein paar Anmerkungen
1. Es muss am Ende (zumindest bei Firebird) nicht die eierlegende Wollmilchsau in Form einer Stored Procedure sein. Gerade wenn es dynamisch ist, bietet es sich an, aus Delphi heraus modular einen möglichen Stored Procedure Quelltext zusammenzustellen und den dann als execute block auszuführen. Dafür ersetzt man nur die erste Zeile in der Deklaration. Das bietet die gleichen Geschwindigkeiten wie eine SP, verhindert aber das man sich ein Monstrum schafft, mit dem man alle Fälle abdeckt. Ein Execute Block kann eigene Variablen haben, die Anzahl der Rückgabefelder kann dynamisch sein, man kann GTT benutzen, ohne anderen in die Quere zu kommen, man muss keine globalen Namen definieren, hat den gesamten Sprachumfang von SPs, kann die in IBExpert debuggen usw. Wenn man Blöcle die dynamisch zusammenstellt, sollte man die am besten einfach in einer Tabelle speichern mit Laufzeit, dann weiss man relativ schnell, wo die eigene Logik vielleicht nicht ganz so doll ist. Und zum Ausführen reicht in Delphi nahezu jede TxQuery oder TxSQL Komponente, die sich mit einer SQL Property steuern lässt. 2. Zum Thema Speed: Bei großen Datenmengen unterschätzen auch erfahrene Delphi Programmierer den Geschwindigkeitsvorteil, den SP oder Blöcke bringen. Mit sehr viel Glück und optimaler Programmierung kann eine Delphi Anwendung von einem Firebird Server die Ergebnisse von 1000-2000 Operationen pro Sekunde abarbeiten. Operation sind dabei individuelle insert/update/delete/select statements, die ggf. mit unterschiedlichen Parametern ausgeführt werden. In einer SP bzw einem Block sind 50000 bis 100000 Operationen pro Sekunde keine Zauberei. Ich hab bei diversen Kunden Auswertungen gesehen, die in Grids oder Reporttools gemacht wurden, wo die Laufzeit nicht mehr nur im Bereich von Minuten waren. Die ergebnisidentische Umsetzung als SP/Block war dann oft in wenigen Sekunden fertig. Das der Speed dann natürlich auch noch möglichst auf datenbankgeeignete Hardware angewiesen ist und nicht durch Virtualisierung und externe RAID Storagesysteme verlangsamt wird, sollte dann eh klar sein (ist es aber meiner Erfahrung nach leider nicht). |
AW: suche nach SQL Schulungsunterlagen
@blöcke und sp:
Also wenn ein Select oder View nicht ausreicht (von den Sprachmöglichkeiten), kann man via Block oder SP häufig noch was rausholen, weil es mehr Möglichkeiten bietet, besonders natürlich wenn es um Datenmanipulation auf mehreren Tabellen geht. Blöcke würde ich gemäß Client /Server Prinzip da nicht unbedingt vorziehen, außer man hat das, was sie tun genauso gründlich geprüft und unter Kontrolle, wie die SP, die man definiert hat. Klar sind sie flexibler und bieten performancemäßig den "Servervorteil" genau wie eine SP, aber sie bergen auch mehr Risiko für Fehler. Was den Performancegewinn angeht, der ist natürlich potentiell unendlich, wenn es vorher schlecht genug umgesetzt war. Solche Aussagen finde ich nicht unbedingt hilfreich. Am Ende kann man ja vielleicht auch bunt mischen, wahrscheinlich meinst Du das auch mit "modular". SP für gesicherte, robuste DM Operationen und Blöcke für flexible (Business)Operationen, die sich für Core OP der definierten SP bedienen. |
AW: suche nach SQL Schulungsunterlagen
Zitat:
Zitat:
|
AW: suche nach SQL Schulungsunterlagen
Zitat:
Zitat:
Aber das kann er ja vielleicht selber noch erläutern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz