Primary author of Hermes here. We've put a fair amount of work into getting 
transactions right from the very beginning. 

Try reading: 
https://github.com/gameclosure/hermes/wiki/Transaction-Management
And:
https://github.com/gameclosure/hermes/wiki/Opening-graphs

I'm working on a project now that might require adding support for 
BatchGraph to hermes (if it doesn't exist already with 
hermes.core/with-graph). If you have any questions or comments, 
don't hesitate to reach out. 

As far as compare and contrast goes, philosophically, it seems that both 
libraries started from two very different places. Titanium was written 
after the authors had already written neocons, a great wrapper around the 
rest endpoint of neo4j. They say that they would like to roughly match the 
functionality of titanium with neocons. In the documentation for titanium, 
they suggest that right now, for production graphs, you should go use 
neocons/neo4j instead. I can't speak much more to the development of the 
library because I didn't develop it and didn't know it existed until 
yesterday.

Hermes was written relatively from scratch. There were some other libraries 
floating around that sort of paired Clojure with Titan, but none of them 
were much more than somebody's monthlong fascination with a new open source 
project. So, I was learning the in's and out's of Titan, writing a library, 
and trying to get it into production as fast as possible all at once. We 
put (probably too much) thought into managing transactions. This let us 
build hermes.core/transact! and hermes.core/retry-transact! easily, both of 
which greatly simplify working with transactions. We added in methods for 
making updating the database as easy as possible, hermes.vertex/upsert! and 
hermes.edge/upconnect!. We have a pretty solid test suite at this point. 
I'd feel comfortable telling somebody to put it into production, with the 
normal caveat that goes with any software that hasn't hit a stable 1.0.0, 
things will break and only a few people in the world will know why. 

>From a philosophical standpoint, I'm not comfortable with the idea that an 
API written to wrap a REST endpoint should serve as inspiration for the API 
to wrap the in process interactions with the database. Before writing 
hermes, I used neocons for a month or so and making titanium gracefully 
match seems like a tough feat to pull off. But if anybody can do it, I'm 
sure the ClojureWerkz team can. I've tried to resist talking about hermes 
too much when titanium has come up, mostly to let them have some breathing 
room and because I've been quite busy with my own Titan project as of 
late[0]. I recommend you try out both libraries and see which one best fits 
what you want to build. 

So, in summary, quid pro quo, two libraries enter, one library leaves, 
postgres probably already does what you want.
-Zack 

[0] The project loads git repo's into Titan for analysis via Faunus. I've 
got it loading up the linux kernel on an ec2 instance right now. I'm able 
to ask a variety of questions via Faunus. Still reworking it to load repo's 
quickly and use Titan the right way for the size of the graphs likely to be 
encountered. I expect it will be formally announced once I figure out some 
neat things about the linux kernel. 

On Wednesday, February 13, 2013 12:16:15 AM UTC+4, AtKaaZ wrote:
>
> I did not look at hermes, wasn't aware of it, but I'll look, thanks.
>
>
> On Tue, Feb 12, 2013 at 8:56 PM, Jeroen van Dijk 
> <jeroentj...@gmail.com<javascript:>
> > wrote:
>
>> Looks interesting. I'm just wondering if you had a look at hermes [1], 
>> and if so, how is it different?
>>
>> [1] https://github.com/gameclosure/hermes
>>
>>
>> On Tue, Feb 12, 2013 at 6:39 PM, AtKaaZ <atk...@gmail.com 
>> <javascript:>>wrote:
>>
>>> is there a way to use nested transactions, yet? 
>>> I am looking at [1] and [2]
>>>
>>> [1] 
>>> https://github.com/thinkaurelius/titan/wiki/Multi-Threaded-Transactions
>>> [2] https://github.com/tinkerpop/blueprints/wiki/Graph-Transactions
>>>
>>>
>>>
>>> On Mon, Feb 11, 2013 at 6:37 PM, Michael Klishin 
>>> <michael....@gmail.com<javascript:>
>>> > wrote:
>>>
>>>> Titanium [1] is a Clojure graph library that is built on top of  Titan 
>>>> [2].
>>>> It combines a Clojure-friendly API and graph processing DSL with the 
>>>> power of Titan.
>>>>
>>>> Full announcement and more details:
>>>> http://blog.clojurewerkz.org/blog/2013/02/11/introducing-titanium/
>>>>
>>>> 1. http://titanium.clojurewerkz.org
>>>> 2. http://thinkaurelius.github.com/titan/
>>>> -- 
>>>> MK
>>>>
>>>> http://github.com/michaelklishin
>>>> http://twitter.com/michaelklishin
>>>>  
>>>> -- 
>>>> -- 
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clo...@googlegroups.com<javascript:>
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+u...@googlegroups.com <javascript:>
>>>> 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+u...@googlegroups.com <javascript:>.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>  
>>>>  
>>>>
>>>
>>>
>>>
>>> -- 
>>> Please correct me if I'm wrong or incomplete,
>>> even if you think I'll subconsciously hate it.
>>>
>>>  -- 
>>> -- 
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@googlegroups.com<javascript:>
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+u...@googlegroups.com <javascript:>
>>> 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+u...@googlegroups.com <javascript:>.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>  
>>>  
>>>
>>
>>  -- 
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com<javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> 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+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>
>
>
> -- 
> Please correct me if I'm wrong or incomplete,
> even if you think I'll subconsciously hate it.
>
>  

-- 
-- 
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.


Reply via email to