If you are an application developer, you might have some experience using a relational database management system (RDBMS) and Structured Query Language (SQL). As you begin working with Amazon DynamoDB, you will encounter many similarities, but also many things that are different. This article describes common database tasks, comparing and contrasting SQL statements with their equivalent DynamoDB operations.
NoSQL is a term used to describe nonrelational database systems that are highly available, scalable, and optimized for high performance. Instead of the relational model, NoSQL databases (like DynamoDB) use alternate models for data management, such as key-value pairs or document storage.
It is common for web-based applications to have hundreds, thousands, or millions of concurrent users, with terabytes or more of new data generated per day. Databases for such applications must handle tens (or hundreds) of thousands of reads and writes per second.Today's applications have more demanding requirements than ever before. Amazon DynamoDB is well-suited for these kinds of workloads. As a developer, you can start small and gradually increase your utilization as your application becomes more popular. DynamoDB scales seamlessly to handle very large amounts of data and very large numbers of users.
The following list shows some high-level differences between an RDBMS and DynamoDB:
1.Optimal Workloads:
RDBMS consists of Ad hoc queries; data warehousing; OLAP (online analytical processing) whereas, DynamoDB can seamlessly handle Web-scale applications, including social networks, gaming, media sharing, and the Internet of Things (IoT).
2.Data Model:
The relational model requires a well-defined schema, where data is normalized into tables, rows, and columns. In addition, all of the relationships are defined among tables, columns, indexes, and other database elements. On the other hand, DynamoDB is schemaless. Every table must have a primary key to uniquely identify each data item, but there are no similar constraints on other non-key attributes. DynamoDB can manage structured or semistructured data, including JSON documents.
3.Data Access:
In RDBMS SQL is the standard for storing and retrieving data. Relational databases offer a rich set of tools for simplifying the development of database-driven applications, but all of these tools use SQL. In DynamoDB you can use the AWS Management Console or the AWS CLI to work with DynamoDB and perform ad hoc tasks. Applications can use the AWS software development kits (SDKs) to work with DynamoDB using object-based, document-centric, or low-level interfaces.
4.Performance:
Relational databases are optimized for storage, so performance generally depends on the disk subsystem. Developers and database administrators must optimize queries, indexes, and table structures in order to achieve peak performance. DynamoDB is optimized for computing, so performance is mainly a function of the underlying hardware and network latency. As a managed service, DynamoDB insulates you and your applications from these implementation details, so that you can focus on designing and building robust, high-performance applications.
5.Scalability:
RDBMS is easiest to scale up with faster hardware. It is also possible for database tables to span across multiple hosts in a distributed system, but this requires additional investment. Relational databases have maximum sizes for the number and size of files, which impose upper limits on scalability. DynamoDB is designed to scale out using distributed clusters of hardware. This design allows increased throughput without increased latency. Customers specify their throughput requirements, and DynamoDB allocates sufficient resources to meet those requirements. There are no upper limits on the number of items per table, nor the total size of that table.
Characteristics of Databases
Before your application can access a database, it must be authenticated to ensure that the application is allowed to use the database. It must be authorized so that the application can perform only the actions for which it has permissions.
The following diagram shows a client's interaction with a relational database and with Amazon DynamoDB.
The following list has more details about client interaction tasks:
1.Accessing the Database:
Most relational databases provide a command-line interface (CLI) so that you can enter ad hoc SQL statements and see the results immediately. In the case of DynamoDB mostly you write application code. You can also use the AWS Management Console or the AWS Command Line Interface (AWS CLI) to send ad hoc requests to DynamoDB and view the results.
2.Database Connection:
In RDBMS application program establishes and maintains a network connection with the database. When the application is finished, it terminates the connection. Whereas DynamoDB is a web service, and interactions with it are stateless. Applications do not need to maintain persistent network connections. Instead, interaction with DynamoDB occurs using HTTP(S) requests and responses.
3.Authentication:
In Relational databases, an application cannot connect to the database until it is authenticated. The RDBMS can perform the authentication itself, or it can offload this task to the host operating system or a directory service. Every request to DynamoDB must be accompanied by a cryptographic signature, which authenticates that particular request. The AWS SDKs provide all of the logic necessary for creating signatures and signing requests.
4.Authorization:
Applications in RDBMS can perform only the actions for which they have been authorized. Database administrators or application owners can use the SQL GRANT and REVOKE statements to control access to database objects (such as tables), data (such as rows within a table), or the ability to issue certain SQL statements. In DynamoDB, authorization is handled by AWS Identity and Access Management (IAM). You can write an IAM policy to grant permissions on a DynamoDB resource (such as a table), and then allow IAM users and roles to use that policy. IAM also features fine-grained access control for individual data items in DynamoDB tables.
5.Requesting Data:
In RDBMS the application issues a SQL statement for every database operation that it wants to perform. Upon receipt of the SQL statement, the RDBMS checks its syntax, creates a plan for performing the operation, and then executes the plan. The application sends HTTP(S) requests to DynamoDB. The requests contain the name of the DynamoDB operation to perform, along with parameters. DynamoDB executes the request immediately.
6.Responses:
The RDBMS returns the results from the SQL statement. If there is an error, the RDBMS returns an error status and message. DynamoDB returns an HTTP(S) response containing the results of the operation. If there is an error, DynamoDB returns an HTTP error status and messages.
Similar Reads
Difference between SQL and NoSQL Choosing between SQL (Structured Query Language) and NoSQL (Not Only SQL) databases is a critical decision for developers, data engineers, and organizations looking to handle large datasets effectively. Both database types have their strengths and weaknesses, and understanding the key differences ca
6 min read
DynamoDB - Data Types DynamoDB supports many different data types for attributes within a table. They can be categorized as follows: Scalar Types â A scalar type can represent exactly one value. The scalar types are number, string, binary, Boolean, and null.Document Types â A document type can represent a complex structu
6 min read
DynamoDB - Local Installation The DynamoDB setup only includes the access of your AWS account through which the DynamoDB GUI console can be accessed. However, a local installation can also be done for the same purpose. Creating AWS account: Visit the following website:- https://aws.amazon.com/dynamodb/Click on the "Get Started w
3 min read
DynamoDB - Using the Console The AWS management console for Amazon DynamoDB can be accessed from here. The AWS management console can be used for the following: Perform Table operations like create, update and delete a table from the database.To get additional storage and processing capability.To keep track of all the relevant
4 min read
Difference between NoSQL and NewSQL 1. NoSQL : The term NoSQL is categorizing databases as descriptive as " No-SQL ". NoSQL is a comprehensive category of databases that are developed to overcome the problems generated by SQL databases. They are referred to as schema less documents which store the data in documents, graph, key-value,
2 min read
MongoDB vs MySQL Both MongoDB and MySQL are popular database management systems (DBMS), but they are built for different purposes and have distinct features. MongoDB is a NoSQL database, designed for handling unstructured data with high scalability, while MySQL is a traditional relational database management system
5 min read