Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 icfi.com | MongoDB and Spring Data August 8 th, 2012 Prepared for: THE JAVA™ METROPLEX USERS GROUP.

Similar presentations


Presentation on theme: "1 icfi.com | MongoDB and Spring Data August 8 th, 2012 Prepared for: THE JAVA™ METROPLEX USERS GROUP."— Presentation transcript:

1 1 icfi.com | MongoDB and Spring Data August 8 th, 2012 Prepared for: THE JAVA™ METROPLEX USERS GROUP

2 2 icfi.com | Integrated Services ICF IRONWORKS Interactive Portal + Content Management Business + IT Alignment Interactive Developing creative ideas and engaging audiences through Web, Mobile, and Social Media User + Industry Research Web Analytics Digital Strategy + Planning Mobile Strategy + Execution Search Marketing Rich Media Development Social Media + Monitoring Information Architecture + Usability Creative Design Portal + Content Management Building Internet-based systems to share content, knowledge, and data Portal Enterprise Content Management Search E-Commerce Custom Application Development Systems Integration Cloud Services Application + Platform Management Business + IT Alignment Developing practical strategies to help clients improve business performance Program + Portfolio Management IT Strategy and Roadmap Technology Selection Business Process Improvement Governance Business Intelligence

3 3 icfi.com |  ICF Ironworks has experience in the following market-leading platforms: Microsoft Ektron Autonomy Interwoven Oracle UCM and WebLogic Portal Alfresco SiteCore Percussion IBM WebSphere  We leverage our strategic partnerships to enhance the services we provide to our clients and to build on our sales pipeline  ICF Ironworks is one of 34 Microsoft National Systems Integrators (NSI) Partnerships and Platform Expertise ICF IRONWORKS

4 4 icfi.com | Government Non-Profit/Assn Financial Energy Mfg/Retail/Distribution Healthcare ICF IRONWORKS

5 5 icfi.com | Who Am I?  Java Solutions Architect with ICF Ironworks  Adjunct Professor  Started with HTML and Lotus Notes in 1992 In the interim there was C, C++, VB, Lotus Script, PERL, LabVIEW, etc.  Not so much an Early Adopter as much as a Fast Follower of Java Technologies Learned Java 1.1 in 1997, J2EE in 1999  Alphabet Soup (MCSE, ICAAD, ICASA, SCJP, SCJD, PMP, CSM)  LinkedIn: http://www.linkedin.com/in/iamjimmyrayhttp://www.linkedin.com/in/iamjimmyray  Blog: http://jimmyraywv.blogspot.com/ Avoiding Tech-sandhttp://jimmyraywv.blogspot.com/

6 6 icfi.com | MongoDB and Spring Data

7 7 icfi.com | Tonight’s Agenda  Quick introduction to NoSQL and MongoDB Configuration MongoView  Introduction to Spring Data and MongoDB support Spring Data and MongoDB configuration Templates Repositories Query Method Conventions Custom Finders Customizing Repositories Metadata Mapping (including nested docs and DBRef) Aggregation Functions GridFS File Storage Indexes

8 8 icfi.com | What is NoSQL?  Official: Not Only SQL In reality, it may or may not use SQL, at least in its truest form Varies from the traditional RDBMS approach of the last few decades Not necessarily a replacement for RDBMS; more of a solution for more specific needs where is RDBMS is not a great fit Content Management (including CDNs), document storage, object storage, graph, etc.  It means different things to different folks. It really comes down to a different way to view our data domains for more effective storage, retrieval, and analysis

9 9 icfi.com | From NoSQL-Database.org “NoSQL DEFINITION: Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open-source and horizontally scalable. The original intention has been modern web-scale databases. The movement began early 2009 and is growing rapidly. Often more characteristics apply such as: schema-free, easy replication support, simple API, eventually consistent / BASE (not ACID), a huge amount of data and more.”

10 10 icfi.com | Some NoSQL Flavors  Document Centric MongoDB Couchbase  Wide Column/Column Families Cassandra Hadoop Hbase  XML MarkLogic  Graph Neo4J  Key/Value Stores Redis  Object DB4O  Other LotusNotes/Domino

