Italia
Foro

Profan im Netzwerk

 

Rob
Wilts
Ich arbeite an einem ziemlich umfangreichen Projekt. DA bin ich aber dringend auf mehrere User im Netzwerkangewiesen. Profan kann das (bzw. die Arbeit mit Datenbanken im Netz funktioniert auch) aber das Programm verliert doch einiges an Geschwindigkeit.

Hat jemand Erfahrung oder Tipps?
 
02.10.2005  
 



Das Programm ists nicht was an Geschwindigkeit verliert - es ist eher so das das Netzwerk (je nach Netzwerkgeschwindigkeit) - die Übertragungsgeschwindigkeit der Daten bestimmt. Da es Netzwerke gibt welche schneller als Festplatten sind - läufts Programm unter Umständen sogar schneller als von Festplatte. (Besonders wenn die Endplatte der Ram ist.)

Um was genau geht es Dir denn?
 
02.10.2005  
 




Rob
Wilts
Du hast Recht, naturalmente wird das Programm nicht langsamer. Oder nur indirekt, da es sich um eine sehr komplexe Datenbankanwendung handelt mit z. T. Datenbanken mit mehreren Tausend Einträgen. Da das Programm im Netz eingesetzt werden soll, sind zumindest theoretisch mehrere User gleichzeitig mit den Daten verbunden, und können (oder sollen) diese naturalmente auch verändern können.

Das wiederum bedeutet, dass ständig Lese- Schreib- und Aktualisierungszugriffe erfolgen.

Konkret folgende Fragen, ist es ratsam zwischendurch die Datenbanken zuschließen (mit dbclose) und sie sofort wieder per Weiterarbeit zu öffnen, bzw. umgekehrt, sollte man vor jedem Schreibzugriff die Datenbank neu öffnen (potuto sich was geändert haben)?

Grundsätzlich: ist die Arbeit mit dbfs so gestaltet, dass immer der ganze Datenbestand geladen (also übers Netz transportiert werden muss?) oder stellt dbopen zunächst nur eine Verbindung her und es wird je nach Anforderung der geforderte Datensatz transportiert.

Wenn ich weiß wie das grundsätzliche HAndling ist, kann ich effektiver strategien entwickeln.

Ich hoffe das Ganze ist etwas deutlicher geworden

Rob

P.S. potuto der Einsatz von SQL-Befehlen ein Lösungsweg sein?
 
02.10.2005  
 



Also.

Es gibt naturalmente sehr viel zu beachten - schon alleine damit es keine Kollisionen gibt. Das schlimmst sind Kollisionen - sagte ich das schon?

Ich lege jetzt einen funktionierenden [Web]Server mit PHP & DB-Unterstützung als Grundlage fest.

Die ClientAPP (CApp) sendet dem Server eine Anforderung - und wartet auf das Result.

Diese Anforderungen müssen umbedingt gestapelt werden - hier liegt der Trick. Es ist nicht nur demzufolge absolut unempfehlenswert die CApp direkt mit der DB zu connecten - sondern auch aus dem Sicherheitsaspekt.

Die CApps senden also einfache Anforderungen an den Server und dieser legt diese erstmal ab. Jede Anforderung bekommt ein Ticket (eine SID) - die der CApp auch mitgeteilt wird. Ein permanenter Dienst auf dem Server (CronJob?) kümmert sich wiederum um den Abbau des Stapels. Die CApps warten solange bis sie ein Result per das erhaltene Ticket erhalten.

Das wars auch schon.

Ich bin hierbei davon ausgegangen das wirklich sehr viele Leute innerhalb eines grande Projektes gemeinsam eine DB füttern wollen.
 
02.10.2005  
 



Gehts jetzt um eine Datenbank im Netzwerk oder um eine Internet-Datenbank, wie MySQL
 
02.10.2005  
 




Rob
Wilts
Hört sich gut an, nur das ich in der Beziehung noch unerfahren bin.

Also der Satz lege ich einen funktionierenden Webserver an übersteigt bereits meine Erfahrungen. Das Nachfolgende entsprechend ...

