Was ist der einfachste Weg, um Maps / Strukturen in Clojure zu erhalten?

7

Der offensichtliche Weg besteht darin, die JDBC-Unterstützung von Clojure Contrib zu laden und eine Funktion zu schreiben, um eine map / struct in eine Tabelle zu übersetzen. Ein Nachteil davon ist, dass es nicht sehr flexibel ist; Änderungen an Ihrer Struktur erfordern DDL-Änderungen. Dies bedeutet entweder das Schreiben von DDL-Generierung (zäh) oder das manuelle Codieren von Migrationen (langweilig).

Welche Alternativen gibt es? Die Antworten müssen ACID sein, das Serialisieren in eine Datei usw. ausschließen.

    
rcampbell 15.06.2009, 10:10
quelle

6 Antworten

5

Die Verwendung von CouchDBs Java-Client lib und clojure.contrib.json.read/write funktioniert ziemlich gut für mich. Die Konsistenz-Garantien von CouchDB sind jedoch möglicherweise nicht stark genug für Ihre Zwecke.

    
pmf 16.06.2009, 12:28
quelle
9

FleetDB ist eine in Clojure implementierte Datenbank. Es hat eine sehr natürliche Syntax für die Arbeit mit Karten / Strukturen, z.B. einfügen:

%Vor%

Wählen Sie dann

%Vor%

Ссылка

    
Markc 11.01.2011 14:05
quelle
7

Eine Option für das Fortsetzen von Karten in Clojure, die immer noch eine Relation-Datenbank verwendet, besteht darin, die Kartendaten in einem undurchsichtigen Blob zu speichern. Wenn Sie nach Datensätzen suchen möchten, können Sie Indizes in separaten Tabellen speichern. Zum Beispiel können Sie lesen, wie FriendFeed schemalose Daten über MySQL speichert - Ссылка

Eine weitere Option ist die Verwendung des Entity-Attribut-Value-Modells (EAV) zum Speichern von Daten in einer Datenbank. Sie können mehr über EAV auf Wikipedia lesen (Ich würde einen Link posten, aber ich bin ein neuer Benutzer und kann nur einen Link veröffentlichen).

Eine weitere Option ist die Verwendung von BerkeleyDB für Java - eine native Java-Lösung, die ACID und Sperren auf Datensatzebene bietet. (Gleiches Problem beim Posten eines Links).

    
Cosmin Stejerean 16.06.2009 16:45
quelle
2

Clj-record ist eine Implementierung von active record in clojure, die für Sie von Interesse sein könnte.

    
l0st3d 15.06.2009 16:45
quelle
2

Sie könnten eine der Java-basierten Graph-Datenbanken ausprobieren, zum Beispiel Neo4J . Es könnte einfach sein, eine Hashmapp-Schnittstelle zu codieren, um sie einigermaßen transparent zu machen.

    
Eric Normand 08.07.2009 15:55
quelle
1

MongoDB und sein Framework congomongo (lein: [congomongo "0.1.3-SNAPSHOT"]) funktionieren für mich. Es ist unglaublich nett mit den schemalosen Datenbanken, und mit Congomongo ist es recht einfach, damit klarzukommen. MongoDB fügt ein _id-Feld in jedes Dokument ein, um es zu identifizieren, und es gibt eine ziemlich gute Transparenz zwischen clojure-maps und mongo-maps.

Ссылка

    
claj 09.01.2011 01:07
quelle

Tags und Links