SlideShare a Scribd company logo
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Find your data - using GraphDB capabilities
in XPages applications
Oliver Busse, We4IT GmbH
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
About me
• Working for We4IT
–Aveedo® Application Framework
• „Bleeding Yellow“ since R4.5
• IBM Champion for ICS
2015 + 2016
• OpenNTF Member Director
@zeromancer1972
@we4it
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Agenda
• What is GraphDB?
• Terminology
• Data Modelling & Implementation
• Example
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
„Graphs“
http://whatis.techtarget.com/definition/graph-database
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Graph DB
A graph database, also called a graph-oriented database, is a type of NoSQL database
that uses graph theory to store, map and query relationships.
A graph database is essentially a collection of nodes and edges. Each node represents
an entity (such as a person or business) and each edge represents a connection or
relationship between two nodes.
http://whatis.techtarget.com/definition/graph-database
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Some Graph DBs & Frameworks
• Neo4J
• OrientDB
• DEX
• Tinkerpop
• Apache Lucene / Solr
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Who is using Graph DBs?
• Amazon
• Google
• Facebook
• …almost every application that offers something like
– „related posts“ (blogs)
– „others also bought this“ (shops)
– collect relations and „likes“
– …
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Graphs – Terminology
• Vertices (Nodes/Elements)
– Properties (Key-Value pairs)
• Edges
– Connections, Relations between Vertices
• ElementStores
– for us: NSF databases
• MetaverseIDs (Domino related only)
– Replica + UNID (hashed)
– internal use only (don‘t care about them)
– sometime refered to as „Coordinate“
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Graph DB – in Domino?
• Vertices and Edges are stored as Documents
• The data container is a NSF
• The ElementStore defines the filepath to the NSF
• An ElementStore can hold different types of Vertices
• Usually you create one ElementStore for each Vertice type
• Graphs are transactional
• Graph are a new part of the OpenNTF Domino API
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Data Modelling & Implementation
• Nodes are defined as Interfaces
• Fields are defined as properties with Getter and Setter
• Methods define how the Node can build Edges to other
Vertices
• Methods also return all Edges to a certain Vertice
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Sample: Webshop, Customer Node
@TypeValue("Customer")
public interface Customer extends DVertexFrame {
@Property("$$Key")
public String getKey();
@Property("name")
public String getName();
@Property("name")
public void setName(String name);
@AdjacencyUnique(label = "basket")
public Iterable<ProductItem> getProducts();
@AdjacencyUnique(label = "basket")
public ProductItem addProductItem(ProductItem item);
@AdjacencyUnique(label = "basket")
public void removeProductItem(ProductItem item);
}
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Init the Graph
• Define the Element Store(s)
• Add Element Store(s) to the Graph Configuration
• Define the DFramedTransactionalGraph object with the Graph
Configuration
• Work with the Graph object
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Init the Graph: code schema
private DFramedTransactionalGraph<DGraph> initStores() {
// create element store
DElementStore myStore = new DElementStore();
myStore.setStoreKey(“folder/some.nsf”);
myStore.addType(MyType.class);
// register the stores to the graph
DConfiguration config = new DConfiguration();
DGraph graph = new DGraph(config);
config.addElementStore(myStore);
config.setDefaultElementStore(myStore.getStoreKey());
// init the graph
DFramedGraphFactory factory = new DFramedGraphFactory(config);
DFramedTransactionalGraph<DGraph> fg = (DFramedTransactionalGraph<DGraph>)
factory.create(graph);
return fg;
}
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Create an Edge
• Parameterize Object 1
• Get Object 2 by a unique key
• Call one of the „add“ methods of your Node class
• Commit your changes
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Create an Edge: code schema
public void addToBasket(ProductItem item) {
String userName = Factory.getSession(SessionType.CURRENT).getEffectiveUserName();
try {
DFramedTransactionalGraph<DGraph> graph = initStores();
Customer customer = graph.getElement(userName, Customer.class);
customer.addProductItem(item);
graph.commit();
} catch (Throwable e) {
XspOpenLogUtil.logError(e);
}
}
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Let‘s see the demo &
some more code
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Resources
• The XPages demo application
– https://bitbucket.org/zeromancer1972/sutol-2015-oda-graph-demo
• A nice glossary
– http://www.intec.co.uk/from-xpages-to-web-app-glossary/
• OpenNTF Domino API
– http://www.openntf.org/main.nsf/project.xsp?r=project/OpenNTF%20Domino%20API
– http://www.openntf.org/main.nsf/project.xsp?r=project/OpenNTF%20Domino%20API%20Demo%20Database
• Xots
– http://www.intec.co.uk/xots-background-and-multithreaded-tasks-the-openntf-domino-api-way-part-one/
– http://www.intec.co.uk/xots-background-and-multithreaded-tasks-the-openntf-domino-api-way-part-two/
– http://www.intec.co.uk/xots-background-and-multithreaded-tasks-the-openntf-domino-api-way-part-three/
• Graphs
– http://de.slideshare.net/ktree19/the-graph-revolution
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug
Q & A
Find your data - using GraphDB capabilities in XPages applications
www.ics.ug #icsug

