Welche Datenbank?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Welche Datenbank?

Beitrag von ts-soft »

@uweb

Danke für den Link zum FireBIRD Wrapper, sehr nützlich :allright:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Welche Datenbank?

Beitrag von TroaX »

uweb hat geschrieben:Spätestens wenn man Kalender, Einkaufszettel, Lesezeichen, Photo-Archiv, ... mit Schreibzugriff teilen möchte kommt man aber an einer feimaschigen Synchronisation nicht vorbei - unabhängig von der verwendeten Technik.
Bei dem Thema bin ich selbst noch auf der Suche.
Genau deswegen eignet es sich am besten, direkt auf dem Server zu arbeiten. Du kannst in einem Browser alle Bilder anzeigen lassen. Du kannst Uploads von Bildern entgegen nehmen. Du kannst einen Kallender anbieten/verwalten. Notizen, Einkaufszettel etc. ist alles möglich. Und Lesezeichen kannst du auch über ein Frontend auflisten. Einzig das einfügen wäre manuell. Alles bleibt zentral auf dem Server. Es kommt am Ende nur darauf an, wie viel Arbeit man in die Serversoftware (die Webanwendung) stecken will.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Welche Datenbank?

Beitrag von mk-soft »

Wenn es so viel gibt lohnt es sich überhaupt für Purebasic einen eigenen Plattform übergreifenden SQLite-Server zu schreiben?

P.S. Server ist zu 3/4 fertig. Erst mal ohne DatabaseBlop. Habe aber schon eine Lösung dafür...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Welche Datenbank?

Beitrag von TroaX »

Ganz ehrlich? Eigentlich nicht. Wer SQLite als Client-Server verwenden möchte, schreibt das entweder selbst oder verwendet ein fertiges DBMS.

Ansonsten gibt es noch:
http://www.valentina-db.com/de/sqlite-database-server
http://www.sqlabs.com/cubesql.php

Es ist eben auch problematisch mit den SQL-Standards und den Verbindungsaufbau. Wenn man SQLite mit einer REST-API verbinden würde, dann würde ich da vielleicht noch einen Sinn sehen. Es kommt auf die API an. Kostenlos sind die verlinken nur bedingt.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: Welche Datenbank?

Beitrag von uweb »

@mk-soft
Ich denke doch, weil :
1. SQLite bei PB dabei ist - es aber noch keinen PB-SQLite-Server gibt. An einer ganz anderen Baustelle würde ich mir z.B. einen Filter via Bitfeld-ID wünschen. So etwas gibt es aber nicht und die Quelltexte anderer DB sind nicht in meiner Sprache.
3. SQLite ist die mit Abstand am weitesten verbreitete Datenbank - weltweit - nicht nur im PB-Umfeld.
2. Abgesehen davon ist das wovon ich schreibe noch lange keine PB-Realität und selbst hootie, kinto und remoteStorage stecken noch in den Kinderschuhen. Das sollte Dich also nicht abschrecken.
4. Mit einem SQLite-Server würdest Du das Fundament für diese Idee erweitern bzw für PB schaffen.
5. Wenn Du den Source frei gibst und nicht an Dokumentation sparst können auch Leute wie ich ihn in die Richtung ausbauen.

Dass es grundsätzlich einen Bedarf an der Kombination Embedded und Server gibt zeigt sich ja u.a. gerade daran, dass es sie schon gibt.
Allerdings muß ich zugeben, dass ich mich über einen Pouch-Clone bzw minimongo-Clone oder etwas in der Art mehr freuen würde.
Damit meine ich einen embeded Stellvertreter für eine DB die gut synchronisiert (Stichwort verteilte DB)


@TroaX
Jein, es kommt nicht nur darauf an, wie viel Arbeit man in die Serversoftware (muß nicht zwangsläufig eine Webanwendung sein) stecken will.

"no Backend & offline first" will ja eher weg von aufwendigen Backends. Es läuft eher in Richtung synchronisierende DB-Server und ggf. vorgeschalteter schlanker Middleware mit weitsichtiger API und Plugin-Schnittstelle.

Im Moment holt sich z.B. PHP die Daten von einem MySQL-Server. Dabei ist vieleicht sogar eine DB-Abstarktionsschicht mit im Spiel. Dann wandelt PHP sie bei einer Single-Page-Anwendung in JSON und schleift sie durch einen Apache.
Viel einfacher wäre es doch wenn der Client (kann muß aber kein Browser sein) die Daten (kann muß aber kein JSON sein) direkt vom (wie auch immer gearteten) DB-Server (oder einem embeded Stellvertreter) holen würde.


