Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Datentransfer von mehreren Clients an einen Server über LAN (https://www.delphipraxis.net/129452-datentransfer-von-mehreren-clients-einen-server-ueber-lan.html)

Tempdir 20. Feb 2009 08:13

Re: Datentransfer von mehreren Clients an einen Server über
 
Zitat:

Wie schaut die Verbindung zwischen Clients und Server aus? LAN?
Ja! Über Netzwerk.

Wenn ich deine Realisierung richtig verstehe, dann entspricht das in etwa meiner Idee auf Seite 1 des Threads.

Darf ich fragen wieviele Clients ihr habt, und wie oft von denen Daten abgeholt werden (z.B. in der Minute, oder Sekunde...).

Und vielleicht noch was für Delphi-Komponenten bzw. Datenbanksystem zum Einsatz kam.

mquadrat 20. Feb 2009 08:19

Re: Datentransfer von mehreren Clients an einen Server über
 
Jep, nur das wir keine Flags in den Datensätzen nehmen. Die sind nämlich nach einem delete auf den Datensatz weg ;)

Derzeit hängen vier Standorte dran. Angebunden über Internet via VPN. Die Daten werden alle 3 Minuten abgeholt. Die Datenmenge variiert. Bei den kleineren Standorten ca. 50 Datensätze pro Zyklus bei den großen bis ca. 150. Angeschlossen werden noch drei bis vier weitere Standorte auch im Ausland. Als Zugriffskomponenten verwenden wir derzeit IBX. Die Datenbanken sind ein Gemisch aus 1.5er und 2.1er Firebirds. Da die VPNs (gerade ins Ausland) gerne mal zusammenbrechen wird jede Änderung in eine eigene Transaktion gepackt.

Und da sind wir auch schon beim Problem ;) Geschwindigkeit. Firebird (besonders die 1.5er) sind über Internet verdammt langsam. Aber sonst funktioniert's eigentlich :D

Tempdir 20. Feb 2009 09:11

Re: Datentransfer von mehreren Clients an einen Server über
 
Das hört sich alles gut an!

Bei mir ist Geschwindigkeit ein wichtiges Kriterium. Die Clients sind aber alle in einem LAN, jedoch sollte der Server schon mehrere Datensätze pro Sekunde einlesen können.

Ich hab mir das so gedacht, dass wenn es z.B. 5 Clients gibt, der Server immer zyklisch alle 5 clients durchgeht und von jedem dabei z.B. einen Datensatz abholt. Ich muss mal testen wie schnell sich die IP bei den IB-Komopnenten wechseln lässt und wie lange ein Transfer von einem Datensatz dauert.

Die Client-DB soll ca. 100.000 Einträge haben. Ich frage mich wie da die Zugriffszeiten sind? Mit MySQL dauerte ein einfacher SELECT ein "Wimpernzucken", allerdings hab ich mit Firebird in der Hinsicht NULL Erfahrungen.

mquadrat 20. Feb 2009 09:22

Re: Datentransfer von mehreren Clients an einen Server über
 
In nem LAN dauert das mit FB auch nicht länger. Selbst via VPN nach China gehen gehen mehrere Queries pro Sekunde ohne Probleme. Aber statt 100 halt nur 5 oder so ;)

Warum immer nur einen Datensatz? Dann biste ja mehr am Verbindung auf- und abbauen als am Daten übertragen. Aufbauen alles holen was da ist und weiter zum nächsten.

Client-DB Größe ist relativ egal. Wir dürften inzwischen irgendwo bei 2 Millionen Datensätzen je Standort liegen.

Tempdir 20. Feb 2009 09:29

Re: Datentransfer von mehreren Clients an einen Server über
 
Ja eigentlich würde es mehr Sinn machen gleich 5 oder mehr zu holen, es ging nur darum, dass alle Clients mal bedient werden und deren "maximal 100.000 Einträge-DB" nicht überläuft (also der Puffer).

Ich versuche mich gerade über die IB-Komponente mit einem Firebird-Server auf einem anderen Rechner zu verbinden, aber irgendwie klappt das nicht. Auf meinen lokalen FB-Server kann ich problemlos zugreifen. Immer diese Probleme :)

mquadrat 20. Feb 2009 09:30

Re: Datentransfer von mehreren Clients an einen Server über
 
Wieviele Datensätze kommen denn pro Sekunde / Minute / Stunde in den Client-DBs dazu bzw. werden geändert?

Zum Problem: Port in der Firewall freigegeben?

Tempdir 20. Feb 2009 09:39

Re: Datentransfer von mehreren Clients an einen Server über
 
Also die Clients fügen im Maximalfall einen Datensatz / Sekunde in ihrer Tabelle hinzu (diese ist wie gesagt auf 100.000 Einträge beschränkt, wird danach von neuem überschrieben).

PERFEKT ! Danke, es lag wirklich an der Firewall :wink: Und die Daten von C:\TestDB.fdb weden auch angezeigt. Wie es scheint dauert der Verbindungsaufbau aber 1-2 Sekunden. Dann macht es wohl Sinn mehr als nur einen Datensatz zu übertragen. Hoffentlich sind die SQL-Queries nicht so langsam :(

mquadrat 20. Feb 2009 09:44

Re: Datentransfer von mehreren Clients an einen Server über
 
Na dann haste ja einen Puffer von ~24 Stunden. Das sollte kein Problem sein.

1-2 Sekunden? Nur für die Verbindnung? Da muss noch was faul sein. Wenn ich einfach nur die Verbindung aufbau, passiert das im LAN mehr oder weniger sofort.

Tempdir 20. Feb 2009 09:58

Re: Datentransfer von mehreren Clients an einen Server über
 
Ok, woher die Verzögerung kommt kann ich NOCH nicht sagen.

Was mir noch sehr schwer fällt ist das Erstellen von Firebird DBs :( Bei MySQL gibt es ja den phpMyAdmin mit dem alles supereinfach geht.
Bei Firebird hab ich es zwar geschafft eine Tabelle zu erstellen (über das Pendant zu phpMyAdmin <-> WebAdmin) aber das mit dem Primary-Key blick ich einfach nicht :( . Zwar kann ich ein Feld als "Primary_Key" definieren, aber anscheinend benötigt man noch so etwas wie einen "Generator" usw. für die AutoIncrement Funktion?

Kurz gesagt: Ich möchte ein Feld Namens "ID" das als Primary Key (Integer) definiert ist.

Hab auch mal dieses "SQL Maestro" getestet, aber dort verstehe ich die Optionen für den Primary Key nicht.

Kann mir da jemand einen Tipp geben?

mquadrat 20. Feb 2009 10:04

Re: Datentransfer von mehreren Clients an einen Server über
 
Als Admintool empfiehlt sich z.B. IBExpert.

AutoIncrement Felder gibt es in Firebird nicht. Statt dessen gibt es sogenannte Generatoren. Das ist im Grunde ein Interger, das auf Anforderung hochgezählt wird.

Sieht dann in etwa so aus:
SQL-Code:
insert into Testtabelle (PK_Feld, Feld1, Feld2) values (GEN_ID(Generatorname, 1), 'Wert', 'Wert)
Den Generator kann man anlegen über
SQL-Code:
create generator Generatorname


EDIT:
Man kann mittels eines Triggers das AutoIncrement auch simulieren.

Weitere Infos zu den Unterschieden Migration MySQL nach Firebird


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr.
Seite 3 von 4     123 4      

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