Konzeptionierung Mehrplatzsystem
Konzeptionierung Mehrplatzsystem
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
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
-
- 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
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
-Michael
-
- 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
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.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.
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.2.Ich verwende Mysql und Zeos. Sind mit RepeatableRead als TIL alle Anomalien (bis auf PhantomRead) eleminiert?
Das gesamte Transactionhandling wird im Server ausgeführt, es gibt keine "temporär gesperrte Datasets".Und wie verhält sich Zeos dann bei temporär gesperrten DS im Falle dieser (Exceptions etc.)?
Dein Vorhaben ist anspruchsvoll, vor allem wenn sich der serverseitig getriggerte Refresh mit lokalen Änderungen überschneiden kann.
Martin
Re: Konzeptionierung Mehrplatzsystem
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
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
-
- 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
Du könntest zwischen die MySQL-Datenbank und deinem Programm noch eine Web-API dazwischenschalten, die genau diese Änderungen mitprotokolliert.
-
- 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
MSSQL ist eine sehr ordentliche DB und kann das nicht. Oracle bin ich mir gerad unsicher.aber eine ordentliche Datenbank kann (AFAIK) events ausstellen
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/
-
- 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
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 ?Christian hat geschrieben:Zeos kann das für Postgres und Firebird.
Jedenfalls bietet sich für Starkard wohl ZEOS mun Postgres an.
Gruß,
-Michael
Re: Konzeptionierung Mehrplatzsystem
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
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
-
- 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
Weil mysql schon immer andere ziele verfolgte als postgres. Weil Firmen öfter fehlentscheidungen treffen als communitys.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 ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- 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
Oder, 3-Tier gehen. Der Server kann dann einfach weg trigger generieren.
Re: Konzeptionierung Mehrplatzsystem
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
-
- 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
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/
Re: Konzeptionierung Mehrplatzsystem
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.
-
- 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
Ich lös sowas mit syncronisation
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- 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
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.starkard hat geschrieben:Naja, ich möchte ein Handheld (Barcodescanner) über wifi in das System einbinden.
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

-Michael