Seite 1 von 3
Welche Datenbank?
Verfasst: 30.12.2016 10:39
von Baba_Smurf
Hallo,
Ich bräuchte eine kleine Datenbank ala sqlite, aber mit serverUnterstützung.
Im Moment probiere Ich es mit der Postgresql.
Gibt es etwas in der Art, die nicht so komplex ist??
Ich habe z.bei die Easydb gefunden, diese soll aber buggy
Sein und dieinen Webseite des Entwicklers gibt es auch nicht mehr.
Falls es nichts empfehlenswertes gibt, bleibe ich wohl bei Postgresql.
Falls ich dabei bleiben sollte, stellt sich mir die Frage, ob man diese komplett auf einem Stick oder CD laufen lassen kann ohne Sie großartig zu installieren. Heisst das nur mein Programm darauf zugreifen kann, bzw das Man dadurch Programm auf einem Sticker komplett weitergeben kann.
Mfg
Re: Welche Datenbank?
Verfasst: 30.12.2016 12:33
von uweb
Auf die Frage gibt es wohl viele Antworten. Durch weitere Fragen könnte man die wahrscheinlich eingrenzen.
Zunächst einmal könnte man fragen wofür die DB gebraucht wird. Hast Du Dich z.B. schon auf relationale Datenbanken festgelegt?
http://db-engines.com/de/system/Elastic ... B%3BSQLite könnte ein Einstieg für eine umfassende Suche sein.
Zum Teil werden die Begriffe via Link erklärt. NoSQL ist z.B. nur ein Oberbegriff :
http://db-engines.com/de/article/NoSQL
Allerdings sind nicht alle Datenbanken dort aufgeführt. eXist z.B. fehlt.
Vielleicht tauchen beim Recherchieren ja Gesichtspunkte auf mit denen Du Dich noch gar nicht beschäftigt hast.
"no Backend & offline first" ist z.B. bei Javascript ein spannendes Thema.
https://blog.novatrend.ch/2015/01/12/ko ... he-hoodie/
Eine zentrale Datenbank bleibt dabei allerdings als Backend. Eine Peer-to-Peer-Lösung ist ein anderes Thema. Alles hat seine Vor- und Nachteile.
Aber eine zentrale Datenbank ist ja das was Du willst. Oder?
Das ganze beruht auf Synchronisation. CouchDB (Client-Server) und PouchDB (in der Anwendung) sind von der API her kompatibel. Bei MongoDB gibt es minimongo. Eine Brücke zwischen beiden wäre Mango.
http://db-engines.com/de/system/CouchDB ... %3BPouchDB
https://github.com/mWater/minimongo
https://github.com/cloudant/mango
Das Prinzip ließe sich auch auf Purebasic übertragen. Bei einer Stick-Anwendung könnte das Sinn machen.
Aber auch unabhängig von Synchronisation : Nein ich kenne keine fertige Lösung die ich in dem Fall empfehlen könnte.
Ein Beispiel für einen unfertigen Ansatz wäre :
http://purebasic.fr/english/viewtopic.php?f=14&t=42310
Re: Welche Datenbank?
Verfasst: 30.12.2016 12:55
von TroaX
Wenn du nicht viele Zugriffe auf die Datenbank hast, kannst du auch theoretisch einen kleinen Server für SQLite schreiben, der die SQLite-Datei permanent offen hat und dabei über TCP Zugriff über meherre Clients ermöglicht. Allerdings ist das ganze etwas fummeliger umzusetzen, da man es ja auch irgendwie absichern muss.
Eine ODBC-Kompatible Datenbank wäre von allen das einfachste, weil PureBasic da schon fast alle wichtigen Funktionen mitbringt. Aber welche davon schlank und schnell sind kann ich nicht sagen. PostGres ist natürlich die einfachste Möglichkeit. Aber die ist eben auch schon einiges mächtig und somit auch erst einmal zu meistern.
NoSQL sind mittlerweile meine Favoriten. Die Einfachste Implementierung wäre CouchDB, da diese über eine REST-API verfügt und somit mit nahezu jeder Programmiersprache kompatibel ist, die einen HTTP-Request INKLUSIVE REQUEST-BODY (<- Ja Anspielung mal wieder von mir auf diese meist Nutzlosen HTTP-Funktionen von PureBasic!) absenden und empfangen kann. Allerdings benötigst du da in PureBasic am besten die cURL-Lib. Sie wird zwar bei PB mitgeliefert, aber von der Funktionalität nicht ausreichend in den Befehlssatz integriert. Aber da gibt es in den beiden Foren bereits Beispiele, wie man das ändern kann. Ein weiteres Problem ist aber das Parsen der Daten. PureBasic hat zwar einen JSON-Parser. Aber damit zu arbeiten ist irgendwie .... MEHHH!!! Und CouchDB liefert JSON.
Es ist also garnicht so einfach, da die passende zu finden. Meistens bleibe ich bei einer ODBC-Kompatiblen (in PB zumindest) hängen und die, die ich bisher genutzt habe, waren weder schlank noch einfach zu konfigurieren. Bei anderen Sprachen nutze ich selten nur noch relationale Datenbanken.
Re: Welche Datenbank?
Verfasst: 30.12.2016 13:12
von mk-soft
Wenn es für Windows sein sollte, würde ich Microsoft SQL-Express nehmen.
+ Ist für Privat und Kommerziell frei.
+ Managerconsole zur Verwaltung der Datenbanken kann man mit installieren.
+ Wird von Microsoft gepflegt.
+ Installation sehr einfach. Wenn das System in Ordnung ist.
+ Bis 8GB Datenbankgröße in der Version 2012
- Muss der Endbenutzer selber herunterladen (Lizenz). Einfach Download link angeben.
Re: Welche Datenbank?
Verfasst: 30.12.2016 13:50
von ts-soft
Und dann gibt es noch FireBIRD für Linux, MacOS und Windows, OpenSource.
Verwendbar als Server/Client oder auch Embedded.
https://firebirdsql.org/
https://de.wikipedia.org/wiki/Firebird_(Datenbank)
Re: Welche Datenbank?
Verfasst: 30.12.2016 14:38
von TroaX
Ich kann mich noch an Firebird lebhaft erinnern. Meine Erfahrungen waren damit nicht so prickelnd. Aber das ist auch bestimmt schon 5 oder 6 Jahre her und da war sie schon installiert und befüllt ^^
Auf jeden Fall gibt es ODBC für Windows und Linux. Allerdings scheint die Embedded-Variante in der 3.0 weggefallen zu sein. 2.5 ist noch als Embedded verfügbar. Aber ich sehe auch gerade, das die 3er für 64 Bit gerade einmal 9 MB im Download wiegt. Die scheint wirklich sehr schlank zu sein. Kann man sich ansehen.
Re: Welche Datenbank?
Verfasst: 30.12.2016 15:21
von mk-soft
Bastel gerade mit mein Modul "NetworkData" einen einfachen SQLite-Server...
Re: Welche Datenbank?
Verfasst: 30.12.2016 15:52
von uweb
Das mit "einen kleinen Server für SQLite" war ja der letzte Link in meinem vorherigen Post.
So wie ich mk-soft vom Lesen kenne lohnt es sich aber noch etwas zu warten. Da kommt sicher etwas gutes.
Wenn Du es eilig hast, wird der Firebird-Weg vielleicht dadurch etwas erleichtert :
http://www.purebasic.fr/english/viewtop ... 12&t=66595
Um noch einmal auf meine Idee aus den Javascript-Beispielen zurück zu kommen: PouchDB und minimongo sind ja nur Javascript-"Module" die dem Rest der Anwendung vorgaukeln es bestünde eine Verbindung zu CouchDB bzw. MongoDB. Dadurch funktioniert die Anwendung auch dann wenn kein Netz verfügbar ist. Die "Module" müssen dann halt später im Netz synchronisieren. Das Prinzip sollte sich auch ohne Embedded-Version auf PureBasic und Firebird übertragen lassen. Der Aufwand dafür wäre gerechtfertigt wenn man das oft braucht oder ein Modul der Allgemeinheit zur Verfügung stellen will. Wenn es aber nur um eine einmalige Geschicht geht wäre es naheliegender einfach im Offline-Modus eine lokale Datei zu nutzen. Dann bliebe nur noch die Synchronisation zu schreiben.
Ich kenne die Möglichkeiten/Anforderungen für den konkreten Fall ja nicht im Detail. Deswegen spinne ich hier noch so eine schräge (Off-Topic-)Idee :
Wenn man den Server mitnehmen kann, könnte die Anwendung auf dem Server laufen. Als Frontend kann man dann unter Windows, Linux und OSX Purebasic verwenden. Unter Android und IOS könnte deas Frontend ein Browser mit Javascript sein. Das gleiche gilt auch für Gäste - also PC's ohne die Anwendung.
Alternativ könnte natürlich die Purebasic-Anwendung auch ganz normal auf dem Client laufen und nur der DB-Server läuft auf dem Tablet. Der programiertechnische Mehraufwand wäre dann Null.
Server mitnehmen?
http://de.wikihow.com/Einen-WLAN-Hotspo ... einrichten
Ich habe mir, als Windows 8.1 heraus kam für 80,- € (statt 129,- €) ein 7" Atom-Tablet (Stream 7) gekauf. Darauf laufen natürlich PB-Programme. Das Teil passt in jede Jackentasche und dient mir als portable Server. "portable" bezieht sich dabei halt auf die Hardware.
Re: Welche Datenbank?
Verfasst: 30.12.2016 16:53
von TroaX
Die Idee mit dem Server zum Mitnehmen ist garnicht mal so schlecht. Ich habe hier noch einen NUC mit integriertem WLAN rumliegen, den ich zur Not auch per Ethernet an einen Switch oder Router batschen kann
Ich würde aber für solche Zwecke eigentlich mittlerweile auf ein natives Frontend komplett verzichten. Der einzige Grund für ein natives Frontend wäre, wenn die Anwendungen Routinen ausführt, die sehr Zeitintensiv sind, sich nur auf die Daten des jeweiligen Nutzers beziehen und vielleicht auch Funktionalitäten benötigt, die Javascript im Browser nicht liefern kann. Ansonsten würde ich alles direkt mit Web-Frontend machen. Dadurch muss nirgends etwas installiert werden, die Updates erfolgen nur auf dem Server, die benötigte Rechenleistung als Client wäre lächerlich gering und man kann mit Responsive-Frameworks und Co. das Frontend zentral für alle Varianten an Bildschirmgrößen und Bedienungskonzepten anpassen, ohne ständig Binaries liefern zu müssen.
Aber Genug OT! B2T!
Ich habe gerade gesehen, das PostgreSQL auch ohne Installer portabel verfügbar ist:
https://sourceforge.net/projects/postgr ... es/v9.6.1/
Wird auch noch aktualisiert. Zusammen mit
HeidiSQL-Portable (Datenbankverwaltungstool) hast du eigentlich ein brauchbares Copy & Paste gespann, was du von Server zu Server kopieren kannst.
Re: Welche Datenbank?
Verfasst: 30.12.2016 17:42
von uweb
Ethernet zu haben ist gut. Es geht aber auch ohne - sogar gleichzeitig. Du kannst also mit der Lösung oben ohne zusätzlichen Adapter zuhause oder in der Firma im WLan sein und gleichzeitig ein eigenes WLan aufspannen.
Der portable Server ist eine Dauerbaustelle und ich bin mir nicht sicher ob das für Dich ein brauchbarer Copy&Paste-Ersatz ist :
https://de.wikibooks.org/wiki/Datensich ... /_ROBOCOPY
Ziel ist irgendwann Google, Pocket, Evernote, ... frei zu sein. Solange man alleine am Server bzw an einer Datei (z.B. Keepass) arbeitet reicht ein Copy um verschiedene Zustände zu vermeiden.
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.