Welches Datenbanksystem?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Hallo,

ich habe eine Frage: Welches Datenbanksystem würdet ihr mir empfehlen?
Ich habe suche folgende Eigenschaften:
-Gute Doku(sollte in deutsch sein)
-[einfache Installation] <--optional; wäre aber gut
-Schnell
-Gute API

Ich bin von den vielen verschiedenen DBSystemen und ihren vielen APIs förmlich erschlagen worden...
Was könnt ihr mir empfehlen;womit habt ihr (gute/schlechte Erfahrungen)

LG Tobi
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Am einfachsten hast du es wohl mit SQLite, welches direkt in Python 2.5 dabei ist. Somit hast du praktisch keine Installation zu machen ;)

Die DB-API ist bei Python zum Glück immer gleich, da es ja die Allgemeine Python-DB-API gibt... Dennoch ist das eigentliche Problem allerdings, das die DBs sich unterscheiden, somit sind SQL Statements nicht direkt übertragbar :(

Deutsche Doku findest du bei MySQL, größtenteils: http://dev.mysql.com/doc/refman/5.1/de/index.html

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Danke für die schnelle Antwort.
Das einzige Problem, welches ich als ich das letzte mal mit pysqlite gearbeitet habe, festgestellt habe, ist, dass sich manchmal die SQL Statements unterscheiden. Z.B. Unterscheidet sich SQLite von MySQL in manchen fällen... Gibt es irgendwo etwas zum Nachschlagen, wo steht, was anders ist?

LG Tobi
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

CrackPod hat geschrieben:Welches Datenbanksystem würdet ihr mir empfehlen?
-Gute Doku(sollte in deutsch sein)
-[einfache Installation] <--optional; wäre aber gut
-Schnell
-Gute API
Hi Tobi!

Der Zweck heiligt die Datenbank!

Klein, fein, einfachste Installation, schnell --> SQLite

Wenn es etwas mehr sein soll, dann kann ich PostgreSQL mit psycopg2 empfehlen. PostgreSQL ist komplett frei und leistungsfähig. MySQL soll auch nicht schlecht sein.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

CrackPod hat geschrieben:Das einzige Problem, welches ich als ich das letzte mal mit pysqlite gearbeitet habe, festgestellt habe, ist, dass sich manchmal die SQL Statements unterscheiden. Z.B. Unterscheidet sich SQLite von MySQL in manchen fällen... Gibt es irgendwo etwas zum Nachschlagen, wo steht, was anders ist?
Nicht SQLite unterscheidet sich von MySQL, sondern SQLite und MySQL unterscheiden sich beide von SQL.

Hier ist eine Liste der SQL92-Features, die SQLite unterstützt.

Noch zu deiner ursprünglichen Frage: SQLite ist eher für Anwendungen gedacht, bei denen es wenige Writes gibt, für größeres ist PostgreSQL gut (welches ebenfalls schnell ist, schneller als MySQL und hat mehr Features). Die API ist in jedem Fall größtenteils gleich, da sich alle drei Datenbankanbindungen an die DB API 2.0 halten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Naja, was ich vorhabe ist einen Leistungsfähigen Vokabeltrainer zu schreiben, der unter der GPL steht. Sowas habe ich bis jetz noch nicht finden können. Oder halt nur mit Vokabeln die fest eingegeben sind. Jedoch will ich einen, mit dem man mehrere Sprachen gleichzeitig verwalten kann und auch die Vokabeln selber eingeben kann.
Also ich denk, von der Geschwindigkeit würde SQLite schon reichen.(Wenn man 4 Jahre Englischvokabeln reinschreibt wäre man wahrscheinlich bei ca 6-8.000?)
Ich habe halt shcon 1 Jahr mit MySQL Erfahrungen gemacht - unter PHP(jaja ich weiß, böses Wort =P) Ist das schwer für Python zu installieren oder gibt es anderweitig Probleme damit?

LG Tobi
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

CrackPod hat geschrieben:Z.B. Unterscheidet sich SQLite von MySQL in manchen fällen...
Hi Tobi!

Hier steht geschrieben, was SQLite unterstützt:
http://sqlite.org/lang.html

Hier steht geschrieben, was PostgreSQL unterstützt:
http://www.postgresql.org/files/documen ... l/sql.html

Und hier noch die FAQ:
http://www.postgresql.org/docs/faqs.FAQ_german.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

CrackPod hat geschrieben:was ich vorhabe ist einen Leistungsfähigen Vokabeltrainer zu schreiben
[...]
MySQL
Hi Tobi!

Für einen Vokabeltrainer kannst du PostgreSQL oder MySQL komplett vergessen. Niemand will oder wird nur wegen eines Vokabeltrainers ein komplettes Datenbanksystem installieren wollen.

Wenn schon Datenbank, dann SQLite!

Allerdings glaube ich nicht, dass eine Datenbank hier so eine gute Wahl ist.

Auch wenn du 8000 Wörter mit Übersetzungen, Erklärungen und Beispielen zusammenfasst, dann sind das wahrscheinlich nicht einmal ein MB an Daten. Diese könntest du in einem Rutsch aus einer Textdatei laden und verwenden. Ein oder zwei MB Daten -- das bemerken aktuelle Computer kaum.

Ich würde dir eher dazu raten, für jede Sprachkombination und Wissensgebiet eine gut strukturierte Textdatei anzulegen. Diese lässt sich auch ohne Programm von Menschen befüllen.
Die Lernfortschritte würde ich in eine zusätzliche Textdatei schreiben. Diese Informationen würden in der Übersetzungsdatei eher stören.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Hi CrackPod,
gerold hat geschrieben: ...
Der Zweck heiligt die Datenbank!
...
dieser Satz von Gerold hat wirklich Gewicht! Überleg Dir gut, was Dein
Vokabeltrainer alles können soll. Einzelbenutzer- / Mehrbenutzersystem?
Browser GUI? Sonstiges GUI? Datenmenge, -administration, etc.

Worauf ich hinaus möchte ist, ob für einen Vokabeltrainer wirklich ein
echter DB-Server nötig ist. Muss es überhaupt eine SQL DB sein? Lohnt
der ganze Installationsaufwand eines DB-Servers im Vergleich zu der
eigentlichen Anwendung?

Vielleicht lohnt sich ja auch ein Blick auf Pythonmodule, mit denen Du
DB Anwendungen realisieren kannst. Beispiele wären hierzu pickle (cPickle),
shelve, dbm (anydbm). Hier wird hauptsächlich mit Dictionaries gearbeitet,
was durch die Indizierung auch entsprechend schnell und elegant ist.

Tabellar

EDIT:
Uuuuppsss ... da war ich wohl etwas später dran :oops: :wink:
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gerold hat geschrieben:Ich würde dir eher dazu raten, für jede Sprachkombination und Wissensgebiet eine gut strukturierte Textdatei anzulegen.
Hi!

Ich glaube, dass ich ein Problem habe. :oops: Ich bin "pythonprogrammiersüchtig". Das linke Auge schläft bereits. Das rechte Auge habe ich nur noch halb offen, aber ich kann nicht aufhören...

german_english_test_01.voc:
http://gelb.bcom.at/trac/misc/wiki/Pyth ... datafile01

voctrain.py:
http://gelb.bcom.at/trac/misc/wiki/Pyth ... uellcode01

Zumindest gibt es jetzt wieder Code, den man in der Luft zerreißen kann. :twisted:

lg
Gerold
:-)

Edit: Code ausgelagert
Zuletzt geändert von gerold am Mittwoch 15. November 2006, 19:02, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Spontane Idee: Warum nicht YAML für die Vokabeldateien nehmen?

Gerold, dein Code wird dann bei Gelegenheit zerrissen ;)

Edit (Leonidas): Thread an dieser Stelle geteilt, die Diskussion über __slots__ findet sich in [url=http://www.python-forum.de/topic-7849.html]Für und gegen __slots__.

Edit (Leonidas): Sorry, hab die Aufteilung verbockt, man kann sie aber soweit ich weiß nicht mehr zusammenkleben :(.
Zuletzt geändert von Leonidas am Donnerstag 16. November 2006, 13:54, insgesamt 2-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

CrackPod hat geschrieben:Naja, was ich vorhabe ist einen Leistungsfähigen Vokabeltrainer zu schreiben, der unter der GPL steht. Sowas habe ich bis jetz noch nicht finden können.
Welches Betriebssystem benutzt du? Fuer Linux gibt es KVocTrain (GPL). Den finde ich total genial! Einziger Nachteil: Es ist eine KDE-Anwendung, das ist mir auf meinem alten Rechner eigentlich zu langsam. *seufz* (KVocTrain ist das einzige, was mich davon abhaelt, KDE komplett zu verbannen...)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Leonidas hat geschrieben:Noch zu deiner ursprünglichen Frage: SQLite ist eher für Anwendungen gedacht, bei denen es wenige Writes gibt, für größeres ist PostgreSQL gut (welches ebenfalls schnell ist, schneller als MySQL und hat mehr Features).
In irgendeiner Ausgabe vom Linux Magazin wurden DBs getestet. Fazit: Es kommt auf den Anwendungsfall an, welche DB die beste dafür ist. Es gibt keine DB die besser als alle anderen sind, sie Unterscheiden sich halt ehr in den Features.
Nach dem Artikel ist allerdings MySQL mit ISAM Tabellen die schnellste, weil diese am wenigsten Performance kosten.

Ob das stimmt weiß ich nicht...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Leonidas hat geschrieben:Spontane Idee: Warum nicht YAML für die Vokabeldateien nehmen?
Hi Leonidas!

Ich habe über XML, Yaml und sogar Json als Datenformat nachgedacht. Allerdings gibt es da ein Problem, wenn ich Zeilenumbrüche im Erklärungs-/Beispieltext drinnen haben möchte.

- XML scheidet wegen dem hohen Overhead aus.
- Yaml ist zwar menschenlesbar, aber bei Zeilenumbrüchen steigen mir dann doch zu viele aus. Erklär mal einem, der die Vokabeln zusammenschreiben möchte, wie Zeilenumbrüche geschrieben werden müssen und wie wichtig die korrekte Einrückung ist.
- Wenn man bei Json eine Klammer vergisst, dann funktioniert nichts mehr.

Das sind die Gründe, weshalb ich mich im Beispiel für ein serielles Datenformat entschieden habe.

- Spätestens beim nächsten "==" wird wieder alles korrekt eingelesen. Egal was für einen Fehler man vorher gemacht hat.
- gibt man zu viele "SubDelimiters" ("--") ein, dann wird der Rest in das Feld "example" hinzugefügt. Folgende Vokabeln sind vom Fehler nicht betroffen.
- Es lässt sich leicht eingeben.
- Jeder Abschnitt kann Zeilenumbrüche enthalten.
- Da die Werte direkt am Zeilenanfang beginnen, hat der, der die Datei bearbeitet, einen recht guten Überblick, wie das Endergebnis aussehen wird. (keine erzwungene Einrückung, keine besondere Formatierung,...)

Das waren so meine Überlegungen zum Datenformat.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten