AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken WANTED: DB für schlechte Netzwerke
Thema durchsuchen
Ansicht
Themen-Optionen

WANTED: DB für schlechte Netzwerke

Ein Thema von QuickAndDirty · begonnen am 17. Mär 2012 · letzter Beitrag vom 24. Mär 2012
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

AW: WANTED: DB für schlechte Netzwerke

  Alt 22. Mär 2012, 19:43
Zitat:
Darum wünsch ich dir Alles Gute bei der Problemfindung
. Und natürlich auch der Lösung
Markus Kinzler
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#32

AW: WANTED: DB für schlechte Netzwerke

  Alt 22. Mär 2012, 20:04
(BTW, was kennzeichnet eigentlich ein schlechtes, und ab wann spricht man von einem guten und wann haben wir das "Optimalst-Bestmögliche" Netzwerk?)
Äußerliche Eigenschaften eines guten Netzwerks:
[LIST][*]geringe Latenz
Oha, ich verstehe.

Dann ist dann eine sehr geringe Latenz ja ein Merkmal für ein sehr gutes, und gar keine Latenz bringt mir mein brutalst-mö...

SCNR.
Andreas
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#33

AW: WANTED: DB für schlechte Netzwerke

  Alt 23. Mär 2012, 09:21
Puh, da ist was los. Ist man mal ein paar Stunden weg ...

@QuickAndDirty: Auf deine mehrfach gestellte Frage:
Zitat:
Hast du Erfahrungen was schlechte Netzwerke und verschiedene DBs angeht?
Nein. Ich verdiene auch nichts dabei Firebird zu verteidigen, außer wenn du bei mir kommerzielle Unterstützung zur zielorientierten Problemlösung (die in einem öffentlichen Forum manchmal schwer ist) suchst.

Darum wünsch ich dir Alles Gute bei der Problem- und Lösungsfindung, die für dich und deine(n) Kunde(n) letztendlich zufriedenstellend ist. Und das meine ich nicht ironisch!
Danke!, vermutlich werden wir uns da selbst rein knien müssen und dem Admin sein Netzwerk konfigurieren/reparieren....am Ende können wir dann unseren Techniker vermutlich nichtmal in Rechnung stellen....

Es wäre so schön wenn sich Leistungserschleichungen dieser Art umgehen lassen würden....
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#34

AW: WANTED: DB für schlechte Netzwerke

  Alt 23. Mär 2012, 11:57
Es wäre so schön wenn sich Leistungserschleichungen dieser Art umgehen lassen würden....
Theoretisch könnte man Leistungsanforderungen an das Netz mit in die Mindestanforderungen schreiben und zum Vertragsbestandteil machen.
  Mit Zitat antworten Zitat
shmia

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

AW: WANTED: DB für schlechte Netzwerke

  Alt 23. Mär 2012, 13:51
Bei besagtem Kunden gehen 3 von 4 pings verloren!!!!
So einen Kunden hatte ich auch mal.
Probleme ohne Ende mit der Verbindung zum MS SQL Server.
Ursache war:
der "schlaue" Admin hat in den Server 2 Netzwerkkarten eingebaut.
Die IP-Adressen waren im gleichen Segment.
Dann hat er beide Netzwerkkarten mit dem gleichen Switch verbunden
in der irrigen Annahme seine Netzwerkanbindung wäre jetzt 200MBit statt nur 100MBit.
Andreas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: WANTED: DB für schlechte Netzwerke

  Alt 23. Mär 2012, 13:55
Und dazu noch ein dummer Switch, der die Loop nicht bemerkt
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#37

AW: WANTED: DB für schlechte Netzwerke

  Alt 24. Mär 2012, 18:23
Moin,

hier noch mal einen kleinen Denkanstoß zum eigentlichen Thema.

Wir hatten vor einiger Zeit mal ähnliche Konstellation und haben dann einfach auf
Firbeird basierend einen minimale API realisiert, die nicht anderes ist als eine
Stored procedure, der man den auszuführenden Befehl als Blob übergibt und die dann
ggf sich daraus ergebende Resultsets in einem Blob zurückgibt.

Hier der Quellcode der SP

Code:
create or alter procedure BRPAPI (
    CMD blob sub_type 1 segment size 80)
returns (
    RES blob sub_type 1 segment size 80)
as
declare variable RESLINE blob sub_type 1 segment size 80;
begin
  if (cmd starting with 'SELECT') then
  begin
  res='';
  for execute statement :cmd into :resline
  do res=res||'
'||resline;
  end
  else
  begin
    execute statement :cmd;
    res='EXECUTED';
  end
  suspend;

end
Wie benutzt man die dann? Auch recht simpel, z.B.

Code:
select res from brpapi('SELECT ID||'';''||TXT FROM KUNDE')
Die Antwortmenge wird durch das SQL einfach schon mal als CSV Format vorgegeben, damit müsste dann ggf der Client klar kommen.

Hier für Interessierte ein Protokoll aus dem TCPIPExpert Tool mit dem gesamten TCP/IP Traffic zu einer SQL Abfrage mit Übergabe
der Ergebnismenge (Ausführung war hier mit isql.exe)

Code:
## 18:59:59:136 Channel 1; DATA (Client -> Server): Length= 8
00 00 00 5B 00 00 00 02                             [           

## 18:59:59:435 Channel 1; DATA (Client -> Server): Length= 124
00 00 00 3E 00 00 00 00 00 00 00 44 00 00 00 02     >      D  
FF FF FF FF 00 00 00 03 00 00 00 3A 73 65 6C 65             :sele
63 74 20 72 65 73 20 66 72 6F 6D 20 62 72 70 61  ct res from brpa
70 69 28 27 53 45 4C 45 43 54 20 49 44 7C 7C 27  pi('SELECT ID||'
27 3B 27 27 7C 7C 54 58 54 20 46 52 4F 4D 20 4B ';''||TXT FROM K
55 4E 44 45 27 29 00 00 00 00 00 19 15 04 07 09  UNDE')        
0B 0C 0D 0E 10 11 12 13 08 05 07 09 0B 0C 0D 0E                
10 11 12 13 08 00 00 00 FF FF 80 00                             

## 18:59:59:464 Channel 1; DATA (Server -> Client): Length= 156
00 00 00 09 00 00 00 03 00 00 00 00 00 00 00 01                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00                 
00 00 00 09 00 00 00 04 00 00 00 00 00 00 00 00                 
00 00 00 5A 15 04 00 01 00 00 00 04 07 04 00 01     Z          
00 00 00 09 04 00 01 00 00 00 0B 04 00 09 02 00                 
00 0C 04 00 01 00 00 00 0D 04 00 04 00 00 00 0E                
04 00 08 00 00 00 10 03 00 52 45 53 11 06 00 42           RES  B
52 50 41 50 49 12 06 00 53 59 53 44 42 41 13 03  RPAPI  SYSDBA
00 52 45 53 08 05 07 04 00 00 00 00 00 01 00 00   RES          
00 00 00 01 00 00 00 00 00 00 00 00                             

## 18:59:59:466 Channel 1; DATA (Client -> Server): Length= 56
00 00 00 3F 00 00 00 03 00 00 00 01 00 00 00 00     ?           
00 00 00 00 00 00 00 00 00 00 00 41 00 00 00 03             A  
00 00 00 0C 05 02 04 00 02 00 09 00 07 00 FF 4C                L
00 00 00 00 00 00 0A A8                                         

## 18:59:59:496 Channel 1; DATA (Server -> Client): Length= 68
00 00 00 09 00 00 00 01 00 00 00 00 00 00 00 00                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00                 
00 00 00 42 00 00 00 00 00 00 00 01 00 00 00 00     B          
00 00 00 33 00 00 00 00 00 00 00 42 00 00 00 64     3       B  d
00 00 00 00                                                     

## 18:59:59:503 Channel 1; DATA (Client -> Server): Length= 20
00 00 00 38 00 00 00 00 00 00 00 01 00 00 00 00     8           
00 00 00 33                                         3           

## 18:59:59:530 Channel 1; DATA (Server -> Client): Length= 32
00 00 00 09 00 00 00 04 00 00 00 00 00 00 00 01                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00                 

## 18:59:59:532 Channel 1; DATA (Client -> Server): Length= 16
00 00 00 24 00 00 00 04 00 00 40 00 00 00 00 00     $      @     

## 18:59:59:562 Channel 1; DATA (Server -> Client): Length= 216
00 00 00 09 00 00 00 02 00 00 00 00 00 00 00 01                 
00 00 00 B6 A0 00 0D 0A 34 30 30 30 30 30 31 39          40000019
33 37 34 3B 42 61 72 0D 0A 34 30 30 30 30 30 31  374;Bar 4000001
39 34 30 38 3B 47 65 6D 65 69 6E 64 65 20 48 75  9408;Gemeinde Hu
64 65 0D 0A 34 30 30 30 30 30 31 39 36 32 31 3B de 40000019621;
57 53 0D 0A 34 30 30 30 30 30 31 39 38 30 38 3B WS 40000019808;
2D 0D 0A 34 30 30 30 30 30 32 30 36 39 33 3B 4B -  40000020693;K
61 72 73 74 65 6E 20 44 69 65 72 73 20 47 6D 62  arsten Diers Gmb
48 0D 0A 34 30 30 30 30 30 32 33 34 30 36 3B 46  H 40000023406;F
6C 6F 72 65 73 20 41 70 6F 74 68 65 6B 65 0D 0A lores Apotheke
34 30 30 30 30 30 32 39 37 35 34 3B 44 52 4B 20  40000029754;DRK
48 75 64 65 0D 0A 12 00 34 30 30 30 30 30 33 30  Hude   40000030
38 36 31 3B 5A 6F 72 62 61 73 00 00 00 00 00 01  861;Zorbas    
00 00 00 00 00 00 00 00                                         

## 18:59:59:571 Channel 1; DATA (Client -> Server): Length= 36
00 00 00 27 00 00 00 04 00 00 00 5B 00 00 00 01     '      [   
00 00 00 43 00 00 00 03 00 00 00 01 00 00 00 5B    C          [
00 00 00 01                                                     

## 18:59:59:598 Channel 1; DATA (Server -> Client): Length= 32
00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 01                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00
hier noch mal mit anderem SQL

Code:
## 19:00:40:601 Channel 1; DATA (Client -> Server): Length= 144
00 00 00 5B 00 00 00 02 00 00 00 44 00 00 00 02     [       D  
00 00 00 03 00 00 00 03 00 00 00 4F 73 65 6C 65             Osele
63 74 20 72 65 73 20 66 72 6F 6D 20 62 72 70 61  ct res from brpa
70 69 28 27 53 45 4C 45 43 54 20 49 44 7C 7C 27  pi('SELECT ID||'
27 3B 27 27 7C 7C 54 58 54 20 46 52 4F 4D 20 4B ';''||TXT FROM K
55 4E 44 45 20 57 48 45 52 45 20 49 44 3D 34 30  UNDE WHERE ID=40
30 30 30 30 32 30 36 39 33 27 29 00 00 00 00 19  000020693')    
15 04 07 09 0B 0C 0D 0E 10 11 12 13 08 05 07 09                 
0B 0C 0D 0E 10 11 12 13 08 00 00 00 FF FF 80 00                 

## 19:00:40:631 Channel 1; DATA (Server -> Client): Length= 156
00 00 00 09 00 00 00 03 00 00 00 00 00 00 00 01                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00                 
00 00 00 09 00 00 00 04 00 00 00 00 00 00 00 00                 
00 00 00 5A 15 04 00 01 00 00 00 04 07 04 00 01     Z          
00 00 00 09 04 00 01 00 00 00 0B 04 00 09 02 00                 
00 0C 04 00 01 00 00 00 0D 04 00 04 00 00 00 0E                
04 00 08 00 00 00 10 03 00 52 45 53 11 06 00 42           RES  B
52 50 41 50 49 12 06 00 53 59 53 44 42 41 13 03  RPAPI  SYSDBA
00 52 45 53 08 05 07 04 00 00 00 00 00 01 00 00   RES          
00 00 00 01 00 00 00 00 00 00 00 00                             

## 19:00:40:633 Channel 1; DATA (Client -> Server): Length= 56
00 00 00 3F 00 00 00 03 00 00 00 01 00 00 00 00     ?           
00 00 00 00 00 00 00 00 00 00 00 41 00 00 00 03             A  
00 00 00 0C 05 02 04 00 02 00 09 00 07 00 FF 4C                L
00 00 00 00 00 00 0A A8                                         

## 19:00:40:661 Channel 1; DATA (Server -> Client): Length= 68
00 00 00 09 00 00 00 01 00 00 00 00 00 00 00 00                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00                 
00 00 00 42 00 00 00 00 00 00 00 01 00 00 00 00     B          
00 00 00 3F 00 00 00 00 00 00 00 42 00 00 00 64     ?       B  d
00 00 00 00                                                     

## 19:00:40:669 Channel 1; DATA (Client -> Server): Length= 20
00 00 00 38 00 00 00 00 00 00 00 01 00 00 00 00     8           
00 00 00 3F                                        ?           

## 19:00:40:697 Channel 1; DATA (Server -> Client): Length= 32
00 00 00 09 00 00 00 04 00 00 00 00 00 00 00 01                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00                 

## 19:00:40:698 Channel 1; DATA (Client -> Server): Length= 16
00 00 00 24 00 00 00 04 00 00 40 00 00 00 00 00     $      @     

## 19:00:40:727 Channel 1; DATA (Server -> Client): Length= 68
00 00 00 09 00 00 00 02 00 00 00 00 00 00 00 01                 
00 00 00 24 02 00 0D 0A 1E 00 34 30 30 30 30 30     $      400000
32 30 36 39 33 3B 4B 61 72 73 74 65 6E 20 44 69  20693;Karsten Di
65 72 73 20 47 6D 62 48 00 00 00 01 00 00 00 00  ers GmbH      
00 00 00 00                                                     

## 19:00:40:734 Channel 1; DATA (Client -> Server): Length= 16
00 00 00 27 00 00 00 04 00 00 00 5B 00 00 00 01     '      [   

## 19:00:40:735 Channel 1; DATA (Client -> Server): Length= 20
00 00 00 43 00 00 00 03 00 00 00 01 00 00 00 5B    C          [
00 00 00 01                                                     

## 19:00:40:760 Channel 1; DATA (Server -> Client): Length= 32
00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 01                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00
und hier mal als Update statement

Code:
## 19:01:49:811 Channel 1; DATA (Client -> Server): Length= 156
00 00 00 5B 00 00 00 02 00 00 00 44 00 00 00 02     [       D  
00 00 00 03 00 00 00 03 00 00 00 5A 73 65 6C 65             Zsele
63 74 20 72 65 73 20 66 72 6F 6D 20 62 72 70 61  ct res from brpa
70 69 28 27 55 50 44 41 54 45 20 4B 55 4E 44 45  pi('UPDATE KUNDE
20 53 45 54 20 54 58 54 3D 27 27 4B 41 52 53 54   SET TXT=''KARST
45 4E 20 44 49 45 52 53 20 47 6D 62 48 27 27 20  EN DIERS GmbH''
57 48 45 52 45 20 49 44 3D 34 30 30 30 30 30 32  WHERE ID=4000002
30 36 39 33 27 29 00 00 00 00 00 19 15 04 07 09  0693')        
0B 0C 0D 0E 10 11 12 13 08 05 07 09 0B 0C 0D 0E                
10 11 12 13 08 00 00 00 FF FF 80 00                             

## 19:01:49:907 Channel 1; DATA (Server -> Client): Length= 156
00 00 00 09 00 00 00 03 00 00 00 00 00 00 00 00                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00                 
00 00 00 09 00 00 00 04 00 00 00 00 00 00 00 00                 
00 00 00 5A 15 04 00 01 00 00 00 04 07 04 00 01     Z          
00 00 00 09 04 00 01 00 00 00 0B 04 00 09 02 00                 
00 0C 04 00 01 00 00 00 0D 04 00 04 00 00 00 0E                
04 00 08 00 00 00 10 03 00 52 45 53 11 06 00 42           RES  B
52 50 41 50 49 12 06 00 53 59 53 44 42 41 13 03  RPAPI  SYSDBA
00 52 45 53 08 05 07 04 00 00 00 00 00 01 00 00   RES          
00 00 00 01 00 00 00 00 00 00 00 00                             

## 19:01:49:908 Channel 1; DATA (Client -> Server): Length= 56
00 00 00 3F 00 00 00 03 00 00 00 01 00 00 00 00     ?           
00 00 00 00 00 00 00 00 00 00 00 41 00 00 00 03             A  
00 00 00 0C 05 02 04 00 02 00 09 00 07 00 FF 4C                L
00 00 00 00 00 00 0A A8                                         

## 19:01:49:967 Channel 1; DATA (Server -> Client): Length= 68
00 00 00 09 00 00 00 01 00 00 00 00 00 00 00 00                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00                 
00 00 00 42 00 00 00 00 00 00 00 01 00 00 00 00     B          
00 00 00 80 00 00 00 00 00 00 00 42 00 00 00 64             B  d
00 00 00 00                                                     

## 19:01:49:975 Channel 1; DATA (Client -> Server): Length= 20
00 00 00 38 00 00 00 00 00 00 00 01 00 00 00 00     8           
00 00 00 80                                                     

## 19:01:50:042 Channel 1; DATA (Server -> Client): Length= 32
00 00 00 09 00 00 00 04 00 00 00 00 00 00 00 00                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00                 

## 19:01:50:044 Channel 1; DATA (Client -> Server): Length= 16
00 00 00 24 00 00 00 04 00 00 40 00 00 00 00 00     $      @     

## 19:01:50:087 Channel 1; DATA (Server -> Client): Length= 44
00 00 00 09 00 00 00 02 00 00 00 00 00 00 00 00                 
00 00 00 0A 08 00 45 58 45 43 55 54 45 44 00 00        EXECUTED
00 00 00 01 00 00 00 00 00 00 00 00                             

## 19:01:50:092 Channel 1; DATA (Client -> Server): Length= 36
00 00 00 27 00 00 00 04 00 00 00 5B 00 00 00 01     '      [   
00 00 00 43 00 00 00 03 00 00 00 01 00 00 00 5B    C          [
00 00 00 01                                                     

## 19:01:50:177 Channel 1; DATA (Server -> Client): Length= 32
00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 00                 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00
Du siehst das jeder Befehl ca. 10 Datenpaket generiert, 5 vom client zum Server und 5 vom Server zum Client.

Wenn du dir eine geeignete clientseitige API aufbaust, die dann eben mit der Serverapi klar kommt, dann
hast du den Vorteil, auch aus langsamen Netzen alles rausholen zu können und verzichtest trotzdem nicht
auf die ganzen Firebird Möglichkeiten.

wenn du den ganzen Dataset schnickschnack mit im Grid editieren usw. haben willst, dann ist das
ziemlich aufwändig, eine eigene Middleware auf der o.a. Technik aufzusetzen, aber das werden dir
auch andere Datenbanken kaum schneller liefern können.

Gruß

Holger
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
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 21:50 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