Dynamodb Cons

Dynamodb

I've been using DynamoDB on various projects for a little over 2 years (as of June 2019). It's a fantastic system and one that should be considered for a lot of use cases.

Amazon DynamoDB Pros and Cons. Amazon DynamoDB Pros. Expert Solution Principal at a tech services company with 10,001+ employees. The possibility of managing documents is the most valuable aspect of the solution. I like the fact that I don't have to define the fields. The pros and cons of a database engine for your business will likely depend upon your dev team and the applications you use. But, if you’re already using the AWS stack and need a NoSQL database, then you should first review what DynamoDB has to offer and how well it works for your use case. The biggest question is whether you want to set up.

However, that's not to say it's perfect. I'll attempt to cover some of the pros and cons of DynamoDB and reach some conclussions about its stronger use-cases and when you shouldn't use it. If you disagree, please feel free to @me on Twitter using the link at the bottom.

Pro: It's simple to setup

It's stupid simple to setup.

  • SAM:

Con: Weak querying model

Global and Secondary Indexes can only get you so far. If you know your access patterns, this can be managable. But if you don't, then it's difficult, nigh impossible, to build an ad-hoc querying system like you can build with traditional RDBMS or fuller-featured NoSQL systems like MongoDB.

Pro: Non-hourly billing model

Many of the systems that I've built in the past were internal enterprise BPM-style application. Many had very low access requirements. They were not serving millions of users, they were serving dozens. With these environments, having a pricing model like DynamoDB's can drastically reduce hosting costs for applications.

Con: Harder to predict costs

However, since you're paying per usage, and it's often hard to predict when that usage might spike, it's not unheard of to get caught with unexpected costs. While AWS offers a lot under their free-tier pricing, minor mistakes can blow through that.

Earlier this month I was testing a process that used SQS messaging. However, a bug in my lambda handler went unnoticed, causing messages to be requeued repeatedly and blowing right through that first one million free messages I was getting.

During development phases it's not uncommon to have similar situations and with DynamoDB that could result in an unexpected bill, whereas with an RDS or Aurora instance, you'd see the same cost each month regardless. To some, being consistent is better than being cheap.

Pro: Streams

DynamoDB supports streams, allowing other systems to react to data changes. Perhaps you want to render a materiazlied view, or update an aggregate.

This type of functionality is often handled with database triggers, or in your application layer. Both propose some significant challenges. Having DynamoDB Streams built-in to the system is very useful.

Con: Lack of server-side updates

Cons

Sometimes you have to make changes against a bulk set of records. Perhaps there was a change to your data model, like going from a .fullname field to .first_name and .last_name. To do this, you must update each record individually.

This may not seem too bad at first, but after a large enough set of records it becomes an untenable solution. Ultimately, you'll probably find it better to do data migrations on-demand in your API, as records are being read out of the system.

Pro: Time-to-Live

There are a lot of situations where having a record with a Time-to-live (TTL) can be very handy.

This is a built-in feature of the system and can replace a lot of use-cases that would normally require something like Redis.

Con: Provisioned throughput and batch jobs don't work well together.

Until recently, you had to tell DynamoDB what your read/write throughput would be, and this is how your DB was sized and priced. However, if you are running any recurring batch processes that do a large amount of read/writes in a short amount of time, your normal throughput levels will likely lead to write errors or throttled reads, neither of which are good.

You could work around this by scaling up your throughput before any known batch processes occur, and then scaling back down once done to reduce costs, but that assumes you'll always know when your batch processes will start.

On-demand pricing of DynamoDB definitely helps resolve this, if you are ok with that pricing model.

Conclussions

DynamoDB is a very simple, but powerful, database system. There aren't a lot of bells and whistles, but there don't need to be.

Dynamodb Consumed Capacity

DynamoDB will work well in a lot of various scenarios but you need to be aware of the downsides. Primarily, that it doesn't allow for traditional SQL queries and access patterns, which means for things like free-text search or ad-hoc queries, you'll likely need to export data to a different system. Also, you need to model your data differently than you're used to with an RDBMS. One of the most common problems I run across is systems that try to fit a third normal form schema into DynamoDB and it will fail horribly every time. If you're coming from another NoSQL system, like Mongo, you're likely to be more familiar with the modeling changes.

Finally, I recommend you watch this video from re:Invent, it will really open up how DynamoDB is best leveraged.

Building a web application is always exciting for a newbie software engineer. As a web developer, you might have started with building the frontend then backend and then you add features one by one. You choose some database for your application to store the information. Now your web application starts growing and you start getting the users for that. 100, 1000, 10000 and so on…..but what if the users will keep growing? Will it be possible that your current database can handle millions of users? If not then it can create a problem for you. You will have to migrate to another more scalable database. This is one of the reasons a software engineer has to think and consider all the case scenarios before they start building something.

