AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Private Online Datenbanken

Ein Thema von Whookie · begonnen am 23. Mai 2017 · letzter Beitrag vom 24. Mai 2017
Antwort Antwort
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#1

Private Online Datenbanken

  Alt 23. Mai 2017, 11:27
Ich bin gerade am überlegen, ein kleines Projekt umzusetzen, um mit FMX/Android zu spielen. Es soll eine kleine Bücherverwaltung entstehen und dafür möchte ich eine Datenbank einzusetzen, die online zur Verfügung steht. Damit könnte man dann etwa Familienmitgliedern oder Freunden einen Zugang ermöglichen oder schnell mal im Bücherladen sehen ob die aktuellen Angebote schon irgendwo im Bücherregal vor sich hin vegetieren (alles mit der App, kein Webzugang oder ähnliches).

Wenn ich diese App weiter geben möchte, sollte jeder Nutzer natürlich seine eigene Datenbank pflegen können. Daher kommen wohl nur noch Dropbox und Konsorten als Cloud-Speicher in Frage(?).

Bei Google gab es mal die Base API (ist aber offensichtlich zur Shopping API mutiert). Die scheint nicht das Richtige zu sein?

Bei DropBox habe ich die DataStore API gefunden. Hat damit schon jemand Erfahrungen (mit Delphi) gemacht?

Kennt ihr noch andere Alternativen?
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#2

AW: Private Online Datenbanken

  Alt 23. Mai 2017, 14:56
Hey

Also du hast grundsätzlich viele Möglichkeiten das umzusetzen: Entweder wie von dir beschrieben oder du besorgst dir einen Hoster deiner Wahl. Viele Webhoster haben schon mysql Datenbanken mit in Paketangeboten. Manche Anbieter legen den mysql Port nicht ins öffentliche Netz; das heißt, man hat dann nur per PHP direkt auf dem Server Zugriff zur Datenbank (und somit dann im Web z.B. durch das Webinterface phpmyadmin).

Das führt mich zur zweiten Lösung, die dich dann auch unabhängig von Datenbank oder Backendtechnologie X macht: Schreib dir ein kleines Backend, das auf dem Server den konkreten Datenbankzugriff vornimmt und das ganze nach außen per HTTP zugreifbar macht.

Wenn du das nicht in PHP machen willst, sondern lieber selbst in zum Beispiel Delphi stricken willst, dann eben einen virtuellen Server oder einen Rootserver mieten und das Programm dort als Service laufen lassen. Ich würde dir generell dazu raten ein Programm (ob nun in PHP, Delphi oder Brainfuck geschrieben) auf der Datenbank direkt laufen zu lassen und die Anfragen indirekt an die Datenbank zu stellen: Du bist flexibler was neue Versionen deines Programms angeht. Du hast es eventuell einfacher beim Migrieren. Du kannst weitere Chachelayer einfügen, falls das mal notwendig sein sollte.

Falls das eher ein kleineres Projekt ist, bei dem der Nutzerraum eher überschaubar ist, dann gibt es auch free-hoster wie z.B. square7.ch oder ähnliches, wobei ich da nicht sicher bin, ob diese Nutzung mit den AGBs vereinbar ist. Dann gibt es noch zum Beispiel uberspace.de, die man für spezielle Zwecke auch mal um was bitten kann. Des Weiteren kann man sich auch per DynDNS zu Hause zum Beispiel einen PI hinstellen auf dem dann das Konstrukt läuft (ist dann aber eben limitiert durch die Leistung des Systems und der Bandbreite deines Hausanschlusses, also will man das vielleicht nicht für öffentliche Anwendungen, die im AppStore sind...)

Gruß,
Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Private Online Datenbanken

  Alt 23. Mai 2017, 16:00
Hi, danke für deinen Input, das mit einem der iNet Hoster habe ich mir auch schon überlegt, aber der Nachteil ist, dass ich dann - gesetzt den Fall so eine App geht wirklich in den Store - für alle User die DB bereitstellen müsste...

Ich hatte mir das eher so vorgestellt:
Es gibt ein paar "große" (wie Google oder DropBox oder OneDrive), die ohnehin für jeden einen persönlichen Cloudstore (und eben evetl auch eine DB) zur Verfügung stellen. In meiner App hab ich dann eine Art "Treiberschicht" die mal das DropBox API und mal das Google API zum Lesen/Schreiben von Daten verwendet. Die App selber bezieht ihre Daten über diese Schicht und wäre auch für andere Services erweiterbar.


Den Datenspeicher und die Bandbreite dafür stellt aber der User zur Verfügung...

Im Prinzip könnte ich zum Beispiel SQLite verwenden und die Datenbankdatei dann einfach in die DropBox legen, ich bin mir aber nicht sicher ob das mit gleichzeitigem Zugriff und Synchronisierung von mehreren gleichzeitig aktiven Clients problemlos läuft (und das von Anbieter zu Anbieter ähnlich stabil ist).
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Private Online Datenbanken

  Alt 23. Mai 2017, 16:31
Wenn public Cloud dann eher FireBase.

Zum direkten Zugriff auf einen DBMS würde ich auch nicht Raten. Besser Abstraktion z.B. per REST(ful) Service.
Markus Kinzler
  Mit Zitat antworten Zitat
BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#5

AW: Private Online Datenbanken

  Alt 23. Mai 2017, 18:32
Im Prinzip könnte ich zum Beispiel SQLite verwenden und die Datenbankdatei dann einfach in die DropBox legen, ich bin mir aber nicht sicher ob das mit gleichzeitigem Zugriff und Synchronisierung von mehreren gleichzeitig aktiven Clients problemlos läuft (und das von Anbieter zu Anbieter ähnlich stabil ist).
Ah! In diese Richtung willst du Ja, stimmt dann hast du etwas leicht anderes vor: So weit ich weiß, sind die großen Clouds alle versionierungsfähig (oder bieten zumindest Locks oder andere Arten der Konflikterkennung an: Eine Cloud muss ja Konsistenz von Daten als Kernfeature haben; also wird ein Produkt, dass das ernsthaft anbietet um eine Lösung des Problems nicht drumrum kommen...). Bei Dropbox zum Beispiel gibt es upload_session-append_v2 und ergänzende für große Files (>150MB). Dropbox vermeidet das Thema File Locks afaik, indem sie einfach nur ganze Revisionen erlauben. Wie man an list_revisions erkennen kann wird das mit Revisions gelöst.

Bei normalen, kleinen Uploads zum Beispiel gibt es noch das Teil "WriteMode" zum Ausklappen:
Zitat:
WriteMode (union)
Your intent when writing a file to some path. This is used to determine what constitutes a conflict and what the autorename strategy is.
In some situations, the conflict behavior is identical: (a) If the target path doesn't contain anything, the file is always written; no conflict. (b) If the target path contains a folder, it's always a conflict. (c) If the target path contains a file with identical contents, nothing gets written; no conflict.
The conflict checking differs in the case where there's a file at the target path with contents different from the contents you're trying to write. The value will be one of the following datatypes:
add Void Do not overwrite an existing file if there is a conflict. The autorename strategy is to append a number to the file name. For example, "document.txt" might become "document (2).txt".
overwrite Void Always overwrite the existing file. The autorename strategy is the same as it is for add.
update String(min_length=9, pattern="[0-9a-f]+") Overwrite if the given "rev" matches the existing file's "rev". The autorename strategy is to append the string "conflicted copy" to the file name. For example, "document.txt" might become "document (conflicted copy).txt" or "document (Panda's conflicted copy).txt".
Das Unterstrichene im Quote könnte für dich interessant sein: Durch die "rev" erkennst du dann Konflikte. Das war jetzt halt leider nur exemplarisch für den Dienst Dropbox. Ich würde glaube ich dann bei solchen Strukturen immer "bulk"-Updates machen: Also lokal die Datenbank schreiben bis man "speichern" drückt und dann einmal eine neue Revision durch hochladen erstellen und dabei auf Konflikte prüfen (und diese gegebenenfalls automatisch durch merge auflösen, falls möglich). Mit Sicherheit gibt es da eventuell auch schon was im Internet, aber ich fand das Thema grade spannend

Es gibt bestimmt auch schon Bibliotheken, die den Zugriff auf mehrere Clouds unter einem Interface vereinheitlichen, aber da kenne ich mich leider nicht aus und das macht auch nicht so viel Spaß: Ich nehme an, dass diese Interfaces sich ab und zu ändern. Die von mir verlinkten Seiten stammen aus der "Dropbox API v2". Afaik betreiben solche Cloud Storage Betreiber die verschiedenen API Versionen eine Zeit lang parallel, damit man Zeit zum migrieren hat (aber das ist dann halt "Wartung").

Ganz anderes Thema, welches ganz kurz abgefrühstückt ist: Nimm das WebDAV Protokoll. Es gibt Unterstützung durch private Clouds wie Owncloud oder Nextcloud (ja, die Teilen sich die Codebasis, ich weiß; aber es gibt bestimmt noch weitere Beispiele) oder auch im NAS Umfeld zum Beispiel die Synology (die dann vielleicht auch am Netz hängt?). Das ist so weit verbreitet, dass es von verschiedener Software (aber leider nicht immer ganz "Mainstream") implementiert wird.

Das soll jetzt erstmal als erster Überblick reichen

Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!

Geändert von BrightAngel (23. Mai 2017 um 18:38 Uhr)
  Mit Zitat antworten Zitat
pesi

Registriert seit: 29. Aug 2003
Ort: 36217 Ronshausen
117 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Private Online Datenbanken

  Alt 24. Mai 2017, 20:18
Ich hatte mir mal den Anbieter DO.DE angeschaut und da auch mal gezielt nach dem externen Zugriff auf die dort in den diversen Paketen vorhandenen MySQL Datenbanken gefragt.
Der Typ vom Support hat zumindest behauptet, dass man sich dann nur melden müsse und dann würden sie die DB auch für den externen Zugriff freischalten würden.

Ob es stimmt habe ich bisher noch nicht selber ausprobiert, aber eine erneute Nachfrage und ein Test wäre es ja vielleicht schon wert (falls Du MySQL einsetzen möchtest)

VG
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:30 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