AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken suche nach SQL Schulungsunterlagen
Thema durchsuchen
Ansicht
Themen-Optionen

suche nach SQL Schulungsunterlagen

Ein Thema von waldforest · begonnen am 6. Nov 2015 · letzter Beitrag vom 9. Nov 2015
Antwort Antwort
Seite 2 von 3     12 3      
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#11

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 14:38
Wieso soll es bei verkauften Produkten Ärger geben ? Genau darum geht es bei mir. Die Parameter betreffen auch hauptsächlich die Where-Klausel. Die Datenmenge soll ja von Anfang an gering gehalten werden.

Und die 150 Zeilen kommen in meinem Beispiel nur zustande, weil es eben um 12 Monate geht. Ergibt halt solche Konstrukte (hier 1 Monat und das mal 12 + Where + Var.-Deklarationen) :

Code:
    SUM (CASE MONAT WHEN 1 Then
           CASE :WERTTYP
             WHEN 0 THEN MENGE
             WHEN 1 THEN UMSATZ
             ...geht bis 4
           ELSE
             0
         END
         ELSE 0 END) as Mon1,
Ja, das seh ich auch so, Deine 12 Monate sind 12 feste Spalten. Die Datenreduktion erfolgt auch, ob bei der Aggregation jetzt 10 oder 150 Sätze rauskommen, ist ja wurscht, Hauptsache es kommt nicht die unaggregierte Menge zurück.
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 15:32
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. 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.

Um nicht zu weit abzuschweifen:

http://www.firebirdsql.org/file/docu...grefupd25.html

Da mal selber suchen.
Gruß
Hansa

Geändert von Hansa ( 6. Nov 2015 um 15:36 Uhr)
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#13

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 15:59
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 ?
mfg wf
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 16:24
Hallo,
...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 ?
Das ist immer besser. Schliesslich ist ja die Frage nach Schulungsunterlagen ziemlich untergegangen. Auch dank meiner Mithilfe. Formuliere besser die Frage/Titel neu und mache neues Thema auf.
Gruß
Hansa
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#15

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 18:02
bringt mich die geführte Diskussion auch schon weiter, ich hoffe sie geht weiter
Ok, also meine Kurzfassung zu SP:
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)
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: suche nach SQL Schulungsunterlagen

  Alt 6. Nov 2015, 18:17
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert
Online

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#17

AW: suche nach SQL Schulungsunterlagen

  Alt 7. Nov 2015, 10:19
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).
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#18

AW: suche nach SQL Schulungsunterlagen

  Alt 7. Nov 2015, 15:29
@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.
Gruß, Jo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: suche nach SQL Schulungsunterlagen

  Alt 7. Nov 2015, 15:40
Zitat:
Was den Performancegewinn angeht, der ist natürlich potentiell unendlich, wenn es vorher schlecht genug umgesetzt war. Solche Aussagen finde ich nicht unbedingt hilfreich.
Ein komplizierter Pivot von großen Tabellen, welcher komplett am Client erfolgt, erfordert meist eine signifikant größere Datenmenge, welche übertragen werden muss.

Zitat:
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.
Ich vermute mal mit flexibel meinte er eine Pivotabfrage einfach um Felder erweitern zu können.
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#20

AW: suche nach SQL Schulungsunterlagen

  Alt 7. Nov 2015, 16:27
Zitat:
Was den Performancegewinn angeht, der ist natürlich potentiell unendlich, wenn es vorher schlecht genug umgesetzt war. Solche Aussagen finde ich nicht unbedingt hilfreich.
Ein komplizierter Pivot von großen Tabellen, welcher komplett am Client erfolgt, erfordert meist eine signifikant größere Datenmenge, welche übertragen werden muss.
Ja klar, es geht mir nur um diese Legenden ala nimm eine SP und es rennt. Und die Leute wundern sich, dass die gleichen schlechten Verfahren in einer SP dann auch nicht (viel) schneller sind.


Zitat:
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.
Ich vermute mal mit flexibel meinte er eine Pivotabfrage einfach um Felder erweitern zu können.
Ich hatte IBExpert eher so verstanden, dass er von "frei zusammengestellten" Blöcken sprach, entgegen einer überfrachteten AllPurposeSP, unabhängig vom Pivotthema.
Aber das kann er ja vielleicht selber noch erläutern.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz