Konzeptionierung Mehrplatzsystem

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

Konzeptionierung Mehrplatzsystem

Beitrag von starkard »

Hallo Zusammen,
Zur Entwicklung eines Mehrplatzsystems habe ich ein paar theoretische Frage.

1.Ist es möglich, ohne ein ständiges Refresh, die Änderungen einer Tabelle anderen Usern anzuzeigen, die diese Datenmenge schon aufgerufen haben.
Bsp:
User A und B rufen alle DS einer Tabelle auf - Darstellung über datensensitive Komponenten z.b. DBGrid.
User A verändert Daten -> Problem: User B sieht immer noch die "alten" DS

2.Ich verwende Mysql und Zeos. Sind mit RepeatableRead als TIL alle Anomalien (bis auf PhantomRead) eleminiert?
Und wie verhält sich Zeos dann bei temporär gesperrten DS im Falle dieser (Exceptions etc.)?
http://de.wikipedia.org/wiki/Isolation_%28Datenbank%29

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Konzeptionierung Mehrplatzsystem

Beitrag von mschnell »

Von Zeos habe ich keine Ahnung, aber eine ordentliche Datenbank kann (AFAIK) events ausstellen, wenn sich was ändert. Daraufhin kannst Du dann die GUI updaten.

-Michael

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Konzeptionierung Mehrplatzsystem

Beitrag von mse »

starkard hat geschrieben: 1.Ist es möglich, ohne ein ständiges Refresh, die Änderungen einer Tabelle anderen Usern anzuzeigen, die diese Datenmenge schon aufgerufen haben.
Das benötigt eine DB die Trigger und Events unterstützt. Firebird und Postgres können das, MySQL glaube ich nicht. Zudem muss eine DBEvent komponente existieren. MSEgui hat das, bei ZEOS bin ich nicht sicher. Da kann dir sicher ein ZEOS-Spezialist Auskunft geben.
2.Ich verwende Mysql und Zeos. Sind mit RepeatableRead als TIL alle Anomalien (bis auf PhantomRead) eleminiert?
Bei MySQL must du aufpassen, dass das verwendete backend Transaktionen überhaupt unterstützt. So viel ich weiss kann das nur InnoDB. Als Basis für ein Multi-User-DB System ist MySQL vielleicht nicht die erste Wahl.
Und wie verhält sich Zeos dann bei temporär gesperrten DS im Falle dieser (Exceptions etc.)?
Das gesamte Transactionhandling wird im Server ausgeführt, es gibt keine "temporär gesperrte Datasets".
Dein Vorhaben ist anspruchsvoll, vor allem wenn sich der serverseitig getriggerte Refresh mit lokalen Änderungen überschneiden kann.

Martin

starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

Re: Konzeptionierung Mehrplatzsystem

Beitrag von starkard »

Danke für die Antworten. Damit hatte ich leider nicht gerechnet, da z.b. Mysql stark verbreitet ist und dieses Problem doch eigtl. für jede grössere Software vorherrscht.

Mysql unterstützt Trigger/Events aber soweit ich das überschauen kann keine Messages.
ZEOS hat ein EventAlerter aberanscheinend nur für Firebird. Da ich sowieso InnoDB einsetzte sollten aber Transaktionen in der Form möglich sein.

Insgesamt also sehr ernüchternd für mich. Selbst wenn alle Anforderungen erfüllt wären, wäre der Aufwand für jede Tabelle ein TRIGGER zu schreiben und Server und Clientseitig zu pflegen imens.

Bleibt also nur den Usern mitzugeben selbstständig ab und zu ein refresh auszuführen oder die "dreckige" Timervariante

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Konzeptionierung Mehrplatzsystem

Beitrag von carli »

Du könntest zwischen die MySQL-Datenbank und deinem Programm noch eine Web-API dazwischenschalten, die genau diese Änderungen mitprotokolliert.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Konzeptionierung Mehrplatzsystem

Beitrag von Christian »

aber eine ordentliche Datenbank kann (AFAIK) events ausstellen
MSSQL ist eine sehr ordentliche DB und kann das nicht. Oracle bin ich mir gerad unsicher.
Bei Firebird war das bis vor nem Jahr auch noch nicht stabil.

Zeos kann das für Postgres und Firebird.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Konzeptionierung Mehrplatzsystem

Beitrag von mschnell »

Christian hat geschrieben:Zeos kann das für Postgres und Firebird.
Ich habe zwar bisher nur - und vor einigen Jahren - mit MSSQL gearbeitet, also wenig und veraltete Erfahrung mit Datenbanken, aber in diversen Diskussionen wurde immer wieder Postgres vor MySQL empfohlen. Warum kann Postgres anscheinend mehr, obwohl ja beide Kostenlos zu haben sind und es MySQL schließlich in einer (Bezahl-) Version mit garantiertem Support gibt ?

