mongodb

Comparing DynamoDB and Cosmos DB cloud database services to ObjectRocket for MongoDB

By September 4, 2018 August 18th, 2022 No Comments

Cloud databases are becoming more popular and more powerful.

Note that the term “cloud database” may mean different things to different people. Some people define “cloud database” as any database running on a cloud service. Others define it as any database that runs outside their data center infrastructure. In this post, we’re defining cloud database as the former and not the latter.

Comparing Database Solutions

Comparing different database solutions is like comparing apples to oranges. There is so much variation in how companies sell database services today, it’s tough to understand the available options. For example, let’s look at two popular NoSQL cloud database options and compare them to ObjectRocket for MongoDB.

  • AWS DynamoDB
    Proprietary flexible, NoSQL database service built by Amazon and offered as part of the Amazon Web Services portfolio
  • Azure Cosmos DB
    Proprietary NoSQL database service built by Microsoft and offered as part of the Azure Cloud portfolio
  • ObjectRocket for MongoDB
    Comprehensive Database-as-a-Service (DBaaS) offering using the open source NoSQL database, MongoDB

Let’s look at the main focus for each type of database.

AWS DynamoDB Azure Cosmos DB ObjectRocket for MongoDB
Summary: A flexible, NoSQL database service that supports document and key-value store models for all applications Summary: Offers multiple NoSQL choices including key-value, graph, column-family, and document data in one service Summary: Comprehensive service that manages MongoDB, a NoSQL document database that stores data in JSON-like documents that can vary in structure, offering a dynamic, flexible schema
  • Consistent, single-digit millisecond latency at any scale
  • Fully managed cloud database through AWS
  • Automatic scaling of throughput capacity
  • Built with global distribution and horizontal scaling at its core
  • Fully managed cloud database through Azure
  • Elastically scale throughput and storage worldwide – pay only for what you need
  • Multiple defined consistency choices
  • Guaranteed low latency
  • Industry-leading, enterprise-grade SLA
  • Designed with developer productivity, continuous availability, geo-distribution, and scalability in mind
  • Fully managed database on Rackspace ServiceNet, AWS Direct Connect, and Azure Cloud
  • Includes out-of-the-box replication and auto-sharding
  • Supports document store models with high flexibility
  • Fast query access through the MongoDB query language
  • Industry-leading, enterprise-grade SLA
  • Proactively fully managed

 

Which Database Solution Is the Best Fit for Your Organization?

Ask yourself questions like the ones below to help you determine which solution(s) might suit your needs..

AWS Dynamo DB

  • Do you have time to do some monitoring?
  • Are you willing and able to troubleshoot issues?
  • Do you have a simple use case supporting key-value workloads with little need for future flexibility?

Azure Cosmos DB

  • Do you have simple use cases with limited need for deeper document store needs?
  • Do you want auto-scaling and geographic distribution?
  • Do you value the potential of other value types beyond the document itself?
  • Are you willing to accept some immaturity in functionality?

ObjectRocket for MongoDB

  • Do you want a fully managed service for MongoDB that is always available and monitored by a team of experts?
  • Do you want coverage for a wide range of use cases with development and deployment flexibility?
  • Do you need access to MongoDB experts for performance optimization, troubleshooting, best-practice advice, etc.?
  • Do you have more complex use cases?
    Is your development team and your code base invested in MongoDB?

If you answered “yes” to the majority of questions under a solution, continue exploring that option.

Which Solution Makes the Best Use of Hosting in the Cloud?

What is the primary strategic benefit of hosting your data in the cloud? Cloud hosting should deliver flexibility and agility for your application, not vendor lock-in. With that in mind, note that one of the biggest negatives that comes with both DynamoDB and Cosmos DB is anchoring your app data to a single cloud provider, limiting your future flexibility.

Diving Deeper: Other Considerations

What else should you be thinking about when choosing a cloud database solution? It can get pretty complex, pretty quickly. Don’t forget to take a look at factors like ease of setup, scalability, cost structure, security, support, and more. Factor in the degree to which you’ll be able to reduce your employee headcount and/or man-hours by outsourcing your database management to someone else.

 

AWS DynamoDB Azure Cosmos DB ObjectRocket for MongoDB
Setup
  • Super easy because it is AWS
  • Go to console and setup database with wizard, programmatically via the API
  • Easy to scale out replication, but must set up yourself
  • Easy to get started via the Azure portal, via the CLI, using PowerShell, or programmatically via the API
  • Easy to scale out replication, but must do it yourself
  • Super easy with ObjectRocket control panel or API and engineering support
  • Automatic replication and high availability
