Apache Jena is another good choice for a graph database. It has the choice of an in-memory database, memory-mapped file database (optionally with ACID transactions), or mapped to a relational database. It can also run as a separate database server. There is a procedural java API and the standard SPARQL graph query / update language.
http://jena.apache.org/ On Sunday, May 26, 2013 8:33:22 AM UTC-7, James Thornton wrote: > > Hi Cedric - > > Look at Datomic free edition or the Titan graph database using > either Berkeley DB as its backend datastore or Cassandra in single-server > mode -- you can run both locally. > > Datomic: http://www.datomic.com/ > Docs: http://docs.datomic.com/ > Clojure Client: http://docs.datomic.com/clojure/index.html > Videos: http://www.datomic.com/videos.html > Blog: http://blog.datomic.com/ > Query Language: http://docs.datomic.com/query.html (Datalog) > > Titan: http://thinkaurelius.github.io/titan/ > Repo: https://github.com/thinkaurelius/titan > Clojure Client: https://github.com/clojurewerkz/archimedes > Blog: http://thinkaurelius.com/blog/ > Query Language: https://github.com/tinkerpop/gremlin/wiki (Gremlin) > > See the Resources section of the TinkerPop Book website for a collection > of Titan videos and tutorials: http://www.tinkerpopbook.com/#resources > > > - James > > > On Sunday, May 26, 2013 10:09:51 AM UTC-5, Cedric Greevey wrote: >> >> I may be developing an application which will need a persistent, ACID >> local database (on the same disk as the application, rather than having to >> be accessed over the network) containing information about potentially >> 100,000-1,000,000 (or more) objects. >> >> Much of that information will be of a quasi-boolean character: "is it an >> X or not?" for various choices of X, but with "yes", "no", "borderline", >> and "not yet evaluated" as the four possible values. It will be desirable >> to query for these, for example to get a lazy seq of all objects for which >> it's a borderline Y or for which it's not yet evaluated whether it's a Z or >> for which it's either "yes" or "borderline" on whether it's an X or >> whatever. >> >> I'm not that familiar with the local-DB solutions out there. I'd like a >> recommendation for one which is a) a good for for Clojure use and b) a good >> fit for the type of data and queries noted above. The DB must be able to >> grow larger then available RAM without crashing the JVM and the seqs >> resulting from queries like the above will also need to be able to get >> bigger than RAM. >> >> My own research suggests that H2 may be a good choice, but it's a >> standard SQL/relational DB and I'm not 100% sure that fits well with the >> type of data and querying noted above. Note though that not all querying >> will take that form; there'll also be strings, uuids, dates, and other such >> field types and the need to query on these and to join on some of them; >> also, to do less-than comparisons on dates. >> >> Also, what is the current best recommendation of clojure library for >> interfacing to the DB? (Answer might depend on the sort of DB recommended >> -- standard, object/NoSQL, graph/ontology, etc.) >> >> -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.