AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Design Frage - Datenbanken inapp deployment und Updates
Thema durchsuchen
Ansicht
Themen-Optionen

Design Frage - Datenbanken inapp deployment und Updates

Ein Thema von fisipjm · begonnen am 14. Nov 2021 · letzter Beitrag vom 15. Nov 2021
Antwort Antwort
Seite 1 von 2  1 2      
fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#1

Design Frage - Datenbanken inapp deployment und Updates

  Alt 14. Nov 2021, 11:23
Hi,

ich hätte da mal eine Frage zum desgin einer Mobilen Anwendung. Also folgendes Vorhaben steht im Raum, ich möchte eine mobile Anwendung (hautpsächlich iOS, Android) schreiben, die Daten in einer lokalen SQLite Datenbank speichert. So weit so unspektakulär

Meine Frage ist jetzt die Folgende. Ich erstelle die App und die Datenbank, indem ich die Datenbank in das Projekt mit aufnehme, also die fertig generierte Datenbank bei Installation der App mit auf das Endgerät übertragen wird. Die Pfade sind natürlich relativ zum eingesetzten OS und das funktioniert auch alles wie gewollt.
Wie sieht das aus wenn ich im Laufe dieses Projekts neue Funktionen deployen will, Updates im Quellcode, die vielleicht auch mit Erweiterungen der Datenbank einhergehen. Wie setzt man das um? Ich gehe zum aktuellen Zeitpunkt davon aus, dass man sich damit die bestehede Datenbank wieder überschreibt, was milde gesagt suboptimal wäre
Wie geht man bei sowas vor, hat jemand Erfahrungen damit?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Design Frage - Datenbanken inapp deployment und Updates

  Alt 14. Nov 2021, 11:40
Das ist doch bei Desktop-Anwendungen nicht anders, bis auf den Vorteil, bei mobilen Anwendungen in der Regel alleinige Schreibrechte auf der DB zu haben.

Ein recht verbreitetes Vorgehen ist, bei jedem Update die nötigen SQL-Skripte auszuführen um die DB vom bestehenden in den neuen Zustand zu überführen. Dazu speichert man die DB-Version am besten direkt in der Datenbank ab. Werden bei einem Update mehrere Versionen übersprungen laufen die Updates dann kaskadiert ab.

Es ist zu beachten, dass dieses DB-Update auch nach dem Einspielen einer Datensicherung nötig sein kann - nicht nur bei einem Programmupdate.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#3

AW: Design Frage - Datenbanken inapp deployment und Updates

  Alt 14. Nov 2021, 11:59
Hi Uwe,

soweit verständlich, aber ich schiebe ja aktuell die Datenbank mit rüber bei der Erstinstallation (Ich erzeuge sie nicht durch skripte). Wird die dann beim Update nicht überschrieben wenn Sie schon existiert?

Grüße
PJM
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

AW: Design Frage - Datenbanken inapp deployment und Updates

  Alt 14. Nov 2021, 12:11
Na ja, du musst schon sicherstellen, dass die bestehende DB bei einem Update eben nicht überschrieben wird. Du könntest das so lösen, dass du die DB unter einem anderen Namen anlegst, als der unter der sie bei der Installation erstellt wird (z.B: DBWork und DBOrg). Beim ersten Programmstart fehlt dann die DBWork und du kopierst die DBOrg als DBWork. Bei einem Update kommt dann zwar eine DBOrg wieder, aber ignorierst du erstmal.

Weiterer Vorteil: Du kannst eine Funktion anbieten, mit der du die DBOrg wieder zur DBWork kopierst - so als Reset DB to Default.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#5

AW: Design Frage - Datenbanken inapp deployment und Updates

  Alt 14. Nov 2021, 12:12
Ich würde von Anfang an die DB im Code erzeugen, d.h. schlägt das Öffnen fehl, weil nicht vorhanden, wird die DB erzeugt und die notwendigen Tabellen angelegt, evtl Default-Daten eingefügt. Damit kannst Du zB die App auch komplett zurücksetzen - einfach die DB-Datei löschen.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#6

AW: Design Frage - Datenbanken inapp deployment und Updates

  Alt 14. Nov 2021, 12:47
Hmmm, also ich finde beide der vorgeschlagenen Varianten reizvoll. Wobei mir die von Uwe aktuell besser gefällt, einfach weil ich Faul bin

Als Pro Argument für die Erzeugung würde ja sprechen, dass ich den Speicherplatz spare, wobei ich, wenn ich darauf achten würde kein Delphi verwenden würde *hust*

Sonst noch pro und contra Punkte die euch einfallen, ansonsten würde ich eher zur Variante von Uwe tendieren
Danke schon mal für die Antworten an einem Sonntag, hätte ich ehrlich gesagt gar nicht mit gerechnet.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: Design Frage - Datenbanken inapp deployment und Updates

  Alt 14. Nov 2021, 13:39
Moin...

Vieleicht solltest du erzählen wofür die Datenbank verwendet wird:

1. Vorgaben der Anwendung (statisch)
2. Datenbank mit "Userdaten": Quasi Daten, die der User oder die App selbst gespeichert hat.

Bei 1.:
Datenbank kann beim Update ausgetauscht werden.

Bei 2.:
Variante 1 nicht möglich!
Zitat:
Ein recht verbreitetes Vorgehen ist, bei jedem Update die nötigen SQL-Skripte auszuführen um die DB vom bestehenden in den neuen Zustand zu überführen. Dazu speichert man die DB-Version am besten direkt in der Datenbank ab. Werden bei einem Update mehrere Versionen übersprungen laufen die Updates dann kaskadiert ab.
...so macht man das.

Wenn du nicht sicher stellen kannst, daß nie "Userdaten" in die Datenbank kommen...ausschließlich Variante 2.

Zitat:
die Daten in einer lokalen SQLite Datenbank speichert
...damit hast dir die Anwort selbst gegeben.


Geändert von haentschman (14. Nov 2021 um 13:44 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.095 Beiträge
 
Delphi 12 Athens
 
#8

AW: Design Frage - Datenbanken inapp deployment und Updates

  Alt 14. Nov 2021, 13:54
Ich würde von Anfang an die DB im Code erzeugen, ...
Jawoll, aber auch aus dem Grund weil die DB unter Umständen nicht binärkompatibel ist,
erzeugt auf Windows, gelesen aus Android.
Das kann Probleme geben (hatte sowas mal vor Jahren probiert, und bin dann auf Neuerstellung bei Android gegangen).
Sqlite ist eine DB, und kein Datenaustauschformat.

Geändert von Rollo62 (15. Nov 2021 um 08:35 Uhr)
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#9

AW: Design Frage - Datenbanken inapp deployment und Updates

  Alt 14. Nov 2021, 14:21
Moin...

Bei 2.:
Variante 1 nicht möglich!
Zitat:
Ein recht verbreitetes Vorgehen ist, bei jedem Update die nötigen SQL-Skripte auszuführen um die DB vom bestehenden in den neuen Zustand zu überführen. Dazu speichert man die DB-Version am besten direkt in der Datenbank ab. Werden bei einem Update mehrere Versionen übersprungen laufen die Updates dann kaskadiert ab.
...so macht man das.
Es geht Definitiv um Userdaten. Die sollen und dürfen auch nicht verloren gehen. Zum aktuellen Zeitpunkt ist mir das Vorgehen mit der Versionsnummer und der erweiterung der DB druch die Scripte klar, danke soweit.

Die Frage die noch im Raum Stand war, von Anfang an mit Skripten arbeiten oder den Kopievorschlag von Uwe nehmen. Oder ist das reine geschmackssache und macht dann keinen größeren Unterschied mehr?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#10

AW: Design Frage - Datenbanken inapp deployment und Updates

  Alt 15. Nov 2021, 06:17
Moin...
Zitat:
von Anfang an mit Skripten arbeiten
...ja.
Zitat:
Die sollen und dürfen auch nicht verloren gehen
...wie soll das bei einer Kopie gehen? Du müßtest dann die Daten trennen und wieder zurückspielen. Wenn die noch in den gleichen Tabellen stehen...viel Spaß!

Geändert von haentschman (15. Nov 2021 um 06:20 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 09:51 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