2016-04-04 6 views
1

Ich habe nach einer Datenbank gesucht, die eingebettet werden kann und auch dateibasiert sein kann, wie Sqlite. Ich wollte eine NoSQL-Datenbank mit dieser Art von Funktion. Die Sprache ist Python und ArangoDB hat eine Bindung für Python und viele andere Sprachen.NoSQL-Datenbank: ArangoDB

Ich finde widersprüchliche Fakten über ArangoDB. In einigen Fällen habe ich Artikel gesehen, die sagen, dass es keine eingebettete DB ist, oder nicht eingebettet werden kann, dann sehen Sie andere, die anzeigen, dass es eingebettet ist.

Auch auf der Website heißt es, dass es seine Daten in einem speziellen Binärformat speichert, und dann sehe ich einen Artikel, der hauptsächlich eine In-Memory-Datenbank sagt.

So war es sehr verwirrend.

1) Die Frage ist also, kann diese Datenbank eingebettet in eine Python-App laufen?

Wenn nicht, wenn es als separater Prozess läuft, läuft es als Server, kann dies in Python mit "zero configuration" seitens des Benutzers generiert/verwaltet werden, um eine Desktop-App basierend darauf bereitzustellen Dies.

2) Werden die Datenbankdaten usw. auf der Festplatte gespeichert?

SO ist das!

Antwort

4

Nein, Sie können ArangoDB nicht so einbetten, wie Sie SQLite eingebettet haben.

ArangoDB bietet die Foxx framework, die Sie verwenden können, um RESTfull Microservices in JavaScript in der Nähe des Datenbankkerns zu implementieren, wie Sie Python mit SQLite verwenden würden. Jedoch bietet ArangoDB mit AQL auch eine Abfragesprache, wie SQLite mit sql tut.

Derzeit sind mehrere Python-Treiber verfügbar, die Ihnen den Zugriff auf ArangoDB von Python auf eine bequeme Weise ermöglichen.

Die Download-Seite von ArangoDB bietet mehrere Pakete, mit denen Sie ArangoDB neben Ihrer App bereitstellen können. Wir bieten a windows zip package that you could install by yourselves without user interaction; Bei Linux-Distributionen möchten Sie wahrscheinlich das entsprechende Paket für diese Distribution verwenden. Einfache Bereitstellung ist eines unserer Kernziele.

In Bezug auf die Datenbank und Ihre Daten selbst wird dies auf dem Datenträger beibehalten. Dies funktioniert über Memory-Mapped-Dateien. Der Index und andere Strukturen werden jedoch während des Starts aufgebaut, weshalb wir uns selbst als meist im Speicher bezeichnen.

Regelmäßiger Zugriff auf ArangoDB (und Foxx) erfolgt über die HTTP-Schnittstelle und Sie erhalten JSON-Dokumente als Antwort. Die Treiber abstrahieren diese Schnittstelle für Sie. Wenn Sie foxx-Apps implementieren, müssen Sie möglicherweise selbst Anforderungen formulieren.

ArangoDB Datendateien sind nicht dazu gedacht, über Maschinen hinweg verschoben zu werden; obwohl es funktioniert, solange Sie das gleiche OS & Architekturen auf beiden Seiten haben. Die richtige Vorgehensweise ist die Verwendung von ArangoDump auf der ersten Maschine und ArangoRestore auf der zweiten Maschine. Dies sind meist Json innerhalb (ein JSON-Dokument pro Zeile), so dass sie tragbar und sogar einfach in Python laden - Sie könnten sogar directly access the dump facility from python, und bereiten Sie eine E-Mail für den Benutzer mit dem Inhalt.

Die nachhaltigste Art, ArangoDB zu betreiben, wäre ein Service; Bitte beachten Sie, dass Sie möglicherweise erhöhte Rechte benötigen, um & zu registrieren, um neue Dienste in Windows zu starten/zu starten.Der Dienst bindet dann einen TCP-Port, auf den Sie von anderen Knoten im Netzwerk zugreifen können.

+0

Hallo, danke, das ist wirklich toll! Die Benutzer, die ich versorgen würde, würden in Fenstern sein. Damit die Daten dauerhaft auf dem Datenträger bleiben, kann dies zB in eine andere Windows-Box verschoben werden und eine andere Person mit meiner App kann diese Datei auf diesem Weg auf der Festplatte öffnen. Wenn mit SQLite die Datei mit einer App erstellt wird, kann diese db-Datei auf eine andere Maschine mit derselben App verschoben werden, um die Daten zu öffnen und anzuzeigen. Diese Art der portablen Datenbewegung ist das, wonach ich suche. – Palu

+0

Benutzer auf verschiedenen Computern möchten möglicherweise Daten von einem Ort zum anderen verschieben und die App dort öffnen, wo auch immer die App installiert ist. Die App, von der ich spreche, ist eine Desktop-App. Genauso wie die Leute einander Excel-Dateien per E-Mail senden können und sie öffnen können, solange sie Office-Suite auf dem anderen Computer installiert haben, also das ist die Art von App-Modell, das ich gehe . – Palu

+0

OK, also basiert auf Ihrer ersten Zeile, ist es nicht in den gleichen Prozess wie die App selbst eingebettet, Sie sagen also, es läuft in einem Server-ähnlichen Modus. Das ist in Ordnung für mich, solange es mit keiner Administration installiert wird, das würde meinem Zweck entsprechen. – Palu