Christmas Special : Upto 40% OFF! + 2 free courses - SCHEDULE CALL
Amazon DynamoDB is like a super-smart storage system on AWS. It's a unique database that makes life easy for developers by handling all the tricky stuff behind the scenes. You can store and retrieve data without worrying about the technical nitty-gritty. DynamoDB is a critical player in AWS because it lets developers build robust and scalable apps without the headache of managing databases. It's like having a reliable assistant to handle your app's data, making the development journey smoother and more efficient.
Read on to learn more about the top DynamoDB questions and answers for the AWS interview.
A: Amazon DynamoDB is a fast and flexible NoSQL database service that applications use that requires consistent, single-digit millisecond latency at any scale. A fully managed NoSQL database supports both document and key-value store models.
DynamoDB is ideal for mobile, web, gaming, ad tech, and Internet of Things (IoT) applications. DynamoDB provides an effective solution for sharing session states across web servers, Amazon EC2 instances, or computing nodes.
A: Amazon DynamoDB offers a unique approach compared to traditional RDS databases. Unlike RDS, which supports standard RDBMS engines, DynamoDB is a fully managed, proprietary, and closed-source key-value store.
If you prefer a different NoSQL database, such as MongoDB, setting up an EC2 instance and installing MongoDB directly is necessary. DynamoDB is notable for its high availability and durability. It enables effortless scalability from managing a single item to handling billions, accommodating requests ranging from just one per second to tens of thousands per second.
A: DynamoDB automatically synchronizes each global secondary index with its base table. When an application writes or deletes items in a table, any global secondary indexes update asynchronously using an eventually consistent model. Though applications seldom write directly to an index, understand the following implications of how DynamoDB maintains these indexes:
When you create a global secondary index, you configure one or more index key attributes and their data types.
When you write an item to the base table, the data types for those attributes must match the index key schema's data types.
When you put or delete items in a table, the global secondary indexes on that table eventually update consistently
A: In Amazon DynamoDB, a hash and range key combination utilizes two attributes to create a robust index. The hash key, the first attribute, is essential for item lookup, while the range key, the second attribute, provides sorting within the hash.
Knowing the hash key is necessary for item retrieval, but the range key enables querying a specific range of values within the hash. For instance, in a message table, where the hash is the user's email, and the range is a timestamp, one can effortlessly retrieve all messages from a user newer than a given timestamp, showcasing the power of this indexing approach.
A: Developers working on a new app with DynamoDB have two main options for isolating databases and conducting unit tests. They can create unique DynamoDB tables with a CloudFormation stack per developer to maintain isolation or utilize a local DynamoDB.
AWS offers a Java mockup of DynamoDB for local development, available for download at http://mng.bz/27h5. It's crucial to note that this mockup is strictly intended for development purposes and should not be used in production. While it mirrors DynamoDB's functionality, it employs a different implementation, sharing only the same API.
A: In Amazon DynamoDB, defining a table is distinct from relational databases, as it doesn't require a static schema. While not all attributes need predefined definitions, the primary key must be specified. Using the AWS CLI, the aws Dynamodb create-table command mandates four options:
Table-name: The table's name (unchangeable).
Attribute-definitions: Names and types of primary key attributes (repeated as AttributeName=attr1, AttributeType=S, separated by spaces).
Key-schema: Names of attributes forming the primary key (unchangeable), containing HASH or HASH and RANGE types.
A: The DynamoDB Streams API provides the following operations:
ListStreams- Returns a list of stream descriptors for the current account and endpoint, or you can request only the stream descriptors for a particular table name.
DescribeStream- Returns information about a stream, such as its ARN, and where your application can begin to read the first few stream records. The output includes a list of shards associated with the stream, including the shard IDs.
GetShardIterator- Returns a shard iterator, which describes a location within a shard, to retrieve the records from the stream. You can request that the iterator provide access to the oldest, newest, or a particular point in the stream.
GetRecord-s Retrieves one or more stream records by using a given shard iterator. Provides the shared iterator returned from a GetShardIterator request.
A: Control plane operations let you create and manage DynamoDB tables and work with indexes, streams, and other objects dependent on tables.
CreateTable- Creates a new table. You can create one or more secondary indexes and enable DynamoDB Streams for the table.
DescribeTable- Returns information about a table, such as its primary key schema, throughput settings, and index information.
ListTables- Returns the names of all of the tables in a list.
UpdateTable- Modify the settings of a table or its indexes, creates or remove new indexes on a table, or modified settings for a table in DynamoDB Streams.
DeleteTable- Removes a table and its dependent objects from DynamoDB.
A: Every application has different requirements for reading and writing from a database. When you determine the initial throughput settings for a DynamoDB table, consider the following attributes:
Item sizes- Some items are small enough that they can be read or written by using a single capacity unit. Larger items require multiple capacity units. By estimating the sizes of the items that will be in your table, you can configure accurate settings for your table's provisioned throughput.
Expected read and write request rates- In addition to item size, estimate the number of reads and writes to perform per second.
Read consistency requirements- Read capacity units are based on strongly consistent read operations, which consume twice as many database resources as eventually consistent reads. Determine whether your application requires strongly consistent reads or whether it can relax this requirement and eventually perform consistent reads instead.
A: Strings are Unicode with UTF-8 binary encoding. The length of a string must be greater than zero, and it is constrained by the maximum DynamoDB item size limit of 400 KB. If a primary key attribute is a string type, the following additional constraints apply:
For a simple primary key, the maximum length of the first attribute value (partition key) is 2,048 bytes.
The maximum length of the second attribute value (sort key) for a composite primary key is 1,024 bytes.
DynamoDB collates and compares strings using the bytes of the underlying UTF-8 string encoding. For instance, "a" (0x61) is greater than "A" (0x41).
You can use the string data type to represent a date or a timestamp. One way to do this is to use ISO 8601 strings as follows:
2018-04-19T12:34:56Z
2018-02-31T10:22:18Z
2017-05-08T12:22:46Z
A: Amazon DynamoDB streamlines the database management process by eliminating concerns about installation, updates, servers, storage, and backups. Unlike downloadable software, DynamoDB is a NoSQL database offered as a service, sparing users from installation tasks like those required for MySQL or MongoDB.
AWS operates a server fleet for DynamoDB, handling the OS and security matters. Users, on the other hand, manage security permissions through IAM. DynamoDB ensures data durability by replicating it across multiple servers and data centers, eliminating the need for separate backups. This approach simplifies database administration significantly.
A: When you create a table, you must configure both the table name and the primary key. The primary key uniquely identifies each item in the table so that no two items have the same key. DynamoDB supports two different kinds of primary keys: a partition key and a sort key.
A partition key is a simple primary key composed of only a partition key attribute.
An item's partition key is also known as its hash attribute. The term hash attribute derives from DynamoDB's internal hash function, which evenly distributes data items across partitions based on their partition key values. DynamoDB uses the partition key's value as input to an internal hash function.
The sort key of an item is also known as its range attribute. The term range attribute derives from how DynamoDB stores items with the same partition key physically close together, in sorted order, by the sort key value.
A: The naming rules for DynamoDB tables are as follows:
All names must be encoded using UTF-8 and be case-sensitive.
Table names must be between 3 and 255 characters long and can contain only the following characters:
a–z
A–Z
0–9
_ (underscore)
– (dash)
. (period)
Attribute names must be between 1 and 255 characters long.
Each item in the table has a unique identifier, or primary key, that distinguishes it from all others in the table. In a People table, the primary key consists of one attribute, PersonID.
Besides the primary key, the People table is schema-less, meaning you are not required to define the attributes or their data types beforehand. Each item can have its distinct attributes.
Most attributes are scalar, meaning they can have only one value. Strings and numbers are common scalars.
A: If your application performs reads or writes faster than your table can support, DynamoDB begins to throttle those requests. When DynamoDB throttles a read or write, it returns a ProvisionedThroughputExceededException to the caller. The application can then take appropriate action, such as waiting for a short interval before retrying the request.
The AWS SDKs provide built-in support for retrying throttled requests; you do not need to write this logic yourself. The DynamoDB console displays CloudWatch metrics for your tables so that you can monitor throttled read and write requests. If you encounter excessive throttling, consider increasing your table's provisioned throughput settings.
In some cases, DynamoDB uses burst capacity to accommodate reads or writes greater than your table's throughput settings. With burst capacity, unexpected read or write requests can succeed where they otherwise would be throttled. Burst capacity is available on a best-effort basis, and DynamoDB does not verify that it is always available.
A: A secondary index is a data structure containing a subset of table attributes. The index uses an alternate key to support query operations and make queries against the primary key. You can retrieve data from the index using a Query. A table can have multiple secondary indexes, giving your applications access to many Query patterns.
You can create one or more secondary indexes on a table. DynamoDB does not require indexes, but they give your applications more flexibility when querying your data. After you create a secondary index on a table, you can read or scan data from the index in much the same way as you do from the table.
DynamoDB supports the following kinds of indexes:
Global secondary index A global secondary index has a partition key and sort key that can be different from those on the table.
Local secondary index A local secondary index has the same partition key as the table but a different sort key
A: Global secondary indexes eventually support consistent reads, each consumings one-half of a read capacity unit. For example, a single global secondary index query can retrieve up to 8 KB (2 × 4 KB) per read capacity unit.
For global secondary index queries, DynamoDB calculates the provisioned read activity in the same way it does for queries against tables, except that the calculation is based on the size of the index entries instead of the item in the base table. The number of read capacity units is the sum of all projected attribute sizes across all returned items; the result is then rounded up to the next 4-KB boundary.
The maximum size of the results returned by a Query operation is 1 MB; this includes the sizes of all attribute names and values across all returned items.
A: Throughout the backfill phase of the global secondary index creation, DynamoDB examines each item in the table to determine whether it is eligible for inclusion in the index because non eligible items cause index key violations. In these cases, the items remain in the table, but the index will not have a corresponding entry
An index key violation occurs if:
A data type mismatch exists between an attribute value and the index key schema data type. For example, if one of the items in the GameScores table had a TopScore value of type "string," and you add a global secondary index with a number-type partition key of TopScore, the item from the table would violate the index key.
An attribute value from the table exceeds the maximum length for an index key attribute. The maximum length of a partition key is 2,048 bytes, and the maximum length of a sort key is 1,024 bytes. If any of the corresponding attribute values in the table exceed these limits, the item from the table violates the index key.
If an index key violation occurs, the backfill phase continues without interruption; however, any violating items are not included in the index. After completing the backfill phase, all writes to items that violate the new index's key schema will be rejected.
A: Amazon DynamoDB automatic scaling actively manages throughput capacity for tables and global secondary indexes. With automatic scaling, you can define a range (upper and lower limits) for read and write capacity units and define a target utilization percentage within that range. DynamoDB automatic scaling seeks to maintain your target utilization even as your application workload increases or decreases.
With DynamoDB automatic scaling, a table or a global secondary index can increase its provisioned read and write capacity to handle sudden increases in traffic without throttling. When the workload decreases, DynamoDB automatic scaling can decrease the throughput so you do not pay for unused provisioned capacity.
If you use the AWS Management Console to create a table or a global secondary index, DynamoDB automatic scaling is enabled by default. You can manage automatic scaling settings anytime using the console, the AWS CLI, or AWS SDKs
A: Before you enable encryption at rest on a DynamoDB table, consider the following:
When you enable encryption for a table, all the data stored in that table is encrypted. You cannot encrypt only a subset of items in a table.
DynamoDB uses a service default key to encrypt all of your tables. If this key does not exist, it is created for you. Remember, you cannot disable service default keys.
Encryption at rest encrypts data only while it is static (at rest) on a persistent storage media. If data security is a concern for data in transit or data in use, you must take the following additional measures:
Data in transit: Protect your data while it is actively moving over a public or private network by encrypting sensitive data on the client side or by using encrypted connections, such as HTTPS, Secure Socket Layer (SSL), Transport Layer Security (TLS), and File Transfer Protocol Secure (FTPS).
Data in use: Protect your data before sending it to DynamoDB by using client-side encryption.
On-demand backup and restore: You can use on-demand backup and restore with encrypted tables and create a backup of an encrypted table. The table that is restored with this backup has encryption enabled.
A: Amazon DynamoDB and Amazon RDS differ across various aspects:
Table Creation:
DynamoDB: Management Console, SDK, or CLI (aws dynamodb create-table).
RDS: SQL CREATE TABLE statement.
Data Manipulation:
DynamoDB: SDK for inserting, updating, or deleting data.
RDS: SQL INSERT, UPDATE, or DELETE statements.
Querying Data:
DynamoDB: SDK for primary key queries; secondary index or table scan for non-key attributes.
RDS: SQL SELECT statement.
Increasing Storage:
DynamoDB: Grows dynamically with items.
RDS: Requires provisioning more storage.
Increasing Performance:
DynamoDB: Horizontal scaling by increasing capacity.
RDS: Vertical scaling by increasing instance size or horizontal scaling with read replicas (limited).
Installing Database:
DynamoDB: Available only as a service, not for download.
RDS: Download and install MySQL, Oracle Database, Microsoft SQL Server, or PostgreSQL.
Expertise Required:
DynamoDB: Search for special DynamoDB skills.
RDS: Search for general SQL or specialized skills based on the database engine.
A: In Amazon DynamoDB, a secondary index is a projection of the original table, automatically maintained by the service. It allows querying similarly to the primary key index. Think of a global secondary index as a read-only table that DynamoDB updates automatically whenever changes occur in the parent table, albeit asynchronously (eventually consistent).
While secondary indexes enhance querying flexibility, they entail additional costs, requiring storage equivalent to the original table and increased write-capacity units to accommodate updates triggered by table writes. Thus, provisioning adequate resources is crucial for efficient secondary index usage.
A: DynamoDB Streams in Amazon DynamoDB enables real-time retrieval of changes to a table, offering all write operations (create, update, delete) for table items. The order is consistent within a hash key. DynamoDB Streams proves advantageous in several scenarios:
Database Polling: DynamoDB Streams provides a more elegant solution if your application frequently polls for changes.
Cache Population: For populating a cache with changes made to a table, DynamoDB Streams proves to be a helpful tool.
A: Utilizing Node.js/JavaScript, the nodetodo application is designed for local terminal use, leveraging DynamoDB as its database. nodetodo provides the following functionalities:
User Management:
Creation and deletion of users.
Task Management:
Creation and deletion of tasks.
Marking tasks as done.
List Retrieval:
Retrieving a list of all tasks with various filters.
Additional Features:
Support for multiple users.
Tracking tasks with or without a due date.
Assigning tasks to categories to help users organize.
nodetodo is accessed directly through the terminal, offering a convenient and efficient way to manage tasks and user-related activities.
A: To maintain isolated databases and support unit testing during app development with DynamoDB, developers have two main options. They can create a distinct set of DynamoDB tables using a CloudFormation stack per developer, ensuring separation, or opt for DynamoDB Local.
DynamoDB Local is a local version of DynamoDB that can be used for development purposes. It eliminates the need for separate CloudFormation stacks, allowing each developer to have an isolated database. AWS provides a Java mockup of DynamoDB for download at http://mng.bz/27h5, emphasizing that it's strictly for development and should not be used in production. While it mirrors DynamoDB's functionality, it employs a different implementation, sharing only the same API. Caution is advised to prevent unintended consequences in a production environment.
AWS Solution Architect Training and Certification
Discover the magic of DynamoDB with JanBask Training's AWS courses, where you'll gain hands-on expertise, making your journey into cloud computing seamless and successful. Our courses ensure you understand DynamoDB and harness its full potential, empowering you to build innovative and scalable applications effortlessly. Join JanBask Training to unlock the power of DynamoDB and elevate your AWS skills!
Cyber Security
QA
Salesforce
Business Analyst
MS SQL Server
Data Science
DevOps
Hadoop
Python
Artificial Intelligence
Machine Learning
Tableau
Download Syllabus
Get Complete Course Syllabus
Enroll For Demo Class
It will take less than a minute
Tutorials
Interviews
You must be logged in to post a comment