I attended the MongoDB event in London on 6 November. This was
the first NoSQL event I have attended.
MongoDB (from "hu
mongous") is an
open-source document database, agile, scalable and for general purpose
data.
The schema is dynamic and the data
model can evolve as the application evolves.
There are 3 core design
principals to MongoDB
- Increasing development productivity
- Ensuring it is easy to maintain
- Horizontal scalability
New features in version 2.8 include document level locking
and pluggable storage engines. The
WiredTiger (Non-locking algorithms, access data at RAM speed) storage engine is available
in MongoDB.
There are two base architecture models
- Replica Sets (for High Availability and Disaster
Recovery)
- Sharding (increasing the volume of persisted
data too large for host machines)
The
MongoDB Management
Service (MMS) is a hosted service that provides monitoring, backup, and
automated deployment of MongoDB instances.
This tool will soon be available on premises as well. Currently scripts for automating management can be deployed using
Chef and
Puppet
etc.
These can be difficult to maintain.
The new automation component of MMS makes
deployment and elastic scale easy to manage.
Backups can also be done by using the
mongodump utility however, if you need to restore the data you
need to rebuild the indexes after restore.
Security in MongoDB has databases roles, can use
certificates and encryption.
MongoDB comes initially with no
permissions set so you can do everything.
It is important to set permissions following the principle of least priveledge. $redact is a new
aggregation
framework operator to protect data in the database from viewing.
MongoDB can be used for analytics and has a business data connector to
Hadoop.
Tools for
Troubleshooting
% mongostat - Provides a quick overview of the status of a currently running mongod or mongos instance.
% mongotop - Shows the amount of
time a MongoDB instance spends reading and writing data.
Db.currentOp () -Returns information on in-progress
operations for the database instance
Rs.status() - Reflects the current status of the replica set
Sh.status() - Reports on the sharding configuration and the information
regarding existing chunks in a
sharded cluster
The log explained
M Tools scripts help visualise the MongoDB log files. The commands used
from this tool in the troubleshooting session were
Mloginfo
Mlogfilter
Mplotqueries
Definitions
Oplog - stores an ordered history
of logical writes to a MongoDB database.
Config servers - are special mongod instances that store the metadata
for a sharded cluster.
Mongod - The
MongoDB database server.
Mongos - The
routing and load balancing process that acts an interface between an
application and a MongoDB sharded
cluster.
The event provided a useful introduction to MongoDB.