More Related Content

PDF
XPages on IBM Bluemix: The Do's and Dont's - ICS.UG 2016
PDF
The Bixo Web Mining Toolkit
PPTX
Practical Use of a NoSQL Database
PPTX
SQL To NoSQL - Top 6 Questions Before Making The Move
PDF
Practical Use of a NoSQL
PPT
Public Terabyte Dataset Project: Web crawling with Amazon Elastic MapReduce
PPTX
Facebook Retrospective - Big data-world-europe-2012
PPT
2 hadoop@e bay-hug-2010-07-21
XPages on IBM Bluemix: The Do's and Dont's - ICS.UG 2016
The Bixo Web Mining Toolkit
Practical Use of a NoSQL Database
SQL To NoSQL - Top 6 Questions Before Making The Move
Practical Use of a NoSQL
Public Terabyte Dataset Project: Web crawling with Amazon Elastic MapReduce
Facebook Retrospective - Big data-world-europe-2012
2 hadoop@e bay-hug-2010-07-21

What's hot (20)

PPT
PPTX
Options for Data Prep - A Survey of the Current Market
PDF
AWS Athena vs. Google BigQuery for interactive SQL Queries
PDF
Optimizing Latency-sensitive queries for Presto at Facebook: A Collaboration ...
PPTX
Lessons from Driverless AI going to Production
KEY
HAProxyでMySQL HA on Amazon EC2
PPTX
Bigdata antipatterns
PDF
Rise of Intermediate APIs - Beam and Alluxio at Alluxio Meetup 2016
PDF
Presto Fast SQL on Anything
PPT
Hadoop at Yahoo! -- University Talks
PPTX
Using Big Data techniques to query and store OpenStreetMap data. Stephen Knox...
PDF
Data-Driven Development Era and Its Technologies
PDF
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
PPTX
Qubole Overview at the Fifth Elephant Conference
PDF
Is the database a solved problem?
PDF
Optiq: A dynamic data management framework
PDF
tdtechtalk20160330johan
PPTX
Building a Scalable Web Crawler with Hadoop
PDF
Deep Dive on ArangoDB
PDF
Alluxio+Presto: An Architecture for Fast SQL in the Cloud
Options for Data Prep - A Survey of the Current Market
AWS Athena vs. Google BigQuery for interactive SQL Queries
Optimizing Latency-sensitive queries for Presto at Facebook: A Collaboration ...
Lessons from Driverless AI going to Production
HAProxyでMySQL HA on Amazon EC2
Bigdata antipatterns
Rise of Intermediate APIs - Beam and Alluxio at Alluxio Meetup 2016
Presto Fast SQL on Anything
Hadoop at Yahoo! -- University Talks
Using Big Data techniques to query and store OpenStreetMap data. Stephen Knox...
Data-Driven Development Era and Its Technologies
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
Qubole Overview at the Fifth Elephant Conference
Is the database a solved problem?
Optiq: A dynamic data management framework
tdtechtalk20160330johan
Building a Scalable Web Crawler with Hadoop
Deep Dive on ArangoDB
Alluxio+Presto: An Architecture for Fast SQL in the Cloud
Ad

