Most enterprises have a lot of variety in the data they deal with. Some data is highly structured and other is very unstructured, some data is bound by strict integrity rules and quality constraints and other is free of any restrictions, some data is “hot” – currently very much in demand – and other data can be stone cold. Some data needs to extremely accurate, down to a prescribed number of fractional digits and other is only approximate. Some is highly confidential and other publicly accessible. Some is around in small quantities and other in huge volumes.
Over the years many IT professionals and companies have come to the realization that all this differentiation in data justifies or even mandates a differentiation in how the data is stored and processed. It does not make sense to treat the hottest transactional data in the same way as the archived records from 30 years. Yet many organizations have been doing exactly that: store it all in the enterprise relational database. It works, keeps all data accessible for those rare instances where that really old data is required and most importantly: keeps all data accessible in the same way – through straightforward SQL queries.
On March 14th, we organized a SIG session at AMIS around NoSQL in general and MongoDB in particular. We presented on the history of NoSQL, how it complements relational databases and a pure SQL approach and what types of NoSQL databases are available. Subsequently we focused on MongoDB, introducing the product and its architecture and discussing how to interact with MongoDB from JavaScript/NodeJS and from Java.
The slides presented by the speakers – Pom Bleeksma and Lucas Jellema – are shown here (from SlideShare):
The handson workshop is completely available from GitHub: https://github.com/lucasjellema/sig-nosql-mongodb.
An additional slide deck was discussed – to demonstrate 30 queries side by side, against MongoDB vs Oracle Database SQL. This slide deck includes the MongoDB operations:
•Filter & Sort (find, sort)
•Aggregation ($group, $project, $match, $sort)
•Lookup & Outer Join ($lookup, $arrayElemAt)
•Facet Search ($facet, $bucket, $sortByCount)
•Update (findAndModify, forEach, save, update, upsert, $set, $unset)
•Date and Time operations
•Materialized View ($out)
•Nested documents/tables ($unwind, $reduce)
•Geospatial (ensureIndex, 2dsphere, $near, $geoNear)
•Text Search (createIndex, text, $text, $search)
•Stored Procedures (db.system.js.save, $where)