2009-10-24 6 views
12

Also ich schaue auf verschiedene Schlüssel: Wert (wo Wert ist entweder streng ein einzelner Wert oder möglicherweise ein Objekt) speichert für die Verwendung mit Python, und haben ein paar vielversprechende gefunden. Ich habe noch keine spezifische Anforderung, da ich mich in der Evaluierungsphase befinde. Ich bin auf der Suche nach dem, was gut ist, was schlecht ist, was sind die Eckfälle, mit denen diese Dinge gut umgehen oder nicht, etc. Ich bin mir sicher, dass einige von euch es bereits ausprobiert haben und ich würde gerne Ihre Ergebnisse hören /etc. auf den verschiedenen Schlüssel: Wert speichert mit Python. Ich suche in erster Linie an:Welcher Schlüssel: Wertspeicher für Python?

Memcached - http://www.danga.com/memcached/ Python Kunden: http://pypi.python.org/pypi/python-memcached/1.40http://www.tummy.com/Community/software/python-memcached/

CouchDB - http://couchdb.apache.org/ Python Kunden: http://code.google.com/p/couchdb-python/

Tokyo Tyrant - http://1978th.net/tokyotyrant/ Python Kunden: http://code.google.com/p/pytyrant/

Lightcloud - http://opensource.plurk.com/LightCloud/ Based auf Tokyo Tyrant, geschrieben in Python

R edis - http://redis.io/ Python Kunden: http://pypi.python.org/pypi/txredis/0.1.1

memcachedb - http://memcachedb.org/

So begann ich Benchmarking (einfach Schlüssel einsetzen und sie zu lesen) unter Verwendung einer einfachen Zählung zu erzeugen numerischen Tasten und einen Wert von „Eine kurze Textzeichenfolge“:

memcached: CentOS 5.3/python-2.4.3-24.el5_3.6, Libevent 1.4.12-stabil, memcached 1.4.2 mit Standardeinstellungen, 1 Gig-Speicher, 14.000 Einsätze pro Sekunde, 16.000 Sekunden zu lesen. Keine echte Optimierung, schön.

Memcachedb Ansprüche in der Größenordnung von 17.000 bis 23.000 Einsätze pro Sekunde, 44.000 bis 64.000 liest pro Sekunde.

Ich frage mich auch, wie die anderen Geschwindigkeit Geschwindigkeit stapeln.

+0

Schlüsselwert speichert? Du meinst eine Datenbank? – Soviut

+2

mehr Infos zu Ihren Anforderungen? (Datenbankgröße, Anzahl der Einträge, etc.) – peufeu

+1

Nun, CouchDB ist kein Schlüssel: Wertspeicher an sich, es ist eine Dokumentendatenbank, da die gespeicherten Daten nicht nur beliebige Daten, sondern ein JSON-Dokument sind. Also die Frage wird, warum Sie genauer suchen? Schemaless-Datenbanken, oder ist es wirklich nur ein Schlüssel: Wertspeicher, den Sie brauchen? Wenn Sie Schemaless Datenbanken wollen, sollten Sie ZODB in diese Liste aufnehmen. –

Antwort

6

Das hängt meistens von Ihrem Bedarf ab.

Lesen Sie Caveats of Evaluating Databases, um zu verstehen, wie sie zu bewerten sind.

+0

Eine der besten Seiten, die ich bisher gesehen habe. – Kurt

-1

Wie wäre es mit Amazon SimpleDB?

Es gibt eine Open-Source-Python-Bibliothek mit dem Namen boto für Python-Schnittstellen für Amazon Web Services.

+3

Effizienz (Latenz meistens, remote = langsam) und Kosten, ich würde es lieber lokal ausführen. – Kurt

3

shelve (Speicherung dictonaris in der Datei/Standard-Python-Modul)

ZODB - persisatnce Objektdatenbank (Python-Objekte Datenbank, keine SQL)

Mehr persistance Werkzeuge: http://wiki.python.org/moin/PersistenceTools

+0

Schön, ich hätte nicht gedacht, "Persistenz" als Keyword zu verwenden, aber es macht Sinn. – Kurt

+0

Ich mag auch diesen Ansatz besser. Auf diese Weise haben Sie eine Datenbank, die in Python-Sprache nativ ist. Was Sie im Programm brauchen, ist in etwa so (Pseudocode-Warnung) a = load_database (Datenbank) newtable = {} newtable ['key'] = 'Wert' a ['new_table'] = newtable a.save –

3

Meine 5 Cent:

Benötigen Sie verteilte Systeme mit Tera-Byte-Daten oder hoher Schreibleistung?

Nun, sie brauchen einen der großen Schlüssel: Wert/BigTable/Dynamo Art Dinge. Das würde von Cassandra, Tokyo Tyrant, Redis, etc. getan. Sie müssen sicherstellen, dass die Client-Bibliothek Sharding unterstützt, so dass Sie mehrere Datenbanken zum Schreiben haben können. Welcher hier verwendet wird, kann nur von Ihnen entschieden werden, nachdem Sie mit Daten getestet wurden, die Ihren Anforderungen entsprechen.

Benötigen Sie, dass die Daten von anderen Systemen/Sprachen als Python zugänglich sind?

Da diese Datenbanken überhaupt keine Struktur zu ihren Daten haben, wenn sie von anderen Sprachen/Clients aus zugreifbar ist, hängt Ihre Datenbank davon ab, was Sie darin speichern. Aber wenn Sie diese CouchDB benötigen, ist sie eine gute Wahl, da sie ihre Daten in einem JSON-Dokument speichert, so dass Sie Interoperabilität erhalten. Wie gut CouchDB auf wirklich massiven Daten und Sharding ist, ist jedoch unklar.

Benötigen Sie keine Interoperabilität mit anderen Sprachen als Python oder verteilten Multi-Server-Speicher?

Verwenden Sie ZODB.

+2

Beste Teil: Verwenden Sie ZODB . Wenn Sie es skalieren müssen, gibt es dafür einen Server (siehe ZEO). –