Auf der Suche nach der richtigen Datenbank

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
marlob
User
Beiträge: 51
Registriert: Mittwoch 23. August 2006, 20:13

Hallo,

ich habe mir in Python mehrere Skripte geschrieben die Daten aus verschiedenen Quellen (Excel, csv usw.) einliest und dann mittels cheetah weiter verarbeitet (Aufgrund eines Hinweises in einem anderen Thread werde ich mir auch noch mal Jinja2 angucken :-) )
Nun zu meiner eigentlichen Frage:
Ich möchte diese nun Daten dauerhaft in einer Datenbank speichern, dort ändern und weiter verarbeiten. Folgende Vorraussetzungen müssten erfüllt sein:

Muss unter Windows laufen:
Bei uns in der Firma gibts nur Windows-Rechner, daher nichts anderes möglich

Sollte portabel sein:
Ich möchte die Projektmappe inkl. des Programms und der Daten auf einem Stick mitnehmen können und
dann bei einem Kunden weiter arbeiten können. Daher schliesse ich Datenbanken aus, die ich erst installieren muss

Replizierung möglich und sicher:
Da zur gleichen Zeit ein Kollege an dem Projekt weiter arbeiten soll, müsste ich die Daten nachher einfach abgleichen können.

Habe schon sqlite benutzt, da es portabel ist und unter Windows läuft. Ich weiss aber nicht inwieweit ich eine vernünftige
Replizierung hinbekomme. Ausserdem können sich von Projekt zu Projekt die Eingabefelder ändern, ich müsste also ab und zu das Schema anpassen, was natürlich eine Menge Aufwand wäre. Ich habe auch schon an schemalose Datenbanken gedacht (CouchDB und MongoDB). Die scheinen aber weniger für portable Desktopanwendungen geeignet zu sein.

Da ich anschliessend aus den Daten aus der Datenbank auch Dokumente generieren will (evtl. mit DITA) habe ich mich auch schon nach XML-Datenbanken umgeschaut. Leider ist auch dort die Vielfalt sehr gross.

Was ich jetzt brauche, sind ein paar gute Tipps welche Datenbank für meine Anwendung geeignet wäre und eine gute Pythonanbindung hat. Würde mich also über ein paar hilfreiche Hinweise freuen :-)
gruss
marlob
-------------------------------------
Linux Mint 17 + Python 2.7.6
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Wieso soll MongoDB nicht portabel sein? Benötigst nur die 3,7 MB (bzw. 2,4MB bei 32bit Version) große mongod.exe!

Wenn du häufige Schema-Wechsel hast, ist das eventuell empfehlenswert. Schau dir aber vorher die Themen zu Durability etc. an.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
marlob
User
Beiträge: 51
Registriert: Mittwoch 23. August 2006, 20:13

Stimmt, MongoDB kann man portabel benutzen. Habe es aber wegen der Durability ausgeschlossen. Obwohl man das sicher auch lösen könnte. Da ich aber mit mehreren Leuten mit den selben Daten arbeiten möchte und es manchmal vorkommt, das nicht alle eine Netzwerkverbindung haben, hätte ich gerne eine Master-Master-Replication. Oder kann ich das auch mit MongoDB anders lösen?
gruss
marlob
-------------------------------------
Linux Mint 17 + Python 2.7.6
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Automatische Replikation ist das Feature, auf das CouchDB so stolz ist.

Stefan
marlob
User
Beiträge: 51
Registriert: Mittwoch 23. August 2006, 20:13

Ich habe mir jetzt so einige Dokus, Blogs und andere Beiträge von CouchDB und MongoDB durchgelesen. Da ich häufige Schemawechsel habe, bietet es sich an eine der beiden zu benutzen, da sie schemafrei sind. Wichtig ist eine Automatische Replikation und natürlich will ich unter keinen Umständen Daten verlieren, was eher für CouchDB als für MongoDB spricht.
Wir legen für alle unsere Projekte die wir bearbeiten einen Projektordner an. Und jetzt möchte ich natürlich die Datenbank mit den Projektdaten natürlich auch in einem Unterordner dieses Ordner speichern.
Wenn ich z.B. sqlite benutze kann ich die Datenbank ja einfach als einfache Datei im Projektordner speichern. Bei MongoDB kann ich den Datenbankordner auch per Projekt separat speichern.
Aber wie mache ich das mit CouchDB? Muss ich dann jedesmal die Ini-Datei anpassen :-(

Oder gibt es eine andere Lösung? Vielleich hat ja noch jemand Erfahrung mit anderen Datenbanken?
gruss
marlob
-------------------------------------
Linux Mint 17 + Python 2.7.6
marlob
User
Beiträge: 51
Registriert: Mittwoch 23. August 2006, 20:13

Habe ein paar Seiten im Netz gefunden wo beschrieben wird wie man CouchDB in portablen Anwendungen nutzen kann. Werde das mal weiter verfolgen.
gruss
marlob
-------------------------------------
Linux Mint 17 + Python 2.7.6
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Plan B: Installier' dir eine Linux-Distro auf einen USB-Stick, auf der auch CouchDB läuft.

Wenn du in der Firma bist, müsstest du das Linux dann nur ins Netz bringen ODER die Speicherdatei von CouchDB auf deinen Windows-Rechner kopieren. Habe ich nie probiert, soll aber problemlos möglich sein, weil es nur eine Datei ist.

Mehrweg-Replikation (oder, wie du sagst Master-Master-Replikation) beherrscht CouchDB ootb, inkl. Konfliktmanangement.

Gruß, noisefloor
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

marlob hat geschrieben:Habe ein paar Seiten im Netz gefunden wo beschrieben wird wie man CouchDB in portablen Anwendungen nutzen kann. Werde das mal weiter verfolgen.
Wuerdest du die der Fairness halber posten? Fuer Leute mit aehnlichen Problemen und so ;)
marlob
User
Beiträge: 51
Registriert: Mittwoch 23. August 2006, 20:13

noisefloor hat geschrieben:Hallo,

Plan B: Installier' dir eine Linux-Distro auf einen USB-Stick, auf der auch CouchDB läuft.

...
Interessante Idee :-) Wird mit meinen Arbeitskollegen aber leider nicht machbar sein. Wenn das nicht Windows + Office usw. ist, dann ist das für die nicht professionell :-( Da bin ich mit meiner Überzeugungsarbeit schon öfter gegen Wände gelaufen.
Aber das ist ein anderes Thema.
gruss
marlob
-------------------------------------
Linux Mint 17 + Python 2.7.6
marlob
User
Beiträge: 51
Registriert: Mittwoch 23. August 2006, 20:13

cofi hat geschrieben:
marlob hat geschrieben:Habe ein paar Seiten im Netz gefunden wo beschrieben wird wie man CouchDB in portablen Anwendungen nutzen kann. Werde das mal weiter verfolgen.
Wuerdest du die der Fairness halber posten? Fuer Leute mit aehnlichen Problemen und so ;)
Hatte eine paar Links gefunden, habe die aber noch nicht näher verfolgt und weiss noch nicht ob es das ist was ich suche.
Werde die Links aber mal posten :-)

Für Linux gibts ein Projekt namens DesktopCouch http://www.freedesktop.org/wiki/Specifi ... sktopcouch
Es gibt aber Leute die das versucht haben nach Windows umzusetzen
http://www.themacaque.com/?p=372
http://www.kryogenix.org/days/2009/12/1 ... windowsmac

Wenn man nach "portable CouchDB" oder "standalone applications CouchDB" googlet findet man auch etwas.
http://couchapp.org/
http://books.couchdb.org/relax/example- ... plications

Aber wie gesagt, ob das das ist was ich suche muss ich erst noch weiter analysieren.
gruss
marlob
-------------------------------------
Linux Mint 17 + Python 2.7.6
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

zu den Links:

Desktop Couch ist ein Projekt, bei dem Einstellungen und Benutzerdaten (wie E-Mail Adresse etc.) in CouchDB gespeichert werden und dann auf verschiedenen Desktops = Rechnern global verfügbar sind. Ubuntu nutzt das teilweise.

CouchApp ist ein Python/jQuery "Paket", mit dem man recht komfortable Stand-alone Webapplikation bauen kann, die direkt aus CouchDB laufen.

Mit Portabilität der DB an sich hat das nichts zu tun.

Ich habe gestern Abend mal eine CouchDB DB händisch zwischen meinen Rechnern transferiert. Geht. Unter Linux muss man die Datei "db_name.couch" und das Verzeichnis ".db_name.view" aus / in die entsprechenden Verzeichnisse kopieren (bei Ubuntu: /var/lib/couchdb/0.10.0/" für CouchDB 0.10.0, dann geht's.

Gruß, noisefloor
Antworten