11 11 icfi.com | Why MongoDB  Open Source (written in C++)  Multiple platforms (Linux, Win, Solaris, Apple) and Language Drivers  Explicitly de-normalized  Document-centric and Schema-less  Fast (low latency) Fast access to data Low CPU overhead  Ease of scalability (replica sets), auto-sharding  Manages complex and polymorphic data  Great for CDN and document-based SOA solutions  Great for location-based and geospatial data solutions

12 12 icfi.com | Why MongoDB (more)  Because of schema-less approach is more flexible, MongoDB is intrinsically ready for iterative (Agile) projects.  Eliminates “impedance-mismatching” with typical RDBMS solutions  If You are already familiar with JavaScript and JSON, this is an easy database to understand.

13 13 icfi.com | What is schema-less?  A.K.A. schema-free  It means that MongoDB does not enforce a column data type on the fields within your document, nor does it confine your document to specific columns defined in a table definition.  The schema is actually controlled via the application API layers and is implied by the “shape” (content) of your documents.  This means that different documents in the same collection can have different fields. So the schema is flexible in that way Only the _id field is mandatory in all documents.  Requires more rigor on the application side.

14 14 icfi.com | Why Not MongoDB  High speed and deterministic transactions: Banking and accounting  Where SQL is absolutely required Where Joins are needed  Traditional non-real-time data warehousing ops  If your organization lacks the controls and rigor to place schema and document definition at the application level without compromising data integrity

15 15 icfi.com | MongoDB  Was designed to overcome some of the performance shortcomings of RDBMS  Some Features Fast Querying In place updates Full Index support (including compound indexes) Replication/High Availability (see CAP Theorem) Auto Sharding for scalability Aggregation, MapReduce GridFS

16 16 icfi.com | CAP Theorem  C onsistency  A vailability  P artition Tolerance (network partition tolerance)  You can never have all three, so you plan for two and make the best of the third. For example: Perhaps “eventual consistency” is OK for a CDN application.

17 17 icfi.com | Container Models: RDBMS vs. MongoDB  RDBMS: Servers > Databases > Schemas > Tables > Rows Joins  MongoDB: Servers > Databases > Collections > Documents No Joins, Db References, Nested Documents, de-normalization Embedding and Linking

18 18 icfi.com | MongoDB Collections  Schema-less  Can have up to 24000 (according to 10gen) Cheap to resource  Contain documents (…of varying shapes)