Similar to Find your data - using GraphDB capabilities in XPages applications - ICS.UG 2016 (20)

PPTX
GraphDb in XPages
PDF
In-Memory Computing - The Big Picture
PDF
New Developments in Spark
PDF
Buildingsocialanalyticstoolwithmongodb
PDF
Jump Start into Apache® Spark™ and Databricks
PDF
Getting started with Apache Spark in Python - PyLadies Toronto 2016
PPTX
Brightstar DB
PDF
Who's afraid of front end databases
PDF
A Tale of Three Apache Spark APIs: RDDs, DataFrames and Datasets by Jules Damji
PDF
Working with Data in Service Workers
PDF
Who's afraid of front end databases?
PDF
Core data WIPJam workshop @ MWC'14
PPTX
Webinar: The Anatomy of the Cloudant Data Layer
PPTX
Paris Data Geek - Spark Streaming
PDF
PYSPARK PROGRAMMING.pdf
KEY
Scalding: Twitter's Scala DSL for Hadoop/Cascading
PDF
Scalding: Twitter's New DSL for Hadoop
PDF
Compass Framework
PPTX
Building highly scalable data pipelines with Apache Spark
PPTX
Hibernate in XPages
GraphDb in XPages
In-Memory Computing - The Big Picture
New Developments in Spark
Buildingsocialanalyticstoolwithmongodb
Jump Start into Apache® Spark™ and Databricks
Getting started with Apache Spark in Python - PyLadies Toronto 2016
Brightstar DB
Who's afraid of front end databases
A Tale of Three Apache Spark APIs: RDDs, DataFrames and Datasets by Jules Damji
Working with Data in Service Workers
Who's afraid of front end databases?
Core data WIPJam workshop @ MWC'14
Webinar: The Anatomy of the Cloudant Data Layer
Paris Data Geek - Spark Streaming
PYSPARK PROGRAMMING.pdf
Scalding: Twitter's Scala DSL for Hadoop/Cascading
Scalding: Twitter's New DSL for Hadoop
Compass Framework
Building highly scalable data pipelines with Apache Spark
Hibernate in XPages
Ad

More from ICS User Group (20)