A lot of web applications face scaling issues due to the growth of users along with the increasing complexity of data traffic. Business comes the need to process data faster and here comes the part of DynamoDB. DynamoDB is a NoSQL database of Amazon Web Services that supports data structures and key-valued cloud services. It is a fast, flexible, cost-effective, highly-scalable, fault-tolerant and secure database service. You can scale from 10 to 1000 transactions per second (tps) in a couple of seconds.

Now the question is what are some major benefits of using DynamoDB? How to decide that this is the right database for your application. What are some of its real-life use cases and what is the downside of using this database? Let’s discuss everything in detail.

Benefits of using DynamoDB

Let’s discuss first why DynamoDB is useful for your application.


1. Performance and Scalability: People who are working in software development or IT industry know that when there is a load on a database or when more traffic then scaling databases become difficult and risky. DynamoDB has the ability to auto-scale by tracking how close your usage is to the upper bounds. This feature helps your system to adjust according to the amount of data traffic and it improves the performance of the application and it reduces cost as well.

2. Access to Control Rules: In the software industry when data gets more specific and personal it becomes more important to have specific access control. You need to easily apply for access control to the right people without creating bottlenecks in other people’s workflow. DynamoDB has the feature of fine-grained access control and that allows the table owner to gain a higher level of control over the data in the table.

3. Persistence of Event Stream Data: DynamoDB stream has this feature that allows you to receive and update item-level data before and after changes in that data. It provides a time-ordered sequence of changes made to the data within the last 24 hours. You can access a stream with a simple API call and make changes to a full-text search data store such as Elasticsearch, push incremental backups to Amazon S3, or maintain an up-to-date read-cache.

4. Time To Live: DynamoDB allows developers to set a timestamp for expired data in your table. Once the timestamp expires, the data that is marked to expire is then deleted from the table. This functionality helps developers to keep track of expired data and delete it automatically instead of doing it manually. TTL also helps in reducing storage and cutting the costs of manual data deletion work.

5. Storage of Inconsistent Schema Items: If you need to store your data object in inconsistent schemas then DynamoDB can manage that. DynamoDB is a NoSQL data model and this the reason that it handles less structured data more efficiently than a relational data model, which is why it’s easier to address query volumes and offers high performance queries for item storage in inconsistent schemas.

6. Automatic Data Management: For security and safety purposes, DynamoDB creates a backup of your data which allows owners to have data saved on the cloud.

Real-Life Use Cases of DynamoDB

A lot of developers get confused if they should use DynamoDB or not for their application. If it is fit for their project or not. We are going to mention some examples where companies are using this database to help manage the larger influx and of data at high speeds.

1. Duolingo: Duolingo is an online learning site that uses the DynamoDB database to store and handle approximate 31 billion data objects on their web server. This website has around 18 million monthly users who perform around six billion exercises using the Duolingo app. Their application has 24,000 read units per second and 3,300 write units per second and DynamoDB is the only database that has been able to meet their needs, both in terms of data storage and DevOps.

2. Hess Corporation: This corporation is a well-known energy company. The company works on the exploration and production of natural gas and crude oil. This corporation also uses DynamoDB and shifted its E&P (Energy Exploration and Production) project onto AWS. The operational infrastructure of DynamoDB helps the company to handle data effectively and get optimized and well-managed results also it helped the company in separating potential buyers’ data from business systems.

3. GE Healthcare: GE Healthcare is known for the medical imaging equipment that helps in diagnostics through radiopharmaceuticals and imaging agents. This company also uses DynamoDB to increase customer value, enabled by cloud access, storage, and computation. The GE Health Cloud provides a single portal for healthcare professionals all over the US to process and share images of patient cases.

4. Docomo: Docomo is a popular mobile phone operating company. The company is known for its voice recognition services, which need the best performance and capacity. This is the reason Docomo turned towards DynamoDB which has helped the company scale towards better performance. The company also rely heavily on Amazon DynamoDB to store their marketing data of different types. The data includes user events, user profiles, visited links and clicks. Sometimes, this data also includes ad targeting, attribution, and real-time bidding.

Conclusion

DynamoDB is a reliable system that helps small, medium and large enterprises scale their applications. You can use it for mobile and web apps. It provides the option to backup, restore and secure data. You can build event-driven architecture and user-friendly applications with DynamoDB.

We have discussed the major benefits of using DynamoDB but every database has some pros and cons and the same for the DynamoDB. DynamoDB is a NoSQL database. That means you can not do joining or complex queries on DynamoDB. Also, No ACID as it’s not an RDBMS. DynamoDB’s not ideal for storing events as well. Understand your requirements very well and then choose the database according to your needs.

Dynamodb

Dynamodb Consistent Read

Recommended Posts:

Dynamodb Console

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to [email protected] See your article appearing on the GeeksforGeeks main page and help other Geeks.

Dynamodb Consistency Model

Please Improve this article if you find anything incorrect by clicking on the 'Improve Article' button below.

Dynamodb Consistency