I've been a student at Seneca since 2010 and in all these years that I've been in Seneca I never thought about attending FSOSS, until now, when I had to go for FSOSS as part of my Open Source course requirement. I could not attend all the talks at FSOSS but a couple of them caught my attention because I was already familiar with the topics and had a degree of interest in them. so, I decided to attend those talks in particular. Below is my account of the talks I attended and what I learned from attending FSOSS.
Topics of Interest
I decided to attend the MongoDB talk at FSOSS 2013 because of my newly developed interest in Non SQL databases. Since the beginning of the Fall 2013 I've been working towards getting my MongoDB certification for Java developers from MongoDB University, and I am familiar with the MongoDB concepts. I wanted to find out what new information I could attain from attending the talk on MongoDB. This talk was given by Kevin Cearns. He talked about the advantages of NoSql Databases over Relational Databases and about MongoDB in particular.
Kevin started off by listing out the four types of Nosql databases, which are:
- Key-value stores
- Column based
- Document based (MongoDB)
- Graph based
While there are a number of NoSql databases out in the market currently, MongoDB is the leading Open-Source, NoSql database available. Kevin mentioned that MongoDb is the number 6 best database currently.
MongoDB is a document database written in c++, which is fully horizontally scalable and is very high performance. MongoDb has a flexible schema, which means that the collections are not bound in a fixed document. The collections in MongoDB are stored in documents called BSON or Binary JSON. The structure of a BSON document is same as a JSON document, which means that every collection in Mongo is enclosed in curly brackets just like a JSON document. When saying Mongo has a flexible schema it means that when a collection has, for example 4 fields, data with number of fields other than 4 can be added to the same collection. The collections are not schema bounds like relational databases. Being schema-less also means that, common fields in a document's collection can hold different types of data. For example, a field which is used for Name can hold characters, decimal values, integers etc. This does not work in relational databases because, in relational databases when a field is defined as a particular data type it can only hold values of that data type. This illustrates the flexibility of MongoDB.
MongoDB also has full support of primary and secondary indexing. Indexes support the efficient resolution of queries in MongoDB. Without indexes, MongoDB must scan every document in a collection to select those documents that match the query statement. Fundamentally, indexes in MongoDB are similar to indexes in other database systems. MongoDB defines indexes at the collection level and supports indexes on any field or sub-field of the documents in a MongoDB collection. MongoDB can use indexes to return documents sorted by the index key directly from the index without requiring an additional sort phase.
Sharding is another feature that Mongo supports. It is the process of storing data records across multiple machines and is MongoDB’s approach to meeting the demands of data growth. As the size of the data increases, a single machine may not be sufficient to store the data nor provide an acceptable read and write throughput. Sharding solves the problem with horizontal scaling. With sharding, you add more machines to support data growth and the demands of read and write operations.
Kevin also spoke about Replication. A replica set in MongoDB is a group of mongod processes that maintain the same data set. Replica sets provide redundancy and high availability, and are the basis for all production deployments. Data can live across multiple boxes in multiple servers.
He then went to talk about installing MongoDB and how easy it was to set it up, he showed the installation process by demoing it to the audience. I already have mongodb installed and set up on my local computer so this part was bit of repetitive to me. He went to create a collection called FSOSS and demoed the basic Mongo commands and then went to a lot of detail about mongo and demoed a lot of its functionality, which I thought was pretty cool.