PDF
Domino Security Present and Future ConnectED Review - ICS.UG 2016
PDF
Moving DNUG Usergroup von on-premise in die IBM ConnectionsCloud - ICS.UG 2016
PDF
IBM Notes Traveler & IBM Mobile Connect What's new?, What's next? - ICS.UG 2016
PDF
Warum IBM mit Watson den Büroalltag revolutioniert - ICS.UG 2016
PDF
Private Cloud Storage - ICS.UG 2016
PDF
Die mobile Herausforderung meistern! - ICS.UG 2016
PDF
Cloud Update 2016 IBM Collaboration Solutions - Verse (&Toscana) - ICS.UG 2016
PDF
Cloud Update 2016 IBM Collaboration Solutions - ConnectionsCloud - ICS.UG 2016
PDF
OpenNTF - From Donation to Contribution - ICS.UG 2016
PDF
Virtual, Faster, Better! How to Virtualize the Rich Client and Browser Plugin...
PDF
Die Zukunft spricht Domino! - ICS.UG 2016
PDF
Smashdocs - Dokumente gemeinsam schreiben - ICS.UG 2016
PDF
Smashdocs - Collaborative authoring & reviewing - ICS.UG 2016
PDF
IBM Digital Experience Overview - ICS.UG 2016
PDF
Watson - Bitte-helfen-Sie - ICS.UG 2016
PDF
Planung / Terminierung eines Außendienstes mit XPages - ICS.UG 2016
PDF
Beyond XPages ICS.UG 2015
PDF
ATLUG comes to you ICS.UG 2015
PDF
Das interne soziale Netzwerk des Ostdeutschen Sparkassenverbandes - ICS.UG 2015
PDF
ICSUG Keynote IBM Collaboration Strategie 2015 and beyond
Domino Security Present and Future ConnectED Review - ICS.UG 2016
Moving DNUG Usergroup von on-premise in die IBM ConnectionsCloud - ICS.UG 2016
IBM Notes Traveler & IBM Mobile Connect What's new?, What's next? - ICS.UG 2016
Warum IBM mit Watson den Büroalltag revolutioniert - ICS.UG 2016
Private Cloud Storage - ICS.UG 2016
Die mobile Herausforderung meistern! - ICS.UG 2016
Cloud Update 2016 IBM Collaboration Solutions - Verse (&Toscana) - ICS.UG 2016
Cloud Update 2016 IBM Collaboration Solutions - ConnectionsCloud - ICS.UG 2016
OpenNTF - From Donation to Contribution - ICS.UG 2016
Virtual, Faster, Better! How to Virtualize the Rich Client and Browser Plugin...
Die Zukunft spricht Domino! - ICS.UG 2016
Smashdocs - Dokumente gemeinsam schreiben - ICS.UG 2016
Smashdocs - Collaborative authoring & reviewing - ICS.UG 2016
IBM Digital Experience Overview - ICS.UG 2016
Watson - Bitte-helfen-Sie - ICS.UG 2016
Planung / Terminierung eines Außendienstes mit XPages - ICS.UG 2016
Beyond XPages ICS.UG 2015
ATLUG comes to you ICS.UG 2015
Das interne soziale Netzwerk des Ostdeutschen Sparkassenverbandes - ICS.UG 2015
ICSUG Keynote IBM Collaboration Strategie 2015 and beyond

Recently uploaded (20)

PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Nekopoi APK 2025 free lastest update
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
L1 - Introduction to python Backend.pptx
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
medical staffing services at VALiNTRY
PDF
AI in Product Development-omnex systems
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
System and Network Administration Chapter 2
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Softaken Excel to vCard Converter Software.pdf
Nekopoi APK 2025 free lastest update
Design an Analysis of Algorithms I-SECS-1021-03
PTS Company Brochure 2025 (1).pdf.......
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Reimagine Home Health with the Power of Agentic AI​
Understanding Forklifts - TECH EHS Solution
Operating system designcfffgfgggggggvggggggggg
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Which alternative to Crystal Reports is best for small or large businesses.pdf
L1 - Introduction to python Backend.pptx
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
How to Migrate SBCGlobal Email to Yahoo Easily
Adobe Illustrator 28.6 Crack My Vision of Vector Design
medical staffing services at VALiNTRY
AI in Product Development-omnex systems
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
System and Network Administration Chapter 2
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises

