NoSQL is a term used to describe high-performance, non-relational databases. NoSQL databases utilize a variety of data models, including graphs, key-value pairs, and JSON documents. NoSQL databases are widely recognized for ease of development, scalable performance, high availability, and resilience. Below are several resources to help you get started using NoSQL databases.
Download the whitepaper Migration Best Practices - RDBMS to Amazon DynamoDB.
|Relational database||NoSQL database|
|Data model||The relational model normalizes data into tabular structures known as tables, which consist of rows and columns. A schema strictly defines the tables, columns, indexes, relationships between tables, and other database elements.||Non-relational (NoSQL) databases typically do not enforce a schema. A “hash key” is generally used to retrieve values, column sets, or semi-structured JSON, XML, or other documents containing related item attributes.|
|ACID properties||Traditional relational database management systems (RDBMS) support a set of properties defined by the acronym ACID: Atomicity, Consistency, Isolation, and Durability. Atomicity means “all or nothing” – a transaction executes completely or not at all. Consistency means once a transaction has been committed, the data must conform to the database schema. Isolation requires that concurrent transactions execute separately from one another. Durability is the ability to recover from an unexpected system failure or power outage to the last known state.||NoSQL databases often trade some ACID properties of traditional relational database management systems (RDBMS) for a more flexible data model that scales horizontally. These characteristics make NoSQL databases an excellent choice in situations where traditional RDBMS encounter architectural challenges to overcome some combination of performance bottlenecks, scalability, operational complexity, and increasing administration and support costs.|
|Performance||Performance is generally dependent on the disk subsystem. Optimization of queries, indexes, and table structure is required to achieve peak performance.||Performance is generally a function of the underlying hardware cluster size, network latency, and the calling application.|
|Scale||Easiest to scale “up” with faster hardware. Additional investments are required for relational tables to span a distributed system.||Designed to scale “out” using distributed clusters of low-cost hardware to increase throughput without increasing latency.|
|APIs||Requests to store and retrieve data are communicated using queries which conform to a structured query language (SQL). These queries are parsed and executed by relational database management systems (RDBMS).||Object-based APIs allow app developers to easily store and retrieve in-memory data structures. “Hash keys” let apps look up key-value pairs, column sets, or semi-structured documents containing serialized app objects and attributes.|
|Tools||SQL databases generally offer a rich set of tools for simplifying the development of database-driven applications.||NoSQL databases generally offer tools to manage clusters and scaling. Applications are the primary interface to the underlying data.|
Amazon Web Services (AWS) provides a number of NoSQL database software options for developers. You can operate your own non-relational data store in the cloud on Amazon EC2 and Amazon EBS, work with Amazon solution providers, or take advantage of fully managed non-relational services.
Amazon DynamoDB is a fully managed NoSQL database service that provides extremely fast and predictable performance with seamless scalability. Running your own NoSQL cloud databases on Amazon EC2 and Amazon EBS gives you full control over your database without the burden of provisioning and installing hardware.
In addition, AWS has partnered with MongoDB and Couchbase, both of whom provide support and training for customers running their products on Amazon EC2 and Amazon EBS.
Please visit our page on Running Databases at AWS if you are interested in learning about additional database options available on AWS.
Amazon DynamoDB is a fully managed NoSQL database service running in the AWS cloud that provides extremely fast and predictable performance with seamless scalability. DynamoDB is a fast and flexible NoSQL database service for applications that need consistent, single-digit millisecond latency at any scale. It is a fully managed database and supports both document and key-value data models. Its flexible data model and reliable performance make it a great fit for mobile, web, gaming, ad-tech, the Internet of things (IoT), and many other applications. Learn more about Amazon DynamoDB »
Developers may install NoSQL databases of their choice on Amazon EC2 and Amazon EBS. An Amazon EC2 instance can be used to run a NoSQL database which means developers avoid the friction of infrastructure provisioning while gaining access to a variety of standard NoSQL database engines.
Cassandra is an open source distributed database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. Consider EBS when running Cassandra workloads (learn how CrowdStrike ran dense, cheaper Cassandra clusters with EBS).For more about working with Cassandra and running Cassandra on AWS, visit the AWS Marketplace »
Couchbase develops and supports Couchbase Server, a high-performance distributed key-value store. Couchbase delivers support, services, and training for commercial-grade deployments of Couchbase Server on AWS. Learn more about working with Couchbase and running Couchbase Server on AWS »
MarkLogic Corporation develops MarkLogic Server (MarkLogic), an Enterprise NoSQL database platform that is fully scalable and provides ACID (Atomicity, Consistency, Isolation, and Durability) transactions for large datasets. For an overview of best practices and scaling, see the whitepaper MarkLogic on AWS »
MongoDB, Inc. develops and supports MongoDB, an open source, high performance document-oriented database. MongoDB Inc. delivers technical support, professional services, and training for commercial-grade deployments of MongoDB.
Use the AWS MongoDB Quick Start to deploy a multi-node MongoDB cluster in the AWS cloud, following AWS best practices, in approximately 15 minutes.
For an overview of MongoDB and its implementation on AWS, see the whitepaper MongoDB on AWS: Guidelines and Best Practices.
For more about working with MongoDB Inc. and running MongoDB on AWS, see the information in the AWS Partner Directory »
A graph database stores vertices and directed links called edges. Graphs can be built on relational (SQL) and non-relational (NoSQL) databases. Vertices and edges can each have properties associated with them. The diagram below depicts a simple graph of relationships between friends and their interests. To learn more about graph databases, read the AWS Activate blog post »
Titan is a popular graph database designed to efficiently store and traverse both small and large graphs up to hundreds of billions of vertices and edges. Titan enables scalability through a pluggable storage engine architecture.
The Amazon DynamoDB Storage Backend for Titan enables you to store Titan graphs of any size in fully-managed DynamoDB tables. With the DynamoDB storage backend plugin for Titan, you can offload Titan storage management to AWS. Titan’s pluggable architecture makes it easy to start using DynamoDB without changing your application.
Titan supports Tinkerpop, a collection of graph processing and analysis tools, including Gremlin and Blueprints. For more information, see the Working with Graph Databases section of our Documentation »
OrientDB supports schema-less, schema-full, and schema-mixed modes. It includes support for SQL and extends the language to support concepts such as trees and graphs. To get started using OrientDB, visit the AWS Marketplace »
GraphDB is a resource description framework (RDF) graph database that supports text mining, SPARQL queries, semantic annotation, and semantic search. To get started using GraphDB, visit the AWS Marketplace »
Amazon ElastiCache is a web service that makes it easy to deploy, operate, and scale an in-memory cache in the cloud. The service improves the performance of web applications by allowing you to retrieve information from fast, managed, in-memory caches, instead of relying entirely on slower disk-based databases.
Amazon ElastiCache automatically detects and replaces failed nodes, reducing the overhead associated with self-managed infrastructures and provides a resilient system that mitigates the risk of overloaded cloud databases, which slow website and application load times. Through integration with Amazon CloudWatch, Amazon ElastiCache provides enhanced visibility into key performance metrics associated with your Memcached or Redis nodes.
ElastiCache supports two open-source in-memory caching engines. For more information, see the Amazon ElastiCache detail page »
Memcached a widely adopted memory object caching system. ElastiCache is protocol compliant with Memcached, so popular tools that you use today with existing Memcached environments will work seamlessly with the service.
Redis is a popular open-source in-memory key-value store that supports data structures such as sorted sets and lists. ElastiCache supports Master/Slave replication and Multi-Availability Zone to achieve cross-AZ redundancy with Automatic Failover to a read replica. It also provides an enhanced version of the Redis engine for improved robustness and stability.