NoSQL-Datenbanken unter Django

0 | 3630 Aufrufe
Sie können diese Wikiseite nach der Anmeldung auf Webmasterpro bearbeiten. Helfen Sie mit und verbessern Sie "NoSQL-Datenbanken unter Django" mit Ihrem Wissen!

Anzeige Hier werben

Was ist NoSQL?

Es ist eine Bewegung, neue Arten von Datenbanken voranzutreiben. Im Prinzip wird ganz von der Sprache SQL abgesehen und meistens Java, JavaScript oder C++ als Programmiersprache benutzt. Durch den nicht-relationalem Ansatz wird die Loslösung von festgelegten/vorgegebenen Tabellenschematas und die Vermeidung von Joins verfolgt. Im Gegensatz zu den üblicherweise unter Leisungsproblemen leidenden relationalen Datenbanken können NoSQL-Datenbanken mit vielen Schreib-/Leseanfragen umgehen. Prominente Verwendungsbeispiele sind hierfür Internetseiten wie Digg, Facebook oder eBay.

Was ist Django-nonrel?

Unter dem Namen „Allbuttonspressed“ entwickelte eine Gruppe Studenten im Rahmen eines Abschlussprojektes Django-nonrel. Aufgrund von Studienabschlüssen mussten sie die Leitung an freiwilligen Nachfolger abgeben. Django-nonrel ist ein unabhängiger Zweig von Django, der das Object-Relational-Mapping (ORM) von Django um den NoSQL-Datenbanken-Support erweitert. Ein langfristiges Ziel der Entwickler ist es, den NoSQL-Support in einem offizielles Django-Release zu veröffentlichen.

Vorteile von Django-nonrel

Django-nonrel hat keine festgelegten Schematas, was das System anpassungsfähiger und offener macht. Auch lassen sich Apps leichter portieren, da die NoSQL-Datenbanken aller Anbieter nur die Django ORM und nicht Drittanbieter-Bibliotheken benutzen. Ein Fremdcode, der portiert werden müsste, existiert somit nicht. Gleichzeitig bleiben durch die Benutzung des ORM durch NoSQL alle Vorteile, die Django ausmachen (Modelforms, Admin), erhalten. Zusätzlich kann ein gemischter Betrieb aus relationalen und nicht-relationalen Datenbanken realisiert werden.

Unterschiede von Django-nonrel zu Django

Momentan gibt es noch keine ManyToMany Felder, da diese Joins benutzen, welche es unter NoSQL nicht gibt. Es wird aber daran gearbeitet, dies in der Zukunft unterstützen zu können. Die Erweiterung ListField funktioniert genauso wie eine Python Liste, man bekommt eine Liste aus der Datenbank und man kann eine Liste in die Datenbank einfügen. Im Grundsatz ersetzen sie die ManyToManyFields. Identisch verhalten sich SetField und DictField. Es ist in der Planung, dass diese Field-Typen automatisch mit Django Admin editierbar sind. EmeddedModelField erlauben es, ein Model zu kapseln. Ein Beispiel hierfür wäre ein Firmen-Model, das ein Angestellten-Model beinhaltet.

Installation von Django-nonrel

Das Projekt kann unter https://github.com/django-nonrel heruntergeladen werden. Die Installation von Django-nonrel überschreibt Django! Dies könnte Probleme mit bereits vorhandenen Projekten und Apps verursachen. Als nächstes wird Django mit dem Tool djangotoolbox gepatched, was die Erweiterung durch die o.a. Field-Typen mit sich bringt. Nun müsste man sich für ein unterstütztes NoSQL-Datenbanksystem entscheiden und das jeweilige Backend installieren. Informationen hierfür sind weiter unten angeführt. Weitere optionale Komponenten wären der djangodbindexer, der bis zu einem gewissen Grad Join-Support bietet, und das nonrel-permission-backend für die Rechteverwaltung unter admin.

Simples Beispielsetup:

 
Python
1
2
3
4
5
6
7
DATABASES = {
   'default': {
      'ENGINE': 'django_mongodb_engine',
      # or appengine
      'NAME': 'blog',
   }
}

Unterstützte NoSQL-Datenbanken unter Django-nonrel

  • Google App Engine: djangoappengine Enthält alle App-Engine-Backends für Django-nonrel, z.B. die Datenbank und E-Mail-Backends. Zusätzlich wird eine Test-App bereit gestellt, die als Orientierung genutzt werden kann.
  • MongoDB: django-mongodb-engine Die auf der der Programmiersprache C++ basierende dokumentorientierte Datenbank kann Sammlungen von JSON-ähnlichen Dokumenten verwalten.
  • mehr geplant für die Zukunft (Cassandra, Membased, DynamoDB, etc.)

Mithilfe der „couchdb-python“ Python Library kann das NoSQL-Datenbanksystem CouchDB mit Django benutzt werden. Eine Anleitung hierfür kann unter folgendem Link gefunden werden: Using CouchDB with Django


Wikiseite bearbeiten

Diese Seite kann von jedem registrierten Benutzer bearbeitet werden. Bisher hat 1 Person an der Seite "NoSQL-Datenbanken unter Django" mitgewirkt.

Sie haben einen Fehler entdeckt oder möchten etwas ergänzen? Dann können Sie nach der Anmeldung "NoSQL-Datenbanken unter Django" hier bearbeiten.

Mitarbeiter
  • hat keine Beschreibung angegeben. Eine Beschreibung kann man unter dem Punkt "Profil bearbeiten" im Kontrollzentrum eintragen.