Jennifer Reif, Neo4j ( https://twitter.com/JMHReif )
From relational to NoSQL to graph, we will explore various types of data, the way it is stored, and how best to go about retrieving it.
Powering Real-Time Decisions with Continuous Data Streams
Code Wars: Database Decisions for Application Development
1. Code Wars
Database Decisions for Application Development
Jennifer Reif
Email: jennifer.reif@neo4j.com
Twitter: @JMHReif
LinkedIn: linkedin.com/in/jmhreif
Github: GitHub.com/JMHReif
Website: jmhreif.com
2. Who Am I?
• Developer relations engineer at Neo4j
• Developer
• Blogger
• Conference speaker
• Continuous learner + geek
Jennifer Reif
Email: jennifer.reif@neo4j.com
Twitter: @JMHReif
LinkedIn: linkedin.com/in/jmhreif
Github: GitHub.com/JMHReif
Website: jmhreif.com
3. Why should the database matter to us?
• Long-term:
• Right tool for the right job
• Future maintenance/improvement e
ff
orts
• Short-term:
• Forcing data into unnatural format
• Data model confusion and iterations
• Complex queries to handle business questions
• Data storage can impact application development!
6. Using Spring
• Quick-start (Spring Initializr)
• Reduce boilerplate (Spring Boot)
• Consistent integration (Spring Data):
• Annotation-based mapping for POJOs
• Repository support via interface
• Domain-speci
fi
c language queries for each
https://spring.io/projects/spring-data
14. Key Differences
• POJOs aligning with data models
• Maria: Order -> OrderedProduct <- Product
• Mongo: Order { Product: [{}] }
• Neo4j: Order -[INCLUDES]-> Product
• @Query annotation (DSL syntax)
• Maria: JPQL / SQL
• Mongo: JSON-parameter / SQL
• Neo4j: Cypher
15. Key Differences
• TL;DR - data model impacts app development
• Fit data into a database that creates the…
• Cleanest model
• Simplest queries
• Best application