[ 
https://issues.apache.org/jira/browse/TINKERPOP3-489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stephen mallette closed TINKERPOP3-489.
---------------------------------------
    Resolution: Duplicate

Closing in favor of duplicates: TINKERPOP3-520 and TINKERPOP3-519 - made 
reference to this issue in both of those as there is a lot of good talky-talk 
in this one.

> meta-properties and multi-properties for security and history
> -------------------------------------------------------------
>
>                 Key: TINKERPOP3-489
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP3-489
>             Project: TinkerPop 3
>          Issue Type: Improvement
>          Components: structure
>    Affects Versions: 3.0.0-incubating
>            Reporter: Bryn Cooke
>
> Recently I have been looking at history and security GraphStrategies with 
> [~rjbriody] and it seems like meta-properties and multi-properties may not 
> fulfil their potential in their current form. In particular due to the lack 
> of support on edges.
> Meta and multi-property support is at the cost of a more complex element api 
> than TP2 get/setProperty, so it's worth making sure that the extra effort is 
> worth it for end users. (https://github.com/tinkerpop/tinkerpop3/issues/389)
> Here are the use cases and the difficulties faced:
> h3. SecurityGraphStrategy
> * User wants to restrict access to reading/writing a property on an element 
> on the graph. This applies equally to edges as well as vertices.
> h4. Issues
> * ACL information could be stored in meta-properties. However as there is no 
> support on edges I end up using prefixed properties instead.
> * Lists of users and groups could be store in multi-properties, but again the 
> lack of edge support means that I end up concatenating the users and groups 
> to a string which is then indexed via contains.
> There seems little point in having a different strategy for edges and 
> vertices, so currently I'm not using VertexProperty at all to implement 
> security.
> h3. HistoryGraphStrategy
> * User wants to be able to view the state of an element at any point in 
> history. This applies to edges as well as vertices.
> h4. Issues
> * Historical property data could be stored in a list in a meta-property. 
> However, edges are not supported and meta-properties can not also have meta 
> properties, so if the original property had meta-properties they could not be 
> stored in a meta-property.
> * Historical property data could be stored in a list in a prefixed property. 
> However, edges are not supported. I will probably end up creating a history 
> vertex and storing the data there. Edges will have to be linked via UUID to 
> the history vertex and for consistency vertices will probably do the same. 
> Even with this hack I will still have to disable meta-properties for the 
> client as I can't store meta-properties on meta-properties. An example of 
> when I would want to do this would be to store the history of ACL.
> h3. Observations
> * I'm having to fall back to prefixing way too often.
> * The benefit of meta-properties does not seem to be clear cut over prefixing 
> especially as they are not supported on edges, but also that meta-properties 
> can also not have meta-properties.
> * End users will not understand why there is a distinction between element 
> types for properties, and if they have to support edges then they'll end up 
> using prefixing and custom serialization anyway. No matter how many times the 
> reasoning is explained people will continue to ask. Get ready to start 
> pushing a boulder up a hill.
> And lastly questions:
> * If via custom serialization e.g. JSON I can store structured data in a 
> property and it will work on all types of element, then is a dedicated API 
> only on vertices definitely worth the extra complexity? If I am really lucky 
> then my Graph implementation may even support indexing JSON.
> * Do we think that vertex only history and security will be the main 
> requirement of users, or will they want full graph support?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to