MemberJanuary 21, 2023 at 2:25 am
“A developer is planning to deploy a high-performance online trading application which requires a database that can scale globally and can handle frequent schema changes. The database should also support flexible schemas that enable faster and more iterative development.
Which is the MOST suitable database service that you should use to achieve this requirement?”
Not sure I understand how DynamoDB is the answer. It’s misleading at the least. DynamoDB tables are schemaless, see quote from AWS docs below-
“Tables are the fundamental data structures in relational databases and in Amazon DynamoDB. A relational database management system (RDBMS) requires you to define the table’s schema when you create it. In contrast, DynamoDB tables are schemaless—other than the primary key, you do not need to define any extra attributes or data types when you create a table.”
AdministratorJanuary 21, 2023 at 4:08 am
The term “schemaless” does not mean having no schema at all. It means that a database has less rigid schema which is often required in a relational database. Schemaless database can also refer to a database with a flexible schema.
In fact, the above statement is supported on the official Amazon DynamoDB documentation. Have a look:
- Create data schemas and tables in DynamoDB using sample data model templates and datasets available in NoSQL Workbench.
- DynamoDB supports both key-value and document data models. This enables DynamoDB to have a flexible schema, so each row can have any number of columns at any point in time. This allows you to easily adapt the tables as your business requirements change, without having to redefine the table schema as you would in relational databases
In database terminology, a schema is basically the table structure that includes the logical constraints and relationships to other tables. A schema is required in a relational database that has tightly-coupled relationships among individual tables. It is “rigid” in a sense that a change in one table column can adversely affect the other tables so it usually takes a lot of time and effort to alter the structure of the tables (e.g adding or deleting columns).
In Amazon DynamoDB, the database is actually composed of a single table only so there’s absolutely no way that it will impact another table. You can directly make any changes to any of the table’s columns/attributes and you won’t be hindered by any constraints or rules. Adding new columns/attributes is a straightforward process, as well as deleting certain columns/attributes. This is the flexibility being mentioned here.
The scenario also says:
“…requires a database that can scale globally and can handle frequent schema changes”
One of the key features of the DynamoDB is its ability to scale globally and store millions of records without any manual overhead in your part. This is in contrast with a relational database which entails additional configuration to ensure that it can scale based on your requirement. But even so, it is still not on par with the innate global scalability of Amazon DynamoDB.
I do understand that you may feel that the question seems misleading but in the actual AWS exam, you will rarely see questions that explicitly show obvious key phrases like “NoSQL database” when referring to DynamoDB. This has been the style of the AWS tests based on our actual exam experience.
Let us know if you need further assistance. The Tutorials Dojo team is dedicated to help you pass your AWS exam on your first try!
Jon Bonso @ Tutorials Dojo
Log in to reply.