When to Opt For AWS DynamoDB?

If the latest in cloud technology interests you, then this piece on serverless computing should make for an interesting read. Plus, a bonus video on leveraging the serverless cloud to improve business agility.

Amazon DynamoDB is a fully managed NoSQL database service that provides quick and predictable performance with scalability and is offered as part of Amazon Web Services’ (AWS), cloud service platform.

DynamoDB takes off the administrative burdens of operating and scaling a distributed database so that users need not have to worry about hardware provisioning and a software patch update.

DynamoDB uses the NoSQL database data model and derives the name from Dynamo, but DynamoDB has a different core level implementation.

DynamoDB Web service allows developers to purchase a service based on throughput rather than on storage.

In DynamoDB, tables, items, and attributes are the core components. A table is a set of items, and each item is a set of attributes. DynamoDB uses primary keys to uniquely identify each item in a table.

Following table lists the difference between DynamoDB and regular SQL Database:

NoSQL Database SQL Database
Non-relational database Relational Databases (RDBMS)
Document-based, key-value pairs, graph databases Table-based databases
Schema is dynamic Schema is predefined
Queries are focused on collection of documents and referred as UnQL (Unstructured Query Language) SQL ( structured query language ) for defining and altering the data
No foreign key concept Foreign key concept to refer secondary table
DynamoDB MongoDB, BigTable are NoSQL databases MS-SQL, Oracle, MySQL are SQL databases

Sample Table – Person in DynamoDB:

When should one go for AWS DynamoDB?

Today’s web-based applications generate and consume huge amounts of data. For example, an online game/blog might start out with only a few hundreds of end-users and a light database workload consisting of 10 writes per second and 50 reads per second. However, if the game/blog becomes successful in the market, it may instantly grow and used by millions of end-users and expect tens or even hundreds of thousands of writes and reads per second. The application may also expect to create terabytes (TB) of data write per day based on the popularity quotient. Developing or implementing such applications using Amazon DynamoDB enables developers to start small capacity for a table as the requirements to continue to function well when expands its end-user base in size/volume without incurring application downtime. Above all, the applications should be in AWS.

Advantages of DynamoDB:

  • Scalable – User can store unlimited amount of data.
  • Distributed – DynamoDB scales horizontally by expanding a single table over multiple server
  • Cost Effective – One year free tier allows more than 40 million database operations/month and pricing is based on throughput (read/write per second) rather than storage
  • Automatic data replication – All data items are stored on Solid State Disks (SSDs) and  automatically replicated across multiple availability zones in a region
  • Secure – DynamoDB uses proven secured methods to authenticate users and prevent unauthorized data access

Disadvantages of DynamoDB:

  • Deployable only on AWS and cannot be installed on individual desktops/servers
  • Queries – Querying data is extremely limited
  • Table Joins – Joins are impossible
  • No Triggers
  • No foreign keys concept to refer to other table items
  • No server side scripts

 

Author

  • Siddaraju Devaiah works as Senior Technical Leader with Trigent Software. He has more than 12 years of experience in building rich, scalable and user friendly web based software solutions as well as client-server solutions using C/C++, C#, .NET frame work, Windows Services, Windows Power Shell Scripts, UNIX Internals (TCP/IP, IPC - Inter process communications and Socket Programming), HP-OpenView and IBM MQ Series. Siddaraju has extensive experience in various project development methodologies including agile development framework. Effective in working independently and collaboratively with multiple teams.