2010-12-01 9 views
10

Ich lerne SQLAlchemy mit einer SQL-Datenbank für 12 relationale Standardtabellen (z. B. SQLite oder PostgreSQL) verbunden zu verwenden. Aber dann würde ich gerne Redis mit Python für ein paar Tabellen verwenden, besonders für Redis 'schnelle Mengenmanipulation. Ich weiß, dass Redis NoSQL ist, aber kann ich dies mit SQLAlchemy für die Sitzung und Thread-Behandlung, die SQLAlchemy hat, integrieren?Wie Redis mit SQLAlchemy zu integrieren

Gibt es einen Redis SA-Dialekt? Ich konnte es nicht finden, was wahrscheinlich bedeutet, dass mir ein grundlegender Punkt fehlt. Gibt es eine bessere Architektur, die ich verwenden sollte, um zwei verschiedene Arten von Datenbanken zu verwenden?

+0

Was ist Ihr Anwendungsfall? –

Antwort

13

Während es möglich ist, ein ORM einzurichten, das Daten in redis versetzt, ist dies keine besonders gute Idee. ORMs wurden entwickelt, um Standard-SQL-Funktionen verfügbar zu machen. Viele Dinge, die in SQL Standard sind, wie das Abfragen beliebiger Spalten, sind in Redis nur verfügbar, wenn Sie viel zusätzliche Arbeit erledigen. Zur gleichen Zeit hat redis Funktionen wie die Manipulation von Mengen, die in Standard-SQL nicht vorhanden sind und daher nicht vom ORM verwendet werden.

Ihre beste Option ist wahrscheinlich, Ihren Code zu schreiben, um direkt mit redis zu interagieren, anstatt zu versuchen, eine unpassende Abstraktion zu verwenden - Im Allgemeinen werden Sie feststellen, dass der Code, um Daten aus redis zu bekommen, ein bisschen einfacher ist als der SQL-Code rechtfertigt die Verwendung eines ORM.

9

Redis ist ein sehr gut bei dem, was er tut, speichert Schlüsselwerte und macht einfache atomare Operationen, aber wenn Sie es als relationale Datenbank verwenden wollen, werden Sie wirklich leiden !, wie ich hatte ... und hier ist meine Geschichte ...

Ich habe etwas tun, so dass mehrere Objekte zu abstrahieren alle Redisierungen Internal Exposings primitiven Abfragen (ich nannte Filter in meinem Code), get, Set, Updates und viele weitere Methoden Das können Sie von einem ORM erwarten, und wenn Sie nur mit localhost arbeiten, werden Sie Ihre Anwendung nicht langsam fühlen. Sie können relis als relationale Datenbank verwenden, aber wenn Sie zu irgendeinem Zeitpunkt versuchen, Ihre Datenbank in eine andere zu verschieben Gastgeber, das wird eine Menge Probleme in Bezug auf die Netzwerkübertragung darstellen, ich beende up mit einem neu gehackten Klassen mit redis und seine Rohre, die es mein Programm wie 900% schneller machen, so dass mein Programm im lokalen Netzwerk verwendbar, sowieso ich beginne, meine Datenbankbibliothek zu Postgres zu bewegen.

Die Lektion dieser Geschichte ist, nie zu versuchen, eine relationale Datenbank mit dem Schlüsselwertmodell zu erstellen, funktioniert hervorragend bei grundlegenden Operationen, aber der Preis von nicht die Möglichkeit Beziehungen in Ihrem Server zu machen, ist mit hohen Kosten verbunden .

Zurück zu Ihrer Frage, ich weiß kein Projekt, um einen Adapter zu sqlalchemy für redis zu machen, und ich denke, dass niemand wirklich an so etwas interessiert sein wird, wegen der Natur jedes Projekts.

+2

+1, um meine Geschichte zu erzählen :( – Behrooz