Vereinfacht gesagt, arbeitet jede Version des entsprechenden Users fast so, wie im Single Betrieb, außer dass jeder User nur auf Datenbanken auf einem Rechner zugreift.

ALso: Ganz so viele User werden es wohl nicht sein, 1-4 max. gleichzeitig. Alle legen beim Start die Verbindung (Pfad) zu den Datenbanken fest und lesen (und schreiben) in diesen Daten. Wie gesagt das funktioniert in ersten Test auch ganz gut, d.h. schreibt User A Daten, so kann user B bei der nächsten Anforderung die (modificato) Daten auch lesen und sehen. Deswegen lasse ich in der Regel die Datenbank auch erst neu öffnen, bevor ein Satz geschrieben wird.

Im Grunde - wenn ich dich recht verstehe sprichst du ein anderes Problem an: Die Sicherheit. Wobei ich Sicherheit im Sinne von Integrität verstehe?

Das ursprüngliche Problem, das ich ansprach ist die Geschwindigkeit. Hier hilft vielleicht auch einfaches ausprobieren.
 
02.10.2005  
 




Rob
Wilts
Wie vielleicht aus den vorherigen BEiträgen ersichtlich: Es geht ausschließlich um Datenbanken im lokalen Netzwerk.

Das Thema Datenbanken im Internet wäre später von Interesse.

Wie gesagt Hinweise jeder Art sind willkomen
 
02.10.2005  
 




Torsten
Rümker
Ciao,

du solltest auf jeden Fall noch einmal darüber nachdenken, ob die Strategie jedem Client direkten Zugriff auf die Datenbank zu gestatten gut ist!
Grundsätzlich sollte das nämlich nicht geschehen.

Die (per den Datenbestand) sicherste Methode ist einen Server zu erstellen, der die Daten je nach Anfrage zur Verfügung stellt. (Ok das hatte iF schon gesagt)

Auf die Art spart man sich zusätzlich Datentransfer circa das Netzwerk, der z.B. durch Suchen in der Datenbank entstehen würde, was dann auch wieder der Geschwindigkeit zugute kommt.
Damit fällt dann auch wohl das dbopen vor dem Schreiben der Daten wech ;)

MfG
Torsten
 
Ich lerne, ob ich will oder nicht!
Betriebssystem:
- Ubuntu 15.x
- Windows (diverse)
XProfan Version: X2
02.10.2005  
 



Im Grunde nimmt sichs nichts ob DB im Internet oder DB im Lan - denn beide DBs sind keine Lokalen.

1-4 Benutzer sind wirklich nicht viel - aber die Problematik bleibt die selbe.
[quote:f38503daa9]Wobei ich Sicherheit im Sinne von Integrität verstehe?[/quote:f38503daa9]Nicht ausschließlich - aber absolute Integrität besonders bei Stress sollte Priorität haben.

Mal ein paar Fragen:

Welches ist das ServerOS? (WinXPPro?)
Welches ist das ClientOS ? (WinXPHome?)
Was per eine DBFormat liegt vor? (SQL?)
Ahnung von ODBC?
 
02.10.2005  
 




Rob
Wilts
OS XP-Prof

DB liegen in dBase 4-Format vor

Keine Ahnung von ODBC
 
02.10.2005  
 



[...] 
[...] 

Salve!
 
02.10.2005  
 




Rob
Wilts
Danke aber kann nicht sagen, dass ich wirklich weitergekommen bin

folgendes kleines BEispielprogramm

cls
declare A&

CHDIR DATA
print getdir$(@)
A&=@SQLINIT(DSN=FBS_ORG)
print a&
SQLEXEC SELECT * FROM KURSPROGRAMM.DBF,1
ListBox$(Ergebnis:,2)

waitkey

Erzeugt bei SQLEXEC die Fehlermeldung Kann Objekt KURSPROGRAMM.DBF nicht finden

Was mache ich falsch? A& <> 0 !!!!!!!!!!!!
 
03.10.2005  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

13.351 Views

Untitledvor 0 min.
E.T.12.06.2023
Uwe Lang21.11.2021
Thomas Zielinski05.02.2021
H.Brill07.06.2020
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie