Lotus what? Nah mate, the world has moved on.

Friday, 25 September 2015

Nathan Freeman presents Graphs in Action #MWLUG2015 IV102

This is great concept with a rubbish name. Graphs? Really?

It seems to be a natural fit for Lotus Domino databases though. This may be of great interest to some of the die hard Lotus aficionados out there.



  1. 1. The Graph revolution How to change the way you think about NSFs and achieve Nirvana Nathan T Freeman - #ChiefArchitect @RedPillDevelopment
  2. 2. Mission productive problems mind
  3. 3. The Numbers Problem Thousands of data silos (NSFs) Hundreds of indexes in each Thousands of documents in each
  4. 4. The Logic Problem Data schemas in the UI Limited serialization Relationships are a lot of work
  5. 5. What is a graph? Elements (vertexes and edges) Key/Value pairs Index-free adjacency
  6. 6. Why use graphs? Speed Scalability Intuitive
  7. 7. People graph Nathan knows Mac
  8. 8. Movie graph portrays appearsIn stars The Matrix Keanu Reeves Neo
  9. 9. What is an nsf?  Documents  Item-value pairs  Appalling bad indices
  10. 10. Graph & NSF
  11. 11. Openntf domino api Documents with keys (Serializable -> MD5 -> UNID) Auto-type coercion Document implements Map<String, Object> includes Document.get(“fname + ” ” lname”)
  12. 12. A Single nsf with… Hundreds of thousands of vertices Millions of edges
  13. 13. A question… If each Vertex is a Document, why can’t every Document be a Vertex?
  14. 14. The dream Tens of millions of enterprise documents. Decades of accumulated knowledge. One big warehouse. No migration required.
  15. 15. Implementation 2.0 Vertices need models; models are hard. Graph must consume many NSFs UniversalID not enough; need MetaversalID Can’t modify some Vertices
  16. 16. Tinkerpop.frames @TypeField("form") @TypeValue("Person") public interface User extends VertexFrame { • @TypedProperty("FirstName") • public String getFirstName(); • @TypedProperty("FirstName") • public void setFirstName(String firstName); • @IncidenceUnique(label = “likes”) • public Iterable<Edge> getLikes(); • @IncidenceUnique(label = “likes”) • public Edge addLikes(Vertex vertex); }
  17. 17. Graph sharding One graph can have many element stores (NSFs) Element stores based on Frame interfaces Stores respect ACLs and can cross servers Can store vertexes and/or edges Proxy shards separate graph data from core properties
  18. 18. Metaversalids ReplicaID + UniversalID 16 char hex + 32 char hex = bulky 16 char hex = 64-bit number AKA long long[3] can hold same information NoteCoordinate (x,y,z) Stores as byte[24]
  19. 19. The Numbers Problem Thousands of data silos (NSFs) Hundreds of indexes in each Thousands of documents in each Millions of vertexes across the enterprise No indexes needed
  20. 20. The Logic Problem Schemas are defined with Java interfaces Anything can be written to any key/value pair Relationships are trivial
  21. 21. Mission productive problems mind


  1. I'm sorry you don't like the name, but didn't you just publish an article about OrientDB that references graph databases, like, 50 times? :)

    Or are you objecting to the claim that the result really is a graph database?

  2. Either way, thanks for the post. It's work I'm very proud of.

  3. Hi Nathan, your presentation was awesome. The name comment was tongue in cheek. Like all new technologies it takes a while to get used to the terminology. I can see how powerful this could be and I have some ideas I am working on using this. :-)


Thank you for taking the time to comment. Your opinion is important and of value and we appreciate the positive feedback! If you are "Negative Nancy" then please do us, and humanity, a favor, and piss off.

Total Pageviews

Google+ Followers


Blog Archive

Popular Posts

Recent Comments

Rays Twitter feed


Web sites come and go and information is lost and therefore some pages are archived. @rayd123 . Powered by Blogger.