AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Was muss man beachten bei eine DB Anwenung in Netz?
Thema durchsuchen
Ansicht
Themen-Optionen

Was muss man beachten bei eine DB Anwenung in Netz?

Ein Thema von Karstadt · begonnen am 15. Mär 2006 · letzter Beitrag vom 20. Mär 2006
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#1

Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 15. Mär 2006, 12:46
Datenbank: MYSQL • Version: 4.1 • Zugriff über: Direkt
Hallo. Programmieren gerade eine DB Anwendung für mehr als 20 Benutzer.

Server-> Clientanwendung.

Was soll ich dabei besonders beauchten?

Select Anfragen so detaliert wie möglich
Nach jeden Post sofort ein Refresh

-> Wie kann ich die Aktualliesierung aller Tabellen am schlausten durchfürhen?

Danke
  Mit Zitat antworten Zitat
Hansa

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

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 15. Mär 2006, 12:55
Zitat von Karstadt:
-> Wie kann ich die Aktualliesierung aller Tabellen am schlausten durchfürhen?
1. Mit stored Procedures, die eventuell sofort benötigte (auch berechnete) Felder gleich beim Insert/Update zurückliefern. 2. Über Update/Insert die Datenbank entscheiden lassen. Entlastet eigenen Source und Logik. Allgemein gilt: möglichst viel parametrisieren und nicht so was im Klartext ins eigene Programm schreiben : 'INSERT INTO TABLE VALUE ...'. Sehe aber gerade : MySql ? Für 20 Benutzer ? Ist das Dein Ernst ?
Gruß
Hansa
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 15. Mär 2006, 12:57
Das Wichtigste ist die Datenbankmodellierung.
Also alle Tabellen benötigen einen Primärschlüssel und sind
mindestens in der 3. Normalform.
http://de.wikipedia.org/wiki/Normali...28Datenbank%29

Jeder Fremdschlüssel benötigt einen Index, da dieser für JOINs herangezogen wird.

Bei wichtigen Tabellen sollte man zusätzlich das Datum+Uhrzeit in einem TDateTime Feld speichern.
Zusätzlich sollte man auch den Computernamen in einem VARCHAR(15) Feld speichern.
Damit lässt sich später nachvollziehen, wer wann was "versaubeutelt" hat.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 15. Mär 2006, 12:57
Zitat von Hansa:
... Sehe aber gerade : MySql ? Für 20 Benutzer ? Ist das Dein Ernst ?
Und was würdes Du nehmen? Und Warum?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 15. Mär 2006, 13:05
3. Normalform macht nicht immer Sinn. Oft ist es wesentlich schneller mit redundanten Daten zu arbeiten.
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#6

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 15. Mär 2006, 13:06
Ich arbeite mit eine MYDAC Componente entwicketl extra für MQSQL.

So gehe ich vor. MyTyble = SELECT * FROM XYZ WHERE XYZBAZ=3. Wenn ich ein DS einfügen will gehe ich über MYTABLE.APPEND, EDIT, POST, DELETE. Das ist für mich viel einfacher und übersichtlicher.
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#7

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 15. Mär 2006, 13:09
Mit stored Procedures arbeiten? Wie geht das bei MYSQL 4.1? Ist das überhaupt möglich?
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#8

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 15. Mär 2006, 13:32
Zitat von Karstadt:
Mit stored Procedures arbeiten? Wie geht das bei MYSQL 4.1? Ist das überhaupt möglich?
Nö, StoredProcs kann MySQL erst ab Version 5!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 15. Mär 2006, 16:51
Ihr solltet Euch von der klassischen 2-Schichten Architektur verabschieden, also Grid anzeigen und den User durchscrollen lassen. Bei 20 Anwendern geht es zwar gerade noch (wenn die Tabellen nicht zu lang sind), aber das ist eigentlich keine Art.

Der Anwender muss wissen, was er sehen will. Bei niedriger Bandbreite und schmalbrüstigen Mainframes baut man eine Suchmaske und zeigt den gefundenen Datensatz an. Heutzutage könnte man so 10-1000 Records saugen und die in einem Grid darstellen, z.B. eine Auftragsübersicht (machen wir gerade) o.ä. Wir haben das bei der Auftragsübersicht so gelöst, das beim Aufruf nur die heutigen Aufträge angezeigt werden. Ist gerade ein Kundensatz geladen, werden die heutigen Aufträge dieses Kunden angezeigt.
Über Filtereinstellungen kann man aber beliebige andere Queries ausführen. Wir deckeln die dann jedoch über ein 'SELECT TOP 1000...' o.ä. Wichtig ist außerdem, das man einen maximalen Timout einstellt, sodaß der Anwender durch Auswahl von blödsinnigen Filterkriterien das System nicht zum Stehen bringt ("select * from Universe")

---

Ich finde es absolut zweit- wenn nicht gar drittrangig, ob man stored procedures nimmt, oder seine SQL-Befehle im Klartext im Programm konstruiert, oder nicht. Das hängt IMMER vom Einsatzgebiet ab und hat imho nix mit Multi-Tier zu tun.

