AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Datentransfer von mehreren Clients an einen Server über LAN

Datentransfer von mehreren Clients an einen Server über LAN

Ein Thema von Tempdir · begonnen am 19. Feb 2009 · letzter Beitrag vom 20. Feb 2009
Antwort Antwort
Seite 4 von 4   « Erste     234
mkinzler
(Moderator)

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

Re: Datentransfer von mehreren Clients an einen Server über

  Alt 20. Feb 2009, 11:09
Es wäre beim Inline-Aufruf der Genaratorfunktion sinnvoll sich den vergebenen Wert zurückliefern zu lassen:
insert into Testtabelle (PK_Feld, Feld1, Feld2) values (GEN_ID(Generatorname, 1), 'Wert', 'Wert) returning PK_Feld;
Markus Kinzler
  Mit Zitat antworten Zitat
mquadrat

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

Re: Datentransfer von mehreren Clients an einen Server über

  Alt 20. Feb 2009, 11:12
Und wieder was gelernt. Der Vorteil von Generatoren liegt für mich vor allem darin, dass ich mir schon die ID eines Datensatzes holen kann, bevor er überhaupt gespeichert ist. Daher hab ich den PK beim insert schon. Aber gut zu wissen, was man theoretisch machen könnte
  Mit Zitat antworten Zitat
Tempdir

Registriert seit: 19. Feb 2009
Ort: Karlsruhe
84 Beiträge
 
RAD-Studio 2009 Pro
 
#33

Re: Datentransfer von mehreren Clients an einen Server über

  Alt 20. Feb 2009, 11:23
Danke für die ganzen, sehr brauchbaren Tipps von euch!

Leider hakt es etwas: Ich mache gerade alles über die iSQL-Konsole von Firebird:

Ein Create klappt super:

Delphi-Quellcode:
SQL>CREATE DATABASE 'C:\test.fdb' page_size 8192↵
CON>user 'SYSDBA' password 'masterkey';↵
Doch dann versuche ich z.B. ein:

SQL>SELECT * FROM test;↵ und bekomme ein SQL-Error -204. Ich hab mich mit einem

CONNECT C:\test.fdb user SYSDBA password masterkey;↵ auch nochmals mit der DB verbunden, aber weder ein INSERT noch ein SELECT klappen.
  Mit Zitat antworten Zitat
mquadrat

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

Re: Datentransfer von mehreren Clients an einen Server über

  Alt 20. Feb 2009, 11:25
Du hast doch nur ne Datenbank erstellt und noch keine Tabelle?! Oder hast du das create table Statement einfach nur nicht in den Beitrag geschrieben?
  Mit Zitat antworten Zitat
Tempdir

Registriert seit: 19. Feb 2009
Ort: Karlsruhe
84 Beiträge
 
RAD-Studio 2009 Pro
 
#35

Re: Datentransfer von mehreren Clients an einen Server über

  Alt 20. Feb 2009, 11:26
SORRY richtig !

Jetzt klappt alles einwandfrei Was ich nur etwas doof finde ist, dass man bei jedem INSERT den "Generator" mitgeben muss:

INSERT INTO test (field1, field2) VALUES (gen_id(gen_test_id, 1), 'testme'); Also ein reines INSERT INTO test (field2) VALUES ('hallo'); geht leider nicht.
  Mit Zitat antworten Zitat
Tempdir

Registriert seit: 19. Feb 2009
Ort: Karlsruhe
84 Beiträge
 
RAD-Studio 2009 Pro
 
#36

Re: Datentransfer von mehreren Clients an einen Server über

  Alt 20. Feb 2009, 12:57
Also ich hab noch Probleme bei der Dauer des Verbindungsaufbaus:

Hab mir ein kleines Programm geschrieben, dass sich abwechselnd entweder mit dem Localhost-SQL-Server oder einem im Netzwerk vorhandenen SQL-Server verbindet.
Meine komponente ist die IBDatabase und so sieht die Schleife aus:

Delphi-Quellcode:
  for i:= 0 to 5 do begin
    IBDatabase1.Connected := FALSE;
    IBDatabase1.DatabaseName := '192.168.173.46:C:/TEST.FDB';
    IBDatabase1.Connected := TRUE;

    IBDatabase1.Connected := FALSE;
    IBDatabase1.DatabaseName := '127.0.0.1:C:/TEST.FDB';
    IBDatabase1.Connected := TRUE;

  end;
Zum localhost connected er sehr schnell, aber zumn Netzwerk-PC dauerts 1-2 Sekunden. Ping zu dem Netzwerkrechner ist <1ms.
  Mit Zitat antworten Zitat
mquadrat

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

Re: Datentransfer von mehreren Clients an einen Server über

  Alt 20. Feb 2009, 14:32
Zum Insert: Schau dir mal den Link an, den ich gepostet hat. Mittels eines Triggers kann man auch deine Wunschsyntax verwenden.

Benutzt du lokal und auf dem Server die gleiche Firebird-Version?
  Mit Zitat antworten Zitat
Tempdir

Registriert seit: 19. Feb 2009
Ort: Karlsruhe
84 Beiträge
 
RAD-Studio 2009 Pro
 
#38

Re: Datentransfer von mehreren Clients an einen Server über

  Alt 20. Feb 2009, 15:13
Danke @ Insert.

Sind 100% gleich die Firebird-Versionen.

Was mir aufgefallen ist: Bei oben genannter Schleife geht die CPU-Last des Netzwerk-Clients auf ca. 70%-80% hoch. Es ist zwar nur ein 300MHz Celeron, aber trotzdem etwas heftig wie ich finde - also für einen einfachen Connect. Das ist ein ziemlich großes Problem da es womöglich ein KO-Kriterium für mein Vorhaben darstellt

*edit* ich hab den Classic-Server installiert
  Mit Zitat antworten Zitat
mquadrat

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

Re: Datentransfer von mehreren Clients an einen Server über

  Alt 20. Feb 2009, 15:20
Was das Verbinden angeht isses egal ob Classic oder Superserver.

1-2 Sekunden sind zwar ungewöhnlich lang, aber solange die Queries schnell durchlaufen, dürfte das doch eigentlich kein KO Kriterium sein. Du kannst die Verbindung ja halten und nur neu aufbauen, falls sie abbricht.

Wieviele Clients hängen denn da dran, wenn das so ein Problem ist? Wenn du auf nem 300Mhz System testest wo wird das denn eingesetzt? Industrie-PC in der Fertigung?
  Mit Zitat antworten Zitat
Tempdir

Registriert seit: 19. Feb 2009
Ort: Karlsruhe
84 Beiträge
 
RAD-Studio 2009 Pro
 
#40

Re: Datentransfer von mehreren Clients an einen Server über

  Alt 20. Feb 2009, 17:17
Richtig! Es ist ein Industrie-PC der gleichzeitig eine Maschine steuert. Ich rechne mal so mit ca. 10 Clients. Wieviele es genau werden kann ich nicht exakt sagen.

Meine Lösung wär ja gewesen mit einer IB-Komponente abwechselnd zu den Clients zu connecten und dann je Client ein paar Datensätze abholen.
Ich könnte auch zu allen Clients gleichzeitig connecten und die Daten dann von jedem ständig abholen. Aber dann bräuchte ich mehrere IB-Komponenten und z.B. Threads. Oder gibt es da klügere Lösungen?

Wie gesagt, bisher läuft das ganze über TCP/IP mit TidTCPServer/-Client Komponenten und Threads. Wir haben auch darüber nachgedacht das ganze über UDP usw. zu machen, allerdings denke ich wäre es mit SQL am einfachsten zu realisieren - wenn es da nicht was gibt was ich nicht beachtet habe.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:02 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