Skip to content
Zack Maril edited this page Dec 4, 2012 · 18 revisions

Hermes embeds a Titan instance inside of a clojure process. But, really, what does that even mean in practice? Here are some of the immediate outcomes of how we've built Hermes that we've found interesting:

  • The objects returned by methods are the same objects that Titan itself uses. That means that any feature of Titan that Hermes doesn't directly support can be directly accessed via the methods exposed by the Titan objects already.
  • Transaction management is very important. While Titan does have support for automatically starting transactions, we've made a choice to actively not support automatic transactions. We are finding that by being careful with our transactions, we are able to use clojure's support for various concurrent operations without much hassle.
  • By including libraries like Noir or Aleph in your project, Hermes allows you to create a customized HTTP/REST interface around your database.
  • Importing Hermes into a clojure REPL and opening up a persistent graph gives you a REPL with which to access and modify your database with. Currently, this REPL is not as full featured as the Gremlin REPL that comes with Titan already, but with the use of clj-gremlin, you should have full parity in terms of functionality.

As Titan ages and matures, we hope to take advantage of any functionality introduced by the Think Aurelius and smooth over any rough edges that might remain. Below is an outpouring of thoughts on how to use Hermes, and by extension, Titan.