Beispiel gegen Stored Procedures: Die Anwendung wird eventuell auf eine andere DB portiert. Oder MYSQL < 5.0, FlashFiler etc.
Beispiel für SQL-Befehle im Klartext: Die Anwendung basiert auf Metadaten. Die Objekte/Entities sind also gar nicht 1:1 in der DB abgebildet.

Aber, wenn ich mich auf eine DB eingeschossen habe (ich verwende MSSQL), dann habe ich mit Stored Procedures die besten Erfahrungen gemacht. Ich verwende die Mittelschicht nur, um die Verbindungen zur DB zu bündeln, und um eventuell einen Cache für bestimmte Daten einzurichten.

Die Geschäftslogik wird weitestgehend in den Stored Procedures abgebildet. Warum? Weil man es so auch im laufenden Betrieb ändern kann, ohne die Mittelschicht runterzufahren. Allen Unkenrufen zum Trotz habe ich damit bisher null Probleme gehabt. Selbst komplizierteste Geschäftsregeln lassen sich über geschickte SQL-Befehle oft verblüffend einfach realisieren. Wenn man ohne CURSOR arbeitet (was man fast immer kann), hat man absolut robuste und verdammich schnelle Lösungen, die mit klassischen Mitteln in der Mittelschicht ein vielfaches (Faktor 1000) an Zeit kosten.

Das ich ALLES über Stored Procedures und Updateable Views abbilde, hat aber nix mit dem Multitier zu tun, sondern mit meiner Prämisse, Aufgaben an Spezialisten zu deligieren. Und der DB-Server ist DER Spezialist für Daten.

Grundsätzlich würde ich nicht mit MYSQL arbeiten. Die DB ist alles andere als umsonst (wenn ihr kommerziell damit arbeitet) und wird erst langsam ein richtiges DBMS. Firebird oder eben MSSQL (in der Express-Version absolut umsonst), PostGreSQL etc. sind weitaus bessere Vertreter einer DB, stabil, ausgereift.

Was ich bei MYSQL so grauenvoll finde ist, das man bei einem Servercrash doch Angst um die Daten haben muss (Stromausfall bei einem INSERT). Das passiert garantiert NIE bei MSSQL (außer, die Platte ist hinüber).

Alter Schwede, kann man darüber viel schreiben.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Hansa

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

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 15. Mär 2006, 19:14
Zitat von Sharky:
Und was würdes Du nehmen? Und Warum?
Ich würde das nehmen, was die nötigen Werkzeuge (und zwar auch alle !) mitbringt, inkl. verfügbarer Zugriffskomponenten. Und zwar nicht als Beta-Version. Dazu gehören elementare Dinge wie : Trigger bzw. stored Procedures. Bei MySql wurden die angeblich in Version 5 neu eingeführt. Vielleicht gehts ja, oder auch nicht. Kommt jedenfalls sehr sehr spät für bereits existierende DB.
Und auch Transaktionen. Es gibt DBs, die das zumindest bei kleineren Versionen ausgespart haben, z.B. ADS. Das Kosten/Nutzen-Verhältnis muß natürlich auch stimmen. Ich bin deshalb bei IB/FB gelandet. Denn : Ora, MS-SQL und auch Mysql (!) sind vom Preis her nach oben offen ! Wer zu schnell denkt : was solls ? Transaktionen brauche ich nicht, oder mehr als 5 User auch nicht und da reicht die Light Version, der wird sich bei dem irgendwann zwangsläufigen 6. User schwarz ärgern. Dann fällt die Wahl zwischen Pest und Cholera : Programm komplett umschreiben, bestehende Daten in andere DB konvertieren. Neue DB-Komponenten kaufen und verstehen usw. Oder man tritt gleich den gang nach Canossa an : "Sie brauchen eine größere DB-Version, sonst geht das nicht" Und die kostet XXXX EUR. Dann kommt zwangsläufig :"WAAS ?? Wegen des einen bereits vorhandenen Zusatzrechners im Zweitbüro um die Ecke soll ich soviel bezahlen für IHR Programm ???". Nene, ohne mich.

Zum Hauptthema : Shmia hat ja schon einen Trick verraten : Timestamp immer schön festhalten, wer wann was gemacht hat. Womit wir bei Triggern wären : pro Table habe ich z.B. 2. Einen BI und einen AU. Der Before Insert ermittelt die ID und speichert, wer den Datensatz und auch wann angelegt hat. Der After Update Trigger geht entsprechend. Das hat jede Table schon mal standardmäßig, läßt sich aber auch auf die Spitze treiben. Und wie Alzaimer, habe auch ich gemerkt, daß das Ändern am einfachsten mit stored Procedures zu regeln ist. Allerdings ohne SQL im Source, sondern lediglich durch setzen von Parametern. Alleine schon, wie bereits gesagt, um beim Einfügen gleich Rückgabewerte zur Weiterverarbeitung zu erhalten. Gerade im Netzwerk ist das sehr wichtig ! Wie man das alles nun ohne Trigger / SPs / Transaktionen überhaupt umsetzen kann ? Wohl so ähnlich wie beim Eichhörnchen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 23:14 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