Table of Contents
Databases are key components for any infrastructure be it on-premise or cloud. General purpose of databases is to store large volumes of data in a structured way which is easy to store, access, and retrieve quickly. In addition, databases help to reduce data redundancies, prevent unrestricted access to data. Cloud based databases built to run on public and private clouds to organize, store, and manage data at a much larger scale. Cloud service providers like Amazon, Google, Azure and other providers give database as a service over cloud like other services.
Today we look more in detail about AWS DynamoDB which is a fully managed NoSQL database as service, its features, architecture and how to run it?
AWS DynamoDB: Overview
DynamoDB was inspired by the seminal Dynamo white paper written by a team of Amazon developers in the year 2007. Initially it was used internally by Amazon and was released way different from its original predecessor in 2012 for customers as a database as a service.
Amazon DynamoDB is cloud native NoSQL key value database and it does not run on premises or even in hybrid cloud, it runs only on Amazon web services (AWS) cloud. It scales as needed without any capex investment from customers on hardware. Additional capacity provisioning at the backend is also supported by AWS. It does not support ANSI structured query language (SQL) instead uses a proprietary API based on JavaScript Object Notation (JASON) which is invoked by AWS software developer kits (SDKs) for DynamoDB written in various languages C++, Go, Java, JavaScript, Microsoft .NET, Node.js, PHP, Python and Ruby).
DynamoDB is primarily a key value store as its data model has key-value pairs in Schemaless, very large, non-relational table of rows (records) and it does not support Relational database management (RDBMS) method to join tables via foreign keys. It supports document store data model using JavaScript object notification (JSON).
It is away from traditional databases and can be used for a wide variety of semi structured data driven applications such as Internet of Things (IoT), social apps, or massive multiplayer game applications.
DynamoDB uses hashing and b-trees. JSON is used as only transport format and not used as a storage format. Its storage format is proprietary which is not transparent to users. Data is exported through streaming technologies or bulk downloaded into .CSV files through ETL type tools like AWS glue.
Features of AWS DynamoDB
- DynamoDB scalability includes autoscaling and load balancing
- It is a key-value store database and data is indexed using primary key comprised of partition key and sort key
- DynamoDB tables span across availability zones and data can be distributed across multiple regions in database global tables to provider greater resiliency to support disaster situations
- DynamoDB data replicates across at least 3 different data centres so system operates and serve under failure situations also
- Allows creation of dynamic tables hence table can have any number of attributes which could be multi-valued
- Provides high throughput at very low latency and as datasets grow latencies remain in a stable state due to its distributed nature of data placement and request routing algorithms.
Use cases of AWS DynamoDB
- Advertising companies use DynamoDB as a key value store for storing various kinds of marketing data such as user profile stores in RTB and targeting, User events, click streams, and impressions data store, metadata stores for assets , Popular item caches
- Retail industry uses it for shopping carts, workflow engines, inventory tracking, customer profiling
- Media and entertainment industry uses it for media metadata stores, user data stores, Digital rights management data stores
- Gaming industry uses it for game states, player data stores, player session history, leadership boards