atlas-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Radley <>
Subject Re: About the way traits are stored in TitanDB
Date Fri, 25 Aug 2017 11:06:23 GMT
Hi Benjamin,
The way Atlas is architected is that there is one graph for types and a 
separate graph for the instances. I see a lot of benefits with this 
design. Having edges between the types allows us to navigate and check 
types consistency with gremlin queries. It means we can implement search 
using  gremlin queries looking at the instance graph. I think for Atlas 
this allows us to manage the metadata types and instances with some degree 
of insolation in the graph store. I think the way the type system is 
designed at the graph level is great strength of Atlas. 

 We are also thinking that this will allow us, in the future, to have 
namespaces - for example one for test and one for development and one for 
production; each of which will have separate instance graph but all using 
the same type graph. 

Of course there are many way to store data in graphs. Mixing types and 
instances together in one big property graph is the approach RDF takes.
       all the best, David. 

From:   BONNET Benjamin <>
To:     "" <>
Date:   25/08/2017 11:03
Subject:        About the way traits are stored in TitanDB

Hi all,

Working on Atlas repository in Titan, I am surprised by the way traits are 
stored : traits type are Vertices, which seems ok, but traits instances 
are Vertices too.
So, when you attach a trait to an entity, Atlas will create a new Vertex 
(containing the attributes that are set) and draw an Edge between the 
entity instance Vertex and that trait instance Vertex. There is no edge 
between the trait instance Vertex and the trait type Vertex : there is 
just a __typeName attribute in the trait instance that contains the traits 
type (please, tell me if I missed something...).

Actually, I would rather have expected to have the trait instance stored 
as an Edge between the entity instance Vertex and the trait type Vertex. 
That edge would contain the attributes values.
The advantages of modeling traits instances as Edges are :

-          The link between a trait and its type is enforced by the 
database itself and does not rely on a __typeName attribute.

-          Less Vertices in the database, without growing Edges number.

-          The data stored in Titan will look more like a graph : today, 
my data consists of lots of Vertices that are isolated (all types) and 
there are few edges. So I think we cannot really take advantage of the DB 

What do you think about that ?



Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message