Download - The Graph Revolution
![Page 1: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/1.jpg)
The GraphrevolutionHow to change the way you think about NSFs and achieve Nirvana
Nathan T Freeman - #ChiefArchitect @RedPillDevelopment
![Page 2: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/2.jpg)
Mission
productive
problems
mind
![Page 3: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/3.jpg)
The Numbers Problem
Thousands of data silos (NSFs)
Hundreds of indexes in each
Thousands of documents in each
![Page 4: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/4.jpg)
The Logic Problem
Data schemas in the UI
Limited serialization
Relationships are a lot of work
![Page 5: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/5.jpg)
What is a graph?
Elements (vertexes and edges)
Key/Value pairs
Index-free adjacency
![Page 6: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/6.jpg)
Why use graphs?
Speed Scalability Intuitive
![Page 7: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/7.jpg)
People graph
Nathan
knows
Mac
![Page 8: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/8.jpg)
Movie graph
portrays
appearsIn
stars
The Matrix Keanu
Reeves
Neo
![Page 9: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/9.jpg)
What is an nsf?
Documents
Item-value pairs Appalling bad indices
![Page 10: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/10.jpg)
Graph & NSF
![Page 11: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/11.jpg)
Openntf domino api
Documents with keys (Serializable -> MD5 -> UNID)
Auto-type coercion
Document implements Map<String, Object>
includes Document.get(“fname + \” \” lname”)
![Page 12: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/12.jpg)
A Single nsf with…
Hundreds of thousands of vertices
Millions of edges
![Page 13: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/13.jpg)
A question…If each Vertex is a Document, why can’t every Document be a Vertex?
![Page 14: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/14.jpg)
The dream
Tens of millions of enterprise documents.
Decades of accumulated knowledge.
One big warehouse.
No migration required.
![Page 15: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/15.jpg)
Implementation 2.0
Vertices need models; models are hard.
Graph must consume many NSFs
UniversalID not enough; need MetaversalID
Can’t modify some Vertices
![Page 16: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/16.jpg)
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);
}
![Page 17: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/17.jpg)
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
![Page 18: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/18.jpg)
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]
![Page 19: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/19.jpg)
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
![Page 20: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/20.jpg)
The Logic Problem
Schemas are defined with Java interfaces
Anything can be written to any key/value pair
Relationships are trivial
![Page 21: The Graph Revolution](https://reader030.vdocuments.us/reader030/viewer/2022032616/55a4fb381a28ab652e8b45a8/html5/thumbnails/21.jpg)
Mission
productive
problems
mind