Announcement

Collapse
No announcement yet.

Client-Serverdatenbank für Android

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Client-Serverdatenbank für Android

    Guten Abend beisammen,

    ich habe folgende Aufgabe zu lösen:
    Eine Anwendung (programmiert in Pascal (Borland/FPC)) läuft auf Windows oder Linux
    Verwendete Datenbank ist Firebird 2.5 (auch aufgrund der kostenfreien Verwendung)
    Clients greifen über das Firmennetzwerk oder über eine (feste bzw. DynDNS) IP auf den Server zu.

    Nun sollen auch Tablets und Handys integriert werden. Eine Portierung auf eine andere Datenbank wäre (bei weiterer Verwendung der ZEOS- Komponenten unter Delphi/Lazarus/CodeTyphon) möglich.
    Es scheint ja eine Firebird 3.0 Beta für Android zu geben. Der Einsatz der mobilen Geräte muss auch offline möglich bleiben. Daher finde ich es wünschenswert, wenn die gleiche DB genutzt wird.

    Gibt es bessere Möglichkeiten? SQLite scheint nicht wirklich geeignet zu sein, MySQL wäre möglich (allerdings wohl mit Kosten behaftet, wenn einzig mögliche DB).

    Vielen Dank im Voraus

    Peter

  • #2
    Eine Anwendung (programmiert in Pascal (Borland/FPC)) läuft auf Windows oder Linux
    Wäre für Android neu zu entwickeln

    Dabei wäre es sinnvoll eine Client/Serveranwendung zu entwickeln. Hier wäre als Sprache wegen der Plattformunabhängigkeit Java wohl erste Wahl
    Die Geräte (PC, Tabletts) greifen nicht mehr direkt auf die DB zu, sondern auf eine Serveranwendung. Diese greift auf die DB zu und liefert die Daten aus. Hat zudem den Vorteil, dass mehr Logik auf den Server verlagert werden kann und die Clients "dümmer" sein können.

    Das nutzen der DB offline ist nochmal ein getrenntes Thema. Hier muss man die Daten auf dem Gerät zwischenspeichern und dann mit dem Server abgleichen, wenn wieder eine Verbindung besteht.
    MySQL wird unter Android nicht laufen. Eignet sich nicht für eine Offlinelösung.
    Christian

    Comment


    • #3
      Hallo Christian,

      danke für dein Feedback.
      Die Anwendungen auf den mobilen Geräten werden neu entwickelt. Das ist auch schon so erkannt.

      Genutzt wird eine gemeinsame Datenbasis, eben die vom DB- Server. Der Offline-Modus ist zwingend notwendig, ja sogar vorrangig. Online wäre nur eine Einschränkung, welche kaum verkäuflich ist.
      Eine Anwendung in Java für die mobilen Geräte (unter Android) existiert schon, ist aber suboptimal. Interessant sind im Moment Linux, Android und vermutlich auch Windows mobile. Die Programme auf echten PC's sind natürlich deutlich umfangreicher und zur Zeit für Win und Linux angedacht. Eine erste Windows- Anwendung existiert schon.

      Eine Serveranwendung würde ich gern vermeiden da es nur um die Datenhaltung geht. Wäre sicherlich stärker abstrahiert, erzwingt bei mir aber mehr Lernaufwand. Könnte ich das über einen einfachen Connect via IP lösen, dann wäre der Aufwand geringer.

      Gruß

      Peter

      Comment


      • #4
        Da macht ihr aber einen ganz schönen Overhead, um eine Anwendung auf vielen Geäten zum laufen zu bringen. Es sind ja dann Quellcodes für verschiedene Systeme zu pflegen.

        Dann ist doch aber die DB "egal". Serverseitig wird X eingesetzt, clientseitig Y.
        Es muss ja dann für die Tabletts eine DB-Verbindung local und serverseitig da sein und ein "Programm" das den Abgleich vornimmt. Solange man sich im Standard-SQL bewegt dürfte das nicht so schwierig sein.

        Ihr habt mal einen Blick auf Application-Server wie JBOSS geworfen? JPA? Client-Serveranwendungen?
        Christian

        Comment


        • #5
          Hallo Christian,

          es wird geprüft, ob eine Online- Verbindung besteht. Wenn ja, dann wird der Datenabgleich mit Server- DB und lokaler DB synchron laufen, sonst eben später.
          Die neuen Daten verändern keine vorhandene Daten sondern erweitern den Datenbestand (wie Messreihen). Daher sind "nur" Berechnungen oder Nachrichten auszutauschen (wenn möglich zeitnah).

          Ein Connect mit der Server-DB synchronisiert ja alle Geräte (wenn online) gleichzeitig, wenn ich über die gleichen Treiber (native Code) arbeiten kann, dann ist der Aufwand geringer.
          Oder übersehe ich da etwas?

          Bis jetzt kann ich alle Plattformen mit dem gleichem Compiler "bedienen", Specials wie KIOSK-Mode und ähnliches kommt dann im Feinschliff.

          Gruß

          Peter

          Comment


          • #6
            Bis jetzt kann ich alle Plattformen mit dem gleichem Compiler "bedienen",
            Welcher ist das?

            Specials wie KIOSK-Mode
            KIOSK-Mode? Browser?

            Ein Connect mit der Server-DB synchronisiert ja alle Geräte (wenn online) gleichzeitig,
            Automatisch sicher nicht. Das muss m.E. programmiert werden

            wenn ich über die gleichen Treiber (native Code) arbeiten kann, dann ist der Aufwand geringer.
            Ja
            Christian

            Comment


            • #7
              Also im Moment bin ich bei CodeTyphon/Lazarus und Delphi.
              Ich betrachte das mal als "gleicher" Compiler.

              Mit Kiosk- Mode meinte ich eigentlich nur eine Anwendung im Vordergrund ohne Zugriff auf das Gerät.
              Und natürlich muss Letzteres programmiert werden, ist aber bei gleicher Datenbasis einigermaßen anspruchslos.

              Back to the roots , welche DB wäre jetzt auf PC- Systemen und mobilen Geräten im Multiuserzugriff zu empfehlen (und möglich)?

              Gruß

              Peter

              Comment


              • #8
                Also im Moment bin ich bei CodeTyphon/Lazarus und Delphi.
                Nunja, wenn das plattformübergreifend für Windows, Linux und Android ist

                PC-System erübrigt sich, da diese wohl auf die ServerDB zugreifen können
                Mobil System -> Online können sie auch auf den Server zugreifen
                Mobil System -> Offline würde ich SQLite nehmen

                Für die Server DB läuft ja wohl schon Firebird
                Offline für die Mobilgeräte werden wohl 2 Verbindungen gebraucht.
                Christian

                Comment


                • #9
                  Hallo Christian,

                  vielen Dank für deine Geduld! Du scheinst nicht viel von diesem Weg zu halten? Ich kann kein Java, aber das was wir an Code haben wirft mich nicht um.

                  Leider bin ich am gleichen Punkt bzgl. DB angelangt. Zu klären wäre immer noch die Lösung Firebird 3.0 auf Android.
                  Wäre schön schick (wenn es nicht nur embedded ist).

                  Gruß

                  Peter

                  Comment


                  • #10
                    http://www.firebirdnews.org/firebird...roid-download/

                    Die Lösung auf den mobilen Geräten kann doch nur "embedded" sein. Wenn keine Onlineverbindung da ist, dann muss lokal gearbeitet werden.


                    Nein, den Weg halt ich für steinig und risikoreich.
                    Ich kenne CodeTyphon/Lazarus nicht. Halte es aber aufgrund mangelhafter Verbreitung? für risikoreich. Da kann ganz schnell der Support oder die weitere Bereitstellung beendet werden. Du bist sicher, die erzeugen aus Delphi Code für Android?
                    Delphi war toll, ist aber m.E. durch Borland & Co genau wie der C++Builder einfach zugrundegerichtet worden.

                    Es gibt erprobte Applicationserver, die skalierbar sind, große Mengen von Anfragen bearbeiten können (JBOSS).
                    Die Trennung in eine Serveranwendung und eine Clientanwendung vereinfacht das ganze Handling mit der DB.
                    Java als Sprache ist plattformübergreifend und es gibt fast nichts, was nicht schon einer mal irgendwo programmiert hat und zur Verfügung stellt. Weiterhin stehen erprobte Frameworks zur Verfügung.
                    Die Aufteilung der Anwendung nach dem MVC-Pattern könnte auch dazu führen, mal den Client ggf. durch eine Webanwendung zu ersetzen, ohne das dann im Backend an der DB rumgespielt werden muss.

                    Natürlich das das nicht machbar, wenn man das KnowHow dafür erst aufbauen muss. Und dann noch womöglich alleine.....
                    Christian

                    Comment


                    • #11
                      Darf ich mal fragen, welche Synchronisierungsfälle vorkommen? Bidirektional offenbar, auch konkurrierend?

                      Unter Android würde ich derzeit auf sqlite setzen, einfach weil es seit "Lichtjahren" erprobt ist.
                      Firebird 3.0 gibt es dagegen seit Lichtjahren auf der Roadmap, neuerdings sogar für Android, da würde ich mich mal entspannt zurücklehnen und abwarten.
                      Da es in der Clientanwendung auch wohl kaum um irgendwelche DB Sonderlocken geht, ist es am Ende egal, wenn man das SQL statt gegen sqlite gegen fb laufen lässt oder?

                      Was die Implementierung angeht, Thema "offline", würde ich eine vollständige Implentierung clientseitig machen. Synchronisation hinten dran, aus sqLite.
                      Gruß, defo

                      Comment


                      • #12
                        Hallo Defo,

                        vielen Dank für dein Interesse.
                        Es geht um personenbezogenen und projektbezogene Zeiten welche auf den mobilen Geräten (zusammen mit anderen Daten) gesammelt und auf der Serverdatenbank weiter verarbeitet werden.
                        Summen und weitere Informationen (Termine, Ereignisse, Dokumente) sollen auf den mobilen Geräten abgefragt und angezeigt werden können.

                        Zwischenzeitlich können (allerdings eher theoretisch) Fälle vorkommen, wo der gleiche Datensatz manuell auf einem PC editiert wurde. Allerdings habe ich hier Vorsorge getroffen, dass keine Änderungen überschrieben werden.
                        Manuelles Editieren vorhandener Daten auf den mobilen Geräten ist der einzige Sonderfall mit der Gefahr von Datenschwund. Das würde ich auf den online- Modus beschränken.

                        Offline werden vorläufige Ergebnisse angezeigt und neue Daten in der DB des mobilen Endgerätes abgelegt.


                        Insgesamt eigentlich nicht soo kompliziert finde ich.

                        Gruß

                        Peter
                        Zuletzt editiert von petermaennchen; 02.09.2015, 07:53.

                        Comment


                        • #13
                          Hallo Christian,

                          du hast vollkommen recht. Meine Lebenszeit ist begrenzt und das Ergebnis muss in realistischer Zeit vorliegen.
                          Eine Webanwendung hat Ihre Vor- und Nachteile, ebenso Java.

                          Soll das Ergebnis auch optisch überzeugen und sollen Gerätespezifische Eigenheiten integriert werden, dann ist eine Anpassung immer notwendig. Der Vorteil von Java schrumpft dann.
                          Ich habe mir Lazarus schon seit einer Weile angesehen und empfinde die aktuellen Versionen als recht stabil. Die Entwicklung ist deutlich schneller als im kommerziellen Umfeld und was man für Pascal nicht findet findet man in anderen Sprachen auch nicht.
                          CodeTyphon ist nur Lazarus mit einer Erweiterung bezüglich Multiplattformen. In allen Fällen steckt FPC dahinter (und das ist gut).

                          Das Verkaufsmodell Embarcadero ist mittlerweile etwas abgehoben. Jedes Jahr eine neue Version für um 1.500,-- € (Architekt Einzelplatz) ist schon heftig.

                          Gruß

                          Peter

                          Comment

                          Working...
                          X