[ANN] Cayley, a Go powered graph database powered by Go

472 views
Skip to first unread message

Johann Höchtl

unread,
Jun 25, 2014, 5:22:28 PM6/25/14
to golan...@googlegroups.com
Discovered on HN, sharing with you. Incredible feature rich, backends leveldb and mongo. https://github.com/google/cayley

(Only spotted, I am not affiliated in any way)

Dan Kortschak

unread,
Jun 25, 2014, 6:17:02 PM6/25/14
to Johann Höchtl, golan...@googlegroups.com
It's disappointing that code coming from a googler is not go-gettable -
there is nothing in the Makefile/make.sh that would not be handled by
the go tool.

Diego Duclos

unread,
Jun 26, 2014, 3:03:31 AM6/26/14
to golang-nuts
If this was a library, I'd completely agree.
As a standalone tool however, I don't think it matters a whole lot whether something is go-gettable or not.


--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

egon

unread,
Jun 26, 2014, 3:28:09 AM6/26/14
to golan...@googlegroups.com
On Thursday, 26 June 2014 10:03:31 UTC+3, Diego Duclos wrote:
If this was a library, I'd completely agree.
As a standalone tool however, I don't think it matters a whole lot whether something is go-gettable or not.

If they don't distribute binaries, then it probably matters, also it's much nicer to start modifying when you can just do "go get something".

There are other non-go-ish things as well.

cayley
cayley_cmd
cayley_config
cayley_http

should probably be:

cayley
cayley/cmd
cayley/config
cayley/http

The same for the "graph_*".
 
The iterators look very inheritance like, although I'm not sure whether there is a better design for them. Also, the iterators could be in a separate package, which means the naming would be shorter: "iterator.And", "iterator.Or"... That kind of naming change can be done elsewhere as well.. (leveldb.LevelDBIterator -> leveldb.Iterator, graph_sexp.SexpSession -> sexp.Session). Basically the fully qualified name contains the package name and it can be used effectively to shorten the code inside/outside the package and avoid repetition.

File names look out of place: "gremlin-env.go", "gremlin-finals.go"... could just be "env.go", "finals.go".

Great work nevertheless :)
(picking on the style is always is always the easiest.)

+ egon

Dan Kortschak

unread,
Jun 26, 2014, 3:34:43 AM6/26/14
to egon, golan...@googlegroups.com
Yes, I have sent a PR to address some of those issues. If that PR is
accepted I intend to delve more deeply into what looks like some
class-influenced design.

That said, the reason I'm doing this is because I see a great deal of
benefit in the tool and something I have every intention of using in my
work.

Also, to address Diego's comment, it's not just a standalone - you can
interact with the components themselves as imports.
Reply all
Reply to author
Forward
0 new messages