Find your data - using GraphDB capabilities in XPages applications - ICS.UG 2016

  • 1. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Find your data - using GraphDB capabilities in XPages applications Oliver Busse, We4IT GmbH
  • 2. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug About me • Working for We4IT –Aveedo® Application Framework • „Bleeding Yellow“ since R4.5 • IBM Champion for ICS 2015 + 2016 • OpenNTF Member Director @zeromancer1972 @we4it
  • 3. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Agenda • What is GraphDB? • Terminology • Data Modelling & Implementation • Example
  • 4. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug „Graphs“ http://whatis.techtarget.com/definition/graph-database
  • 5. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Graph DB A graph database, also called a graph-oriented database, is a type of NoSQL database that uses graph theory to store, map and query relationships. A graph database is essentially a collection of nodes and edges. Each node represents an entity (such as a person or business) and each edge represents a connection or relationship between two nodes. http://whatis.techtarget.com/definition/graph-database
  • 6. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Some Graph DBs & Frameworks • Neo4J • OrientDB • DEX • Tinkerpop • Apache Lucene / Solr
  • 7. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Who is using Graph DBs? • Amazon • Google • Facebook • …almost every application that offers something like – „related posts“ (blogs) – „others also bought this“ (shops) – collect relations and „likes“ – …
  • 8. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Graphs – Terminology • Vertices (Nodes/Elements) – Properties (Key-Value pairs) • Edges – Connections, Relations between Vertices • ElementStores – for us: NSF databases • MetaverseIDs (Domino related only) – Replica + UNID (hashed) – internal use only (don‘t care about them) – sometime refered to as „Coordinate“
  • 9. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Graph DB – in Domino? • Vertices and Edges are stored as Documents • The data container is a NSF • The ElementStore defines the filepath to the NSF • An ElementStore can hold different types of Vertices • Usually you create one ElementStore for each Vertice type • Graphs are transactional • Graph are a new part of the OpenNTF Domino API
  • 10. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Data Modelling & Implementation • Nodes are defined as Interfaces • Fields are defined as properties with Getter and Setter • Methods define how the Node can build Edges to other Vertices • Methods also return all Edges to a certain Vertice
  • 11. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Sample: Webshop, Customer Node @TypeValue("Customer") public interface Customer extends DVertexFrame { @Property("$$Key") public String getKey(); @Property("name") public String getName(); @Property("name") public void setName(String name); @AdjacencyUnique(label = "basket") public Iterable<ProductItem> getProducts(); @AdjacencyUnique(label = "basket") public ProductItem addProductItem(ProductItem item); @AdjacencyUnique(label = "basket") public void removeProductItem(ProductItem item); }
  • 12. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Init the Graph • Define the Element Store(s) • Add Element Store(s) to the Graph Configuration • Define the DFramedTransactionalGraph object with the Graph Configuration • Work with the Graph object
  • 13. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Init the Graph: code schema private DFramedTransactionalGraph<DGraph> initStores() { // create element store DElementStore myStore = new DElementStore(); myStore.setStoreKey(“folder/some.nsf”); myStore.addType(MyType.class); // register the stores to the graph DConfiguration config = new DConfiguration(); DGraph graph = new DGraph(config); config.addElementStore(myStore); config.setDefaultElementStore(myStore.getStoreKey()); // init the graph DFramedGraphFactory factory = new DFramedGraphFactory(config); DFramedTransactionalGraph<DGraph> fg = (DFramedTransactionalGraph<DGraph>) factory.create(graph); return fg; }
  • 14. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Create an Edge • Parameterize Object 1 • Get Object 2 by a unique key • Call one of the „add“ methods of your Node class • Commit your changes
  • 15. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Create an Edge: code schema public void addToBasket(ProductItem item) { String userName = Factory.getSession(SessionType.CURRENT).getEffectiveUserName(); try { DFramedTransactionalGraph<DGraph> graph = initStores(); Customer customer = graph.getElement(userName, Customer.class); customer.addProductItem(item); graph.commit(); } catch (Throwable e) { XspOpenLogUtil.logError(e); } }
  • 16. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Let‘s see the demo & some more code
  • 17. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Resources • The XPages demo application – https://bitbucket.org/zeromancer1972/sutol-2015-oda-graph-demo • A nice glossary – http://www.intec.co.uk/from-xpages-to-web-app-glossary/ • OpenNTF Domino API – http://www.openntf.org/main.nsf/project.xsp?r=project/OpenNTF%20Domino%20API – http://www.openntf.org/main.nsf/project.xsp?r=project/OpenNTF%20Domino%20API%20Demo%20Database • Xots – http://www.intec.co.uk/xots-background-and-multithreaded-tasks-the-openntf-domino-api-way-part-one/ – http://www.intec.co.uk/xots-background-and-multithreaded-tasks-the-openntf-domino-api-way-part-two/ – http://www.intec.co.uk/xots-background-and-multithreaded-tasks-the-openntf-domino-api-way-part-three/ • Graphs – http://de.slideshare.net/ktree19/the-graph-revolution
  • 18. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug Q & A
  • 19. Find your data - using GraphDB capabilities in XPages applications www.ics.ug #icsug