Solange die Server sich synchronisieren könnte jeder einen bei sich haben oder zumindest so tun als ob - z.B. SQLite (embeded)
Ein synchronidierender PB-DB-Server könnte die gesamte Logik enthalten, über Plugins abdecken oder auf andere Server abwälzen (z.B. Mailserver, PDF-Genrierung, Konvertierung, ...).

Eine Middleware wäre gar nicht mehr notwendig.

Wenn es nur um eine Person geht reicht ein portable Server bzw embeded Stellvertreter.
Wenn es nur um einen geschlossenen Personenkreis geht reicht ein zentraler Server solange eine Verbindung besteht.
Besser wäre es wenn alle einen portabel bzw embeded Server hätten der sich sobald eine Verbindung besteht mit dem/den zentralen Server(n) abgleichen würde.

ggf. Mehrzahl weil:
Ich war z.B. an Weihnachten bei meinem Sohn zu Besuch und habe da eine Menge Photos via WhatsApp bekommen.
Es wäre doch toll gewesen wenn er die einfach nur auf seinem Server für mich hätte frei schalten müssen und mein portable Server hätte sich die Bilder geholt. Noch besser wäre es wenn mein Heim-Server das gleiche bei unserem nächsten Telefonat tun könnte. Das sollte natürlich auch für andere Dinge z.B. ein Link zu einem Thema über das wir sprechen gehen.

Bei meinem letzten Job hatte ich viel mit Friseuren zu tun. Du glaubst nicht wieviele davon nicht in der Lage sind eine Mail zu schreiben. WhatsApp geht aber immer. Das ist so schön einfach, plattformunabhängig und funktioniert auch offline - synchronisiert sich mit dem Server sobald eine Verbindung besteht.

Ich denke in die Richtung wird sich in Zukunft viel tun. Da werden sich alle Großen und eine Menge Start-Up's drauf stürzen. Dann werden Reviere erobert und verteidigt - z.B. werden es sich Anbieter mit einem attraktivem Angebot leisten können ihr eigenes Süppchen zu kochen statt auf freien Basis-Standards aufzubauen. Spätestens dabei wird sich die Spreu vom Weizen trennen. Und irgendwann (nachdem der Kuchen aufgeteilt wurde) gibt es neue Standards und Basis-Standards. Im günstigsten Fall dürfen dann z.B. die Leute von Hoodie mit am Tisch sitzen.
Mitspielen dürfen wir immer. Im Moment haben wir sogar noch eine Chance.

Eine ganz andere Spielart ist "einfach im Offline-Modus eine lokale Datei zu nutzen".
Das gibt es z.B. bei GoogleMaps. Das kann ich offline nitzen wenn ich mir vorher die passenden Kartenausschnitte herunter geladen habe. Bei einer anderen Anwendung muß ich hinterher übertragen - je nach dem copy oder sync.

Zum Thema Firebase habe ich übrigens noch etwas. Das wäre dann auch ein Beispiel, dafür, dass Android- und iOS-Clients auch in Java bzw Objective-C geschrieben sein können. Hier wird zur Abwechslung mal der PC-User in den Browser gezwungen. Singel-Page-Webanwendung, JSON, etc sind zwar momentan erste Wahl. Das liegt aber wohl auch daran, dass Javascript z.Zt. in dem Bereich auch erste Wahl ist. Es wäre schön wenn PB in dem Bereich mitspielen könnte.
https://codelabs.developers.google.com/ ... ase-web/#1
https://github.com/firebase/friendlychat
Zuletzt geändert von uweb am 30.12.2016 22:00, insgesamt 1-mal geändert.
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Welche Datenbank?

Beitrag von TroaX »

Sorry aber ich komm nicht genau mit, was du machen willst.

Zuerst redest du davon, das du einen portablen Server willst und damit weg von Google, Evernote und co. kommen willst. Dann willst du aber, das jemand zentral für dich Dateien zum Zugriff zur Verfügung stellen kann und das die Daten der Datenbank mit einem Server abgeglichen werden.

So ganz komm ich da nicht mehr hinter, was für ein Ökosystem du dir da genau vorstellst :lol:

