2011-08-03 12 views
18

Potrzebuję wbudowanej bazy danych dla aplikacji Clojure. Być może są to te same kryteria, co w przypadku innych aplikacji Java, ale i tak mam opinię innych osób. Nie wybieram SQLite, ponieważ nie jest to czysta Java, więc dystrybucja samodzielnej aplikacji staje się znacznie bardziej złożona. Wygląda na to, że droga jest Apache Derby. Coś jeszcze powinienem wziąć pod uwagę?Wbudowana (czysta Java) baza danych dla Clojure

+1

Czekamy na odpowiedzi na ten temat. Używam HSQLDB w Javie bardziej niż Derby, ale tylko do testów jednostkowych. Interesuje się, czy ktoś użył FleetDB, ponieważ ma klienta Clojure .... –

Odpowiedz

28

Bez wątpienia H2

Oto ustawienia,

(def demo-settings 
    { 
    :classname "org.h2.Driver" 
    :subprotocol "h2:file" 
    :subname  (str (System/getProperty "user.dir") "/" "demo") 
    :user  "sa" 
    :password "" 
    } 
) 

I wtedy zwykle Clojure kod SQL:

(with-connection demo-settings 
    (create-table :DEMO_TABLE 
      [:M_LABEL "varchar(120)"] 
      [:M_DATE "varchar(120)"] 
      [:M_COMMENT "varchar(32)"])) 
+0

+1. H2 to "Clojure z baz danych" :-) –

+0

Zdecydowanie H2 również dla mnie. To działa dobrze dla mnie z biblioteką zapytań clojureql. Jest jedno wymagane obejście dla H2 z clojureql, H2 nie ma wspieranej składni JOIN USING, gdy ostatnio sprawdziłem, musisz użyć bardziej szczegółowego JOIN ON odpowiednika. –

2

Użyłem wbudowanej bazy danych, H2 w clojure i użyłem clojureQL, aby uzyskać do niej dostęp. Należy jednak pamiętać, że ponieważ baza danych jest w trakcie, nie należy jej używać w przypadku dużej ilości rekordów (> 10 000 w jednej tabeli), ponieważ wystąpią ogromne problemy z wydajnością, ponieważ baza danych i kod będą udostępniać tę samą maszynę JVM

4

Czy spojrzałeś na FleetDB? Jest to baza danych Clojure z protokołem JSON i klientami w kilku językach. Podejrzewam, że prawdopodobnie mógłbyś go uruchomić bez zbytniej pracy.

2

Uważam, że Derby tworzy doskonałą bazę danych osadzoną w 100% w języku Java i jest przydatna dla wielu różnych aplikacji, dobrze utrzymanych przez aktywną społeczność i bardzo dobrze udokumentowanych.

1

Jeśli nie masz nic przeciwko NOSQL, neo4j to wbudowany db graficzny z transakcjami licencjonowanymi na warunkach licencji GPL. Najwięcej na bieżąco Wiązania znalazłem są https://github.com/hgavin/borneo

Jest też ciekawy projekt wykres db w Clojure z dołączanymi backendów: https://github.com/flatland/jiraph

Wciąż dość młody, ale obiecujący patrząc OrientDB może być warte obejrzenia: http://www.orientechnologies.com/orient-db.htm

http://github.com/eduardoejp/clj-orient

Potem jest http://jdbm.sourceforge.net/

0

Inną opcją do rozważenia jest składnica klucz-wartość Chronicle Map, ponieważ jest to czysta Java i zapewnia waniliowy interfejs Java Map, więc praca z nim powinna być bardzo prosta przy użyciu Clojure.

Powiązane problemy