Scalability Auto-scaling possible with some setup Built around auto-scaling behind the scenes Auto-scales horizontally; contact support for vertical scaling
Data Model
  • Key value with JSON support
  • Up to 400kb record size
  • Limited data type support (only supports one numeric type and does not support dates)
  • Data validation is pushed back into application code
  • Data is eventually consistent by default. Users can configure to be strongly consistent but will increase cost and adds latency, reducing performance
  • Document, Graph DBMS, Key-value, and Wide Column store
  • Loses the benefits of specialization when it tries to cover everything
  • All properties are auto-indexed by default
  • Schemaless design
  • Document store
  • JSON-like document
  • Up to 16MB record size
  • Supports highly flexible data types
  • Can handle data validation within database
  • Data strongly consistent by default – can be relaxed if necessary
Programming
  • DynamoDB library can be unintuitive
  • Only supports asynchronous programming
  • Complex/complicated commands to do simple tasks
  • Outdated/confusing documentation
  • Multiple APIs
  • Compatibility with MongoDB API only 100% on CRUD
  • Beyond CRUD (sharding, aggregation, etc) things are different requiring application changes
  • Limited/unintuitive documentation
  • Lack of maturity makes some work challenging
  • Tools missing if not running Windows (not Linux friendly)
  • MongoDB library is designed for developer efficiency
  • Open source community with good documentation
  • Supports both synchronous and asynchronous programming
  • Backed by ObjectRocket MongoDB engineering experts for optimization
Querying
  • Key value querying can only use a query to get data about an item if you know what the item is
  • Slow/inefficient scanning performance impact
Some limitations but likely getting better
  • Simple and flexible query capabilities
  • Single keys, ranges, faceted search, graph traversals, and geospatial
  • Complex aggregations
Indexing
  • Limited indexing capabilities
  • Indexes sized and provisioned separately from data
  • Hash or hash-range indexes only
  • Some indexes must be defined when table is created
Everything is indexed by default.
  • Same indexing capabilities as Mongo
  • Secondary indexes on any field
  • Consistency with data
  • Flexible indexing strategies
Cost Structure Scales with read/write capacity requires design up front to manage appropriately Pricing is based on the storage used and the data throughput Scales with total storage size of instances
Security
  • Access granted with IAM through access/secret key pair or roles from the machine the code is running on
  • Encryption at rest available at the table level each table must be enabled at time of creation
  • No native support for encryption for data in flight users must create their own SSL certs via DynamoDB SDK
  • Uses hash-based message authentication for authorization
  • SSL/TLS enforcement for client to service interactions
  • Encryption at rest for all data stored in Cosmos DB
  • Instances already pre-configured for basic authorization
  • Access Control Lists in place to limit IPs that can communicate with instance
  • SSL Encryption connection strings
  • Encryption at rest available instance-wide
Backups
  • No standard backup service
  • Customers can set up their own backup service on the side
  • Automatic taken every four hours behind the scenes
  • Last two backups are stored at all times
  • No point-in-time backups
  • Daily backups with 14 days of retention
  • Point-in-time backups possible
Support
  • Basic support via ticket
  • Community Support Forum
  • No deep database expertise or DBA access
  • “Enterprise support” available for an upcharge ($15K/month)
  • No real MongoDB support
  • Basic support via ticket
  • Community Support Forum
  • No deep database expertise or DBA access
  • No apparent “Enterprise Support”
  • 24x7x365 support from database experts
  • Access to deep MongoDB DBA expertise at no additional charge
  • Enterprise support as part of the current pricing
Latest Version/Features
  • No version changes
  • Latest MongoDB version features usually not supported (making it difficult to determine future support)
  • No version changes
  • Latest MongoDB version features usually not supported (making it difficult to determine future support)
Supports the latest “production-worthy” versions of community MongoDB with support for native MongoDB features
Monitoring
  • No proactive monitoring of database performance
  • AWS Cloudwatch provides limited database metrics
Cloud service monitoring (does not monitor database performance)
  • MongoDB instances are monitored 24x7x365 by a team of MongoDB experts
  • Monitoring dashboard available
  • Integration with third-party tools available (New Relic)

 

Which Solution Should You Choose?

Here it is in a nutshell:

  • If you’re already using the AWS stack and you need a NoSQL database, DynamoDB is worth checking out.
  • If you have simple use cases and know you’ll be sticking with Azure, Cosmos DB might be an adequate choice for now.
  • If you need scalability and caching for real-time analytics and aren’t sure what the future holds for the types of data you’ll need to store, MongoDB is a great choice.

But just because it fits in a proverbial nutshell doesn’t mean making the choice is simple and easy. As noted previously, there are many complex considerations to take into account, and not everyone is a database expert steeped in all the strengths and weaknesses of these solutions. The good news is you don’t have to figure it out alone! Contact our database experts and we’ll talk about which database services may be right for your business.