Aber ich denke das hier ist sowieso der falsche Thread, um das zu besprechen. Ich muss sagen, das ich da schon bei der Idee ein wenig auf den Zahn fühlen möchte. Aber so ganz steig ich wirklich nicht mehr durch. Du kannst mir ja eine PN schicken, wenn du bereit dazu bist, mir das ganze nochmal von Anfang an zu erklären. Vielleicht kann ich da doch noch Tips zu geben oder etwas beitragen. Aber in diesem Thread ist es gegenüber dem Ersteller nicht mehr wirklich fair. ;)
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: Welche Datenbank?

Beitrag von uweb »

Ich denke schon, dass wir noch beim Thema sind - zumindest passt die Überschrift noch.
Da sich die Frage ja auf eine portable Anwendung (USB-Stick) bezogen hat scheint mir das mit der embeded Dantenbank die sich bei Gelegenheit mit einem DB-Server synchronisiert auch passend.
Ich komme auf Dein Angebot zurück wenn wir zu weit abkommen. Im Moment könnte aber auch für andere noch etwas dabei sein.

Also, was schwebt mir vor?
Vereinfacht gesagt:

Alle Anwendungen sollen eine embeded DB (serverlos) haben die sich synchronisiert sobald mein DB-Server in der Nähe ist. Ob sie den auch nutzen während ich sie nutze hängt von der Situation ab.
Unterwegs können die Anwendungen entweder auf meinen portable Server (geladenes Mini-Tablet) zugreifen oder (wenn das nicht möglich ist) ihre interne DB nutzen und sich bei Gelegenheit mit ihm synchronisieren.

Mein portable Server steht allen meinen Geräten (Handys, richtiges Tablet, Notebook, ... in 20 Jahren wahrscheinlich auch E-Bike und PKW) und Gastgeräten (anonym oder bekannt haben unterschiedliche Berechtigungen) zur Verfügung.

Wenn ich nachhause komme synchronisiert sich mein portable Server mit meinem stationären DB-Server in dem Maß wie ich es konfiguriert habe.
Die Bilder von der Weihnachtsfeier mit den Kollegen behalte ich z.B. bei mir.
Der stationäre DB-Server steht zunächst allen Familienmitgliedern zur Verfügung.

Er synchronisiert sich aber wiederum mit anderen stationären DB-Server so weit wie ich es will bzw die mich lassen.
(Bilder von meinem Sohn oder Hausaufgaben aus der Firma)
Zuletzt geändert von uweb am 30.12.2016 23:25, insgesamt 1-mal geändert.
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Welche Datenbank?

Beitrag von TroaX »

Sowas hatte ich mir schon fast gedacht (siehe PN). Du willst also im Grunde eine Embedded-Datenbank für die Clients nutzen, die sich dann, sobald der Hauptserver per Netzwerk erreichbar ist, ihre Daten synchronisieren. Fremden willst du den Zugang ebenfalls erlauben. schränkst aber die Ressourcen ein.

An sich ist die Idee ja gut. Aber die Umsetzung ist vor allem im Bezug auf Sicherheit wieder eine andere Sache. Denn ich habe das Gefühl, das dir etwas vorschwebt, das eigentlich ohne Internetserver auskommt. Ich denke da gibt es weitaus mehr Probleme, als du gerade im Hinterkopf hast ^^
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: Welche Datenbank?

Beitrag von uweb »

Ja, bis zum Synchronisieren der stationären DB-Server untereinander oder dem Verbinden des portable Server mit fremden stationären DB-Server war es glaube ich das wonach Baba_Smurf ursprünglich gefragt hat - eben auch ohne Internetserver.
Aber jeder liest da wohl etwas anderes heraus.
Ich wäre schon froh wenn ich nur mal so weit käme wie er (glaube ich) gefragt hat.
Deswegen werde ich hier immer mal wieder rein schauen und sobald ich wieder Zeit habe mir die beiden SQLite-Server und Firebird näher anschauen.
Mal schauen was mk-soft nun macht. Vielleicht gibt es ja irgendwann auch aus dem NoSQL-Feld etwas nach dem Vorbild von SQLite (C-Schnittstelle) mit Sync zum DB-Server.
Im Moment finde ich da nur Javascript-Lösungen.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Welche Datenbank?

Beitrag von mk-soft »

Ganz so kompliziert sollte der SQLite-Server nicht sein... Habe mal mein ersten Ansatz für einen einfachen Umgang mit SQLite-Datenbank über Netzwerk umgesetzt.

Link: http://www.purebasic.fr/german/viewtopi ... =8&t=29974
:wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten