Using NoSQL with ~JPA, EclipseLink and Java EE Reza Rahman Java EE/GlassFish Evangelist [email protected] @reza_rahman 1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public NoSQL Landscape Agenda Using NoSQL with ~JPA Using NoSQL with CDI 2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public NoSQL Landscape Wild, Wild West Defined by non-conformance to established RDMS paradigm – No SQL/queries, schemaless, weak referential integrity, no JOINs Scalability and cost major motivators (ACID vs. BASE) – No transactions, eventual consistency, distributed nodes – In the end, may complement and not replace relational databases… Extremely divergent, specialized products Some taxonomies – Key/value, document, graph, columnar, etc MongoDB, Cassandra, Google BigTable, CouchDB, HBase, Redis, Neo4j, Oracle NoSQL 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public NoSQL Landscape Adoption and Trends 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public The Case for JPA There often is a domain model Some parts of JPA fit NoSQL quite well* Learning each diverging NoSQL product cumbersome, often unnecessary Switching between NoSQL solutions difficult, particularly at various stages of application development “Polyglot Persistence” difficult NoSQL APIs generally low level, verbose 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public Applying JPA to NoSQL JPA domain model concepts apply well to NoSQL – Entities, Embeddables, ElementCollection, OneToOne, OneToMany, ManyToOne, Version Pure relational concepts may not apply well – CollectionTable, Column, SecondaryTable, SequenceGenerator, TableGenerator JPA queries can fit relatively well – Basic finders (by identity, all) – JPQL—portable query language defined by the spec – Native query—lets you leverage database specific features 6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public EclipseLink NoSQL Support JPA style access to NoSQL databases – Leverage non-relational database support for JCA Metadata to identify NoSQL entities (e.g., @NoSQL) Support JPQL subset for each – Leverage what’s available Initial support for MongoDB and Oracle NoSQL – More to come (Cassandra, HBase, CouchDB?) Support mixing relational and non-relational data in single composite persistence unit (“polyglot persistence”) 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public JPA/EclipseLink NoSQL Demo https://github.com/m-reza-rahman/jpa-nosql-demo 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public Other JPA/NoSQL Solutions Hibernate OGM – Utilizes Hibernate codebase for NoSQL – MongoDB, Neo4J, CouchDB, Infinispan, Ehcache – Tries to provide as much of JPA as possible, including queries via Hibernate Search/Lucene, relational mapping annotations DataNucleus – Persistence layer behind Google App Engine (not JPA compliant) – MongoDB, HBase, Neo4j Kundera – Cassandra, MongoDB, HBase, Redis, Neo4j, Oracle NoSQL, CouchDB Easy-Cassandra – Cassandra only 9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public Similar NoSQL Solutions PlayOrm – NoSQL centric JPA flavored annotations – Focused on Play framework – Cassandra, MongoDB, HBase Mophia – Annotations mirror JPA – MongoDB specific 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public CDI Overview Next-generation dependency injection for Java EE Synthesizes best ideas from Seam 2, Guice and Spring Many innovative features on its own right Focus on loose-coupling, Java-centric type-safety, annotations, expressiveness and ease-of-use Large ecosystem rapidly evolving around CDI 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public A Quick Look at CDI Basic dependency injection – @Inject, @Qualifier, @Named, @Stereotype, @Alternative, @Produces, @Disposes Context management – @Dependent, @RequestScoped, @SessionScoped, @ConversationScoped, @ApplicationScoped Lightweight Events – Event, @Observes Interceptors/Decorators – @Interceptor, @Decorator Portable Extensions SPI 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public The Case for CDI “Hibernate OGM is not expected to be the Rosetta stone used to interact with all NoSQL solutions in all use cases” No real domain model Advanced, highly specialized features Unsupported NoSQL solutions Existing NoSQL API knowledge Most NoSQL APIs POJO based, easy to integrate natively via CDI 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public CDI NoSQL Demo https://github.com/m-reza-rahman/cdi-nosql-demo 14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public Java EE 8 Community Survey https://blogs.oracle.com/ldemichiel/entry/results_from_the_java_ee https://java.net/downloads/javaee-spec/JavaEE8_Community_Survey_Results.pdf 15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public NoSQL Survey Results 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public Summary NoSQL getting attention, but still immature and volatile Parts of JPA can apply well to NoSQL – many such initiatives including from Oracle Most NoSQL APIs are good enough to integrate directly via CDI Too soon to standardize NoSQL in Java EE? 17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public Learn More EclipseLink NoSQL Examples – http://wiki.eclipse.org/EclipseLink/Examples/JPA/NoSQL Hibernate OGM – http://hibernate.org/ogm/ DataNucleus – http://www.datanucleus.org Kundera – https://github.com/impetus-opensource/Kundera/ Easy-Cassandra – https://github.com/otaviojava/Easy-Cassandra Weld Docs – http://docs.jboss.org/weld/reference/latest/en-US/html/ 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public
© Copyright 2024 ExpyDoc