MSSE SENG 5199

Course Materials for the MSSE Web Application Development Course

slidenumbers: true

NoSQL

Mike Calvo

mike@citronellasoftware.com


Case Against Relational Data


Types of NoSQL Data Stores


Key-value Store


Document-oriented Store


Graph Database


Column Database


Closer Look: MongoDB


Example MongoDB Document

{
  "_id": ObjectId("5248d92ae102251e9e94eb4b"),
  "title": "With or Without You",
  "releaseYear": 1987,
  "artist": {
    "name": "U2"
  }
}

MongoDB Features


MongoDB Cloud Support


Install MongoDB Locally


Simple Mongo Commands


Setup MongoLab Instance


Enabling Mongo in Spring Boot

https://spring.io/guides/gs/accessing-data-mongodb/


Mongo Repositories

import org.bson.types.ObjectId
import org.springframework.data.mongodb.repository.MongoRepository

interface ReviewNoteRepository extends MongoRepository<ReviewNote, ObjectId> {
  List<ReviewNote> findByRelease(Release release)
}

Mapping Classes to Mongo Collections


MongoDb IDs


Mixed JPA/Mongo


Configuring MongoDB

# MONGODB (MongoProperties)
spring.data.mongodb.authentication-database= # Authentication database name.
spring.data.mongodb.database=test # Database name.
spring.data.mongodb.field-naming-strategy= # Fully qualified name of the FieldNamingStrategy to use.
spring.data.mongodb.grid-fs-database= # GridFS database name.
spring.data.mongodb.host=localhost # Mongo server host.
spring.data.mongodb.password= # Login password of the mongo server.
spring.data.mongodb.port=27017 # Mongo server port.
spring.data.mongodb.repositories.enabled=true # Enable Mongo repositories.
spring.data.mongodb.uri=mongodb://localhost/test # Mongo database URI. When set, host and port are ignored.
spring.data.mongodb.username= # Login user of the mongo server.

Mongo Resources