Jedenfalls bietet sich für Starkard wohl ZEOS mun Postgres an.

Gruß,
-Michael

starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

Re: Konzeptionierung Mehrplatzsystem

Beitrag von starkard »

Da ich auch für Wince auf armbasis entwicklen möchte und ich gesehen habe, dass Firebird als Client dort lauffähig sein soll habe ich es vorerst damit versucht.
Leider scheitere ich zur Zeit an einem lauffähigen Emulator für WinCe unter Win 7, da ich zur Zeit kein Gerät zu Hand habe. Der Windows Mobile emulator funtktioniert soweit.

Ich habe kein lauffähiges Iso für Virtual Pc gefunden. Auch der empfohlene Device Emulator 3 auf der wikiseite läuft nicht ohne weiteres. Ich zitiere mal von stackoverflow:

Yes, the option you've missed is that you can create your own CE image for the emulator with the emulator BSP. You then generate an image and run it with Device Emulator 3.0. The reason Microsoft no longer ships a CE emulator image is that there is no such thing as a "standard" Windows CE OS image. Generally speaking you create an image that matches whatever you've got on your specific target hardware.

Es gibt zwar eine 120-Tage trial version für den Plattformbuilder. Dieser benötigt allerdings wieder .Net framework 1.1 usw. -> Was ein Aufwand!
Weiss jemand rat? Danke im Voraus

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Konzeptionierung Mehrplatzsystem

Beitrag von Christian »

m kann Postgres anscheinend mehr, obwohl ja beide Kostenlos zu haben sind und es MySQL schließlich in einer (Bezahl-) Version mit garantiertem Support gibt ?
Weil mysql schon immer andere ziele verfolgte als postgres. Weil Firmen öfter fehlentscheidungen treffen als communitys.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Konzeptionierung Mehrplatzsystem

Beitrag von marcov »

Oder, 3-Tier gehen. Der Server kann dann einfach weg trigger generieren.

starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

Re: Konzeptionierung Mehrplatzsystem

Beitrag von starkard »

Habe jetzt Mysql, Postgres und Firebird ausprobiert um festzustellen, dass es anscheinend keine offiziellen .dlls gibt um einen Client auf einem Wince arm device laufen zu lassen. Anscheinend wird nur Sqlite supportet und gepflegt. (Ich behelfe mich wie empfohlen mit einer Middleware die DB befehle über LNET auswertet und Results als XML zur Verfügung stellt, womit ich sehr unzufrieden bin) Habe ich vielleicht etwas übersehen? Danke

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Konzeptionierung Mehrplatzsystem

Beitrag von Christian »

Da wince quasi schon gestorben ist wird sich dafür keiner mehr gross interessieren. Bei android und ios schauts aber genauso aus. Was hast du gegen sqlite ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

Re: Konzeptionierung Mehrplatzsystem

Beitrag von starkard »

Naja, ich möchte ein Handheld (Barcodescanner) über wifi in das System einbinden. Dort wird noch oft wince eingesetzt. Gegen sqlite hab ich persönlich nix und wäre eigtl. sonst eine gute Wahl. Es genügt aber nicht den Ansprüchen eines Mehplatzsystemkonzepts.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Konzeptionierung Mehrplatzsystem

Beitrag von Christian »

Ich lös sowas mit syncronisation
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Konzeptionierung Mehrplatzsystem

Beitrag von mschnell »

starkard hat geschrieben:Naja, ich möchte ein Handheld (Barcodescanner) über wifi in das System einbinden.
Das klingt aber nun wirklich nach einem Einsatzfall für Three Tier: Du nimmst eine PC-Programm, das irgendwo läuft und die Datenbank beackert. Das Programm und der Handheld tauschen über eine proprietäre Verbindung jederzeit die notwendigen Daten aus. Vermutlich einfach IP-Socket, darauf kannst Du dann machen, was Du willst.

Ich würde den Handheld mehr oder weniger als Terminal einsetzten. Alle Tastendrücke und zusätzlich natürlich die eingescannten Daten an den PC schicken. Der PC schickt Bildschirm-Updates und Scan-Aufträge. Dann kannst Du die ganze Komplexität auf den PC verlagern, wo sich alles gut testen lässt und ein ordentliches Betriebssystem (Linux :) ) läuft. Wenn später was in der Software geändert werden soll, ist es unwahrscheinlich, dass Du an den HendHeld ranmusst.

-Michael

Antworten