Keeping User Generated Content Flexible with Neo4j - Greg Jordan @ GraphConnect Chicago 2013

23
Innovate. Share. Connect. Chicago June 12-13 Keeping User Generated Content Keeping User Generated Content Flexible with Neo4j Flexible with Neo4j Greg Jordan Greg Jordan

Transcript of Keeping User Generated Content Flexible with Neo4j - Greg Jordan @ GraphConnect Chicago 2013

Innovate. Share. Connect.Chicago June 12-13

Keeping User Generated Content Keeping User Generated Content Flexible with Neo4jFlexible with Neo4j

Greg JordanGreg Jordan

My background• Manager of Web Development at Methodist Le Bonheur

Healthcare

• Ph.D. candidate focusing on qualitative usability

• 15 years of programming experience

• Java

• Content management systems

• Mobile development (iOS, Android and, yes, Blackberry)

• Working with Neo4j for about a year

Caveats• Not just about Neo4j

• Three weeks ago

• Work in progress

Agenda• Problems

• Motivation & Goals

• Tech stack

• Why Neo4j

• Examples

• Bit of code

Problems• Projects

• Form Builder

• Social Forum

Motivation & Goals• Project Motivation

• It’s the right tool

• Growth of graph DB usage

• Goals

• Build UI to create flexible structure

• Generate input markup from structure

• Generate input rules from structure

• Generate list & item display markup

• Speed kills

Now what?

Tech stack

Mustache• "logic-less": no explicit control flow statements

• all control driven by data

• strong "separating logic from presentation”

• it is impossible to embed application logic in the Mustache templates*

* Depends on how you define logic

Mustache.java

Sam Pullara@sampullara

• Works well with progressive enhancement

• Mock data is replaced at runtime

• Used at twitter & netflix

Spring Data Neo4j• Object-Graph-Mapping of annotated POJO entities

• Neo4jTemplate with convenient API, exception translation and optional transaction management

• Cross-store support for partial JPA - Graph Entities

Using Spring Data Neo4j

Michael Hunger@mesirii

Why Neo4j?• A native java API

• Access via a RESTful server protocol

• There are lots of language bindings

• Proven with customers like Cisco, Adobe and Jive

Why Neo4j?• Whiteboard friendly

• Relationships have 1st class status

Why Neo4j?• Schema-less

• Semi-structured data

• Speed at getting connected data

Examples – Form Builder

Examples – Social Forum

Demo & Bit of Code

• Mustache

• Spring Data Neo4j

• Java reflection

Questions?

Greg Jordan@gmjordan