19 19 icfi.com | MongoDB Documents  JSON (what you see) Actually BSON (Internal - Binary JSON - http://bsonspec.org/)http://bsonspec.org/  Elements are name/value pairs  16 MB maximum size  What you see is what is stored No default fields (columns)

20 20 icfi.com | Why BSON?  Adds data types that JSON did not support  Optimized for performance  Adds compression

21 21 icfi.com | MongoDB Install  Extract MongoDB  Build config file, or use startup script  Start Mongod (daemon) process  Use Shell (mongo) to access your database  Use MongoVUE for GUI access and to learn shell commands

22 22 icfi.com | Mongo Shell  In Windows, mongo.exe  Command-line interface to MongoDB (sort of like SQL*Plus for Oracle)

23 23 icfi.com | MongoVUE  GUI around MongoDB Shell  Makes it easy to learn MongoDB Shell commands db.employee.find({ "lastName" : "Smith", "firstName" : "John" }).limit(50); show collections  Demo…

24 24 icfi.com | Web Admin Interface  Localhost:28017  Quick stats viewer  Run commands  Demo

25 25 icfi.com | Spring Data  Large Spring project with many subprojects Category: Document Stores, Subproject MongoDB  “…aims to provide a familiar and consistent Spring-based programming model…”  Like other Springs, Data is POJO Oriented  Provides high-level API and access to low-level API for managing MongoDB documents.  Provides annotation-driven meta-mapping  Will allow you into bowels of API if you choose to hang out there

26 26 icfi.com | Spring Data MongoDB Templates  Implements MongoOperations (mongoOps) interface mongoOps defines the basic set of MongoDB operations for the Spring Data API. Wraps the lower-level MongoDB API  Provides access to the lower-level API

27 27 icfi.com | Spring Data MongoDB Templates - Configuration  See mongo-config.xml

28 28 icfi.com | Spring Data MongoDB Templates - Configuration  Or…see the config class

29 29 icfi.com | Spring Data Repositories  Convenience for data access Spring does ALL the work  Convention over configuration  Hides complexities of Spring Data templates and underlying API  Builds implementation for you based on interface design Implementation is built during Spring container load.  Is typed (parameterized via generics) to the model objects you want to store. When extending MongoRepository Otherwise uses @RepositoryDefinition

30 30 icfi.com | Spring Data Meta Mapping  Annotation-driven mapping of model object fields to Spring Data elements in specific database parlance.

31 31 icfi.com | MongoDB DBRef  Optional  Instead of nesting documents  Have to save the “referenced” document first, so that DBRef exists before adding it to the “parent” document

32 32 icfi.com | MongoDB Custom Spring Data Repositories  Hooks into Spring Data bean type hierarchy that allows you to add functionality to repositories  Important: You must write the implementation for this custom repository, using the class name for the Spring Data generated class  And…your Spring Data repository interface must extend this custom interface  Demo

33 33 icfi.com | MongoDB Advanced Queries  http://www.mongodb.org/display/DOCS/Advanced+Queries#Advan cedQueries-%24all http://www.mongodb.org/display/DOCS/Advanced+Queries#Advan cedQueries-%24all  Demo - $in, $nin, $gt, $all

34 34 icfi.com | MongoDB Aggregation Functions  Aggregation Framework  Map/Reduce  Distinct - Demo  Group - Demo Similar to SQL Group By function  Count

35 35 icfi.com | MongoDB GridFS  “…specification for storing large files in MongoDB.”  As the name implies, “Grid” allows the storage of very large files divided across multiple MongoDB documents. Uses native BSON binary formats  16MB per document Will be higher in future  Large files added to GridFS get chunked and spread across multiple documents.

36 36 icfi.com | MongoDB Indexes  Similar to RDBMS Indexes  Can have many  Can be compound  Makes searches, aggregates, and group functions faster  Makes writes slower  Sparse = true Only include documents in this index that actually contain a value in the indexed field.

37 37 icfi.com | MongoDB Security  Default is trusted mode, no security  --auth  --keyfile Replica sets require this option

38 38 icfi.com | MongoDB Encryption  MongoDB does not support data encryption, per se  Use application-level encryption and store encrypted data in BSON fields  Or…use TDE (Transparent Data Encryption) from Gazzang

39 39 icfi.com | Helpful Links  Spring Data MongoDB - Reference Documentation: http://static.springsource.org/spring-data/data- mongodb/docs/1.0.2.RELEASE/reference/html/ http://static.springsource.org/spring-data/data- mongodb/docs/1.0.2.RELEASE/reference/html/  http://nosql-database.org/ http://nosql-database.org/  www.mongodb.org www.mongodb.org  http://www.mongodb.org/display/DOCS/Java+Language+Center http://www.mongodb.org/display/DOCS/Java+Language+Center  http://www.mongodb.org/display/DOCS/Books http://www.mongodb.org/display/DOCS/Books  http://openmymind.net/2011/3/28/The-Little-MongoDB-Book/ http://openmymind.net/2011/3/28/The-Little-MongoDB-Book/  http://jimmyraywv.blogspot.com/2012/05/mongodb-and-spring-data.html http://jimmyraywv.blogspot.com/2012/05/mongodb-and-spring-data.html  http://jimmyraywv.blogspot.com/2012/04/mongodb-jongo-and-morphia.html http://jimmyraywv.blogspot.com/2012/04/mongodb-jongo-and-morphia.html  https://www.10gen.com/presentations/webinar/online-conference-deep-dive- mongodb https://www.10gen.com/presentations/webinar/online-conference-deep-dive- mongodb

40 40 icfi.com | Questions


Download ppt "1 icfi.com | MongoDB and Spring Data August 8 th, 2012 Prepared for: THE JAVA™ METROPLEX USERS GROUP."

Similar presentations


Ads by Google