NoSQL Databases have generated lots of buzz and debates these days. Some of the industry leaders claiming that NoSQL is nothing really new and others arguing the benefits of NoSQL databases.
Whatever the outcome of these debates is, the fact is that NoSQL is a hot topic today…. and Google Trends confirms this. During the last couple of years the number of NoSQL searches has gone from nowhere to the skies.
No doubt, NoSQL databases are gaining popularity among developers and enterprises and this trend seems to grow as we see new entrants entering the NoSQL scene. Monitis, our sister brand, is also looking forward into this new trend and lately we have seen many custom monitors developed for monitoring NoSQL databases. This article is an introduction to DynamoDB, one of the latest additions in the NoSQL movement.
Nearly six months ago, Amazon Web Services announced the release of its NoSQL database, DynamoDB. DynamoDB is a fast, highly reliable, and cost-effective solution that has evolved over 15 years at Amazon. DynamoDB provides a NoSQL database as a service, and remains incredibly simple to use.
Before AWS released DynamoDB as a service to the public, Dynamo was born out of Amazon’s necessity for very fast throughput. This became evident when the database bottleneck closed during the 2004 holiday season. This major malfunction exposed the need for a better solution and became the catalyst for Amazon to begin work on Dynamo for several of its infrastructure needs. Dynamo could be installed and used by DBA’s, but was complex to learn and use. It also still had to be installed and run on local in-house servers, also requiring updates.
SimpleDB, was launched to the public as DaaS, but had several key issues. Namely, SimpleDB required users to store their data in Domains. These Domains had a lot of storage and throughput limitations. SimpleDB, in staying true to its name, traded performance and reliability, for simplicity. Consistency was also a major issue with SimpleDB, which used eventual consistency. This problem was solved by giving the users the option for strong or eventual consistency in DynamoDB. Lastly, SimpleDB had a very complex pricing model that Amazon felt needed to be simplified to truly capitalize on.
Thus from the ashes of both products, DynamoDB was born. DynamoDB is Amazon’s solution to the problems that plagued both products. DynamoDB is now offered as a service to the public and address the needs for those looking for fast reliable and cheap solutions. Some of the key highlights of DynamoDB are:
Cost-effectiveness Yes, there is a cost involved, as opposed to other open-source alternatives. However, it easily becomes apparent of the value of DynamoDB. For sticklers, DynamoDB has a free tier of usage, allowing for up to 100 MB of storage and up to 5 writes per second and 10 reads per second of ongoing throughput capacity. Beyond that you pay a penny per hour for every 10 units of write capacity reserved, and a penny per hour for every 50 units of read capacity. The backing of arguably the biggest player in cloud computing and overall ease of use of DynamoDB quickly justifies the quarter per day when operating at that capacity.
This cost-effectiveness has saved some major companies unimaginable amounts of money. According to Amazon’s website, Samsung has been able to cut out a projected $34 million dollars in hardware and maintenance costs. Newsweek also claims they’ve been able to save $500k per year by using AWS and DynamoDB instead of traditional in-house solutions. DynamoDB effectively removes both the hardware and software management, allowing for the focus to remain on innovation of the application. Forrester.com backs up this claim, releasing a report that confirms cloud based solutions cut costs by nearly 75%. Shazam has in a since become DynamoDB’s poster child case study, when they chose to use DynamoDB to handle their advertising campaign during the 2012 Superbowl. Shazam was able to implement AWS in eight weeks. For them, DynamoDB served as a secondary data store for user activity and interaction logs. They then switched it to their primary data store once they saw the efficiency with which DynamoDB could handle over 500,000 writes per second.
Scalability meaning it is designed for seamless throughput and storage scaling. It uses “provisioned throughput” which makes it incredibly simple to dial up or down the estimated needs for a user’s application. DynamoDB uses automated seamless storage scaling, allowing unlimited amounts of table data to be stored and automatically allocating more resources using Amazon’s APIs. It also scales horizontally. Halfbrick Studios, the creators of Fruit Ninja Frenzy, is another good example of DynamoDB’s excellence. By using DynamoDB they were able to seamlessly scale their application very quickly, when their active monthly users suddenly sky-rocketed to 8 million. They were able to meet this demand very quickly and affordably by storing the game on DynamoDB.
Speed, DynamoDB is fast, using the latest solid state drives to achieve unparalleled read and write speeds. It is built to remain predictable and consistent, while providing fast latencies at the speeds SSDs can produce. With DynamoDB one can expect single-digit millisecond latencies, claiming less than 5 millisecond reads and less than 10 millisecond writes.
Flexibility, DynamoDB uses key/attribute stores for evolving models. There is no schema involved and this flexibility is vital to the speed and ease of use DynamoDB provides.
Performance is highly predictable using provisioned throughput. Provisioned throughput is a system by which one can specify the required performance of the database by reserving the number of resources necessary. This can be done using DynamoDB’s APIs and allows for easy resource allocation.
Simplicity, all of this combines to provide virtually no administration of the database. Obviously, one can see how much they can get done without having to worry about constant maintanence of a database. DyanamoDB is a one and done solution that makes application development a breeze.
Replication of all data entered into DynamoDB occurs over at least 3 different geographically separated data centers. This replication virtually guarantees your data will never be lost by Amazon in the cloud. Also as stated before, this replication happens nearly instantaneously due to AWS’s use of SSDs in all of their data centers.
Predictability DynamoDB provides a large amount of performance predictability. By allowing the user to adjust their throughput with Amazon’s APIs, the user retains complete control of allocating exactly what’s needed for their application to run and the cost that will be associated with it. Many cloud based system don’t allow this individualized approach in an attempt to remain fair to all customers. Since the user is in control of provisioning their own throughput, they have an excellent method for prediction. This increased ability at predicting provisions, instantly translates into a much higher cost-effectiveness.
DynamoDB, with Amazon’s backing, can handle workloads of any scale, while remaining cost-effective, scalable, and providing a high level of performance. It runs on the latest hardware, and the software has the backing of over 15 years of development and refinement by arguably the biggest cloud computing provider in the world. The original Dynamo has been through its baptism by fire as the solution Amazon developed to handle its most laborious functions and was trusted for years and refined in Amazon’s infrastructure. Now that it is being offered as a service to customers, it provides the same infrastructure Amazon depends on for its own massive loads. Beyond all that, Dynamo has been revamped to contain all the best aspects of SimpleDB to make using, implementing and working with it a relatively simple task. Due to this simplicity DBA’s no longer have to maintain the database constantly and can redirect their attention to innovations of their applications. Most applications will also fall under DynamoDB’s free tier during initial development and have begun generating traffic. This makes DynamoDB an excellent choice for startups. DynamoDB can be accessed and modified both in AWS’s Management Console or using eclipse. Finally by being NoSQL, adding to the database is simple, scaling is simple, load-balancing is highly efficient, and predictability is highly accurate.