[cs615asa] Homework#N - Attend a Meetup/Talk/community event.
Roy Vaccaro Jr.
rvaccaro at stevens.edu
Thu Apr 28 22:13:18 EDT 2016
For this assignment I attended “An introduction to no-sql databases” hosted
by League of Professional System Administrators in NJ (LOPSA-NJ). I
chose this event because I have two different flavors of no-sql databases
that are running at my current job that I have to interact with on
occasion. Having worked solely with relational databases throughout my
career this was a definite change of pace.
The speaker was Eric Marshall a Systems Administrator from Airisdata.
The presentation started off with some basic reasons why chose a no-sql
database vs a relational one. No-sql databases scale very well
horizontally. The data layouts are very developer friendly in that data
can be stored in more interesting ways more closely matching objects than
being forced into tables/rows. There are a number of Open Source
implementations so software/licensing costs can be significantly less.
At this point we started to talk about the different flavors of no-sql
implementations and where they fit into CAP (C – is for Consistency, A – is
for Availability, P – Is for Partition Tolerance). As with most technology
you can generally have only 2 of the above at a given time. Partition
Tolerance is mandatory for distributed systems. Relational databases fall
into the category of CA since they are not really distributed. Some
examples of CP are Hbase and MongoDB, and some examples of AP are Dynamo
and Cassandra. The question on why anyone would want to be “inconsistent”
came up in the case of AP implementations to which we discussed that good
now is better than perfect later (don’t block) in the case of part of the
system being down. The presenter also spoke about different ways data can
be distributed. Data can be sharded, replicated or even a combination of
There are a few different ways data is actually stored within the
database. Key-value stores are generally designed for speed and high
load. Sometimes they are memory-only. Some of the most used key-value
stores are Redis, Memcached, and Amazon DynamoDB. Columnar no-sql
databases are very much like Google’s BigTable where you have some odd
row/column configurations . Examples of columnar databases are Cassandra
and HBase. Document Stores are very similar to Key-Value except instead
of a value being stored a JSON document or similar (txt,xml) is stored.
This schema is fairly flexible and supports keys references and indices.
MongoDB is a popular document store. Lastly Graph Databases such as Neo4J
and OrientDB are another flavor.
We now took a slightly deeper dive into some of the examples. First was
HBASE which is from Apache. It is no-sql sitting on top of HDFS (Hadoop
Distributed File System) . HBASE is column-oriented, fault tolerant, and
supports java, REST, Avro, and Thrift. Keys are arbitrary strings and
values are an entire row of data. There are no joins in HBASE.
Next we looked at Cassandra which is a Symmetric/peer to peer. It is
linearly scalable. Supports replication, partitioning and it has “eventual
consistency”. Cassandra is tweak-able by adjusting the replication amount,
number of successful writes = done, number of successful reads = you have
received your data. The different nodes “gossip” to see who is up so they
can eventually become consistent.
Lastly we took a look at RIAK. Riak has a simple interface, high write
availability and linear scaling. You can use Rest API via http or
Protobufs. It has a ring architecture so scaling is easy by just adding
servers. All nodes are peers and sync through gossip protocols.
In conclusion even though we barely scratched the surface of any of these
nosql implementations I gained a much greater appreciation for their
flexibility and overall usefulness in my working environment as well as an
appreciation for some of the work that goes into maintaining them.
More information on LOPSA-NJ can be found here:
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cs615asa