Step 3. Identify your data access patterns
Access patterns or query patterns define how the users and the system access the data to satisfy business needs.
Objective
-
Document the data access patterns.
Process
-
Database engineer and business analyst interview the end users to identify how data will be queried using the data-access patterns matrix template.
-
For new applications, they review user stories about activities and objectives. They document the use cases and analyze the access patterns that the use cases require.
-
For existing applications, they analyze query logs to find out how people are currently using the system and to identify the key access patterns.
-
-
Database engineer identifies the following properties of the access patterns:
-
Data size: Knowing how much data will be stored and requested at one time helps determine the most effective way to partition the data (see blog post
). -
Data shape: Instead of reshaping data when a query is processed (as an RDBMS system does), a NoSQL database organizes data so that its shape in the database corresponds with what will be queried. This is a key factor in increasing speed and scalability.
-
Data velocity: DynamoDB scales by increasing the number of physical partitions that are available to process queries, and by efficiently distributing data across those partitions. Knowing the peak query loads in advance might help determine how to partition data to best use I/O capacity.
-
-
Business user prioritizes the access or query patterns.
-
Priority queries usually are the most used or most relevant queries. It is also important to identify queries that require lower response latency.
-
Tools and resources
-
Access patterns matrix (see template)
-
Choosing the Right DynamoDB Partition Key
(AWS Database blog) -
NoSQL design for DynamoDB (DynamoDB documentation)
RACI
Business user | Business analyst | Solutions architect | Database engineer | Application developer | DevOps engineer |
---|---|---|---|---|---|
C |
A |
I |
R |
Outputs
-
Data-access patterns matrix
Example
Access pattern |
Priority |
Read or write |
Description |
Type (single item, multiple items, or all) |
Key attribute |
Filters |
Result ordering |
---|---|---|---|---|---|---|---|
Create user profile |
High |
Write |
User creates a new profile |
Single item |
Username |
N/A |
N/A |
Update user profile |
Medium |
Write |
User updates their profile |
Single item |
Username |
Username = current user |
N/A |