Design
Access-pattern data modeling
We list every read and write, then pick partition keys, sort keys and secondary indexes that answer each one with a Query or GetItem.
Amazon DynamoDB · AWS Partner · Los Angeles
Tables shaped around the questions your app asks, so every read is a key lookup.
DynamoDB is the AWS database that stores items by key and answers in single-digit milliseconds, with no servers for you to patch. It rewards careful design and punishes guesswork. Our team, led from Glendale, models your tables, moves data in from MongoDB or SQL, keeps the monthly bill sensible and links the results to Zoho CRM and Zoho Books.
01Is DynamoDB right for you?
DynamoDB shines when you know how the data will be read and need those reads fast at any volume. It gets painful when people expect it to behave like a reporting database. Here’s our honest sorting, from the projects we’re asked to rescue as much as the ones we start fresh.
02DynamoDB services
Most DynamoDB requests land in one of five buckets. A new build usually touches the first three; a table that already runs in production tends to need the last two.
Design
We list every read and write, then pick partition keys, sort keys and secondary indexes that answer each one with a Query or GetItem.
Migrate
Reshape documents or normalized rows into key-based items, backfill in batches, run both stores side by side, then cut reads over.
Secure
IAM policies that limit each service to its own keys, encryption at rest (on by default) with your KMS key if needed, VPC endpoints and point-in-time recovery.
Optimize
On-demand or provisioned with auto scaling, Standard-IA table class for cold tables, TTL to expire old items, and smaller items that use fewer request units.
Run
CloudWatch alarms on throttled requests, Streams consumers that don’t fall behind, and restore drills so a backup is proven before you need it.
03Access patterns first
In SQL you design tables, then write queries. DynamoDB flips that: the queries decide the keys. Here is how we model a sample orders table for an online store, one worksheet line at a time.
Not the screens, the questions behind them. If a question isn’t on the list, the table won’t answer it cheaply later.
Access patterns · sample
Customer ID spreads load across thousands of partitions. Order status would pile everything onto three or four keys.
Partition key
PK = CUST#<customerId>Answers AP1 with one GetItem
Prefixing orders with the date means one Query, read backwards, returns the newest first with no sorting in code.
Sort key
SK = PROFILE | ORDER#<date>#<orderId>AP2: Query PK, begins_with(SK, "ORDER#"), descending
Items that are always read together share a partition key, so the whole order comes back in a single request.
Item collection
PK = ORDER#<orderId> · SK = ITEM#<line>AP3: one Query, no joins
The warehouse asks by status, which the main keys can’t serve. A global secondary index answers it, with a shard suffix if volume is high.
GSI1
GSI1PK = STATUS#packed#<0-3> · GSI1SK = <date>AP4: four small Queries in parallel
We replay realistic traffic, watch for throttled keys in CloudWatch and confirm each item stays well under the 400 KB limit.
Sign-off check
04Try it · sample design
Tick the things your app stores. The designer lays them into one table, shows the keys each item gets and the request that serves every access pattern. It’s a sample to make the idea concrete; a real model starts from your own list of questions.
Table preview Sample items
| PK | SK | GSI1PK | GSI1SK | Type |
|---|
Access patterns and the request that serves each
Sample keys and values only. Real designs also weigh item size, read consistency, write volume per key and whether a second table is simply clearer. We sometimes recommend two or three tables, and we’ll tell you why.
05DynamoDB + Zoho
Zoho holds the customer and the money; DynamoDB often holds what your own app does all day. These three patterns are the ones we build most, each with retries and logging so a missed event gets noticed.
A deal or contact change fires a Zoho CRM webhook. Lambda writes it with a condition on the Zoho record ID and modified time, so a retried webhook can’t create a duplicate.
When an order item flips to shipped, DynamoDB Streams hands the change to Lambda, which creates the invoice in Zoho Books. Failures wait in a queue and try again.
Price lists, account tiers and owner lookups get cached in DynamoDB with a time to live. Your app reads the cache first and only calls Zoho when an entry has expired.
Only moving data between two apps, with no custom code? Zoho Flow may be all you need. Want functions and a data store that live next to Zoho instead of in AWS? Compare Zoho Catalyst. Customer data already in Zoho CRM? We map it before we model anything.
06DynamoDB pricing
You pay for reads, writes and storage, with two ways to pay for the reads and writes. On-demand charges per request. Provisioned charges per hour for capacity you reserve. Every number on this section is an AWS list rate for the Standard table class in US East (N. Virginia).
Pay per request
A write of up to 1 KB uses one write unit. A strongly consistent read of up to 4 KB uses one read unit; an eventually consistent read uses half. Our default for new or spiky apps.
Reserve capacity
Cheaper once traffic is steady and predictable, with auto scaling to follow the daily curve. The free tier covers 25 write and 25 read capacity units.
Also on the bill
Sample month on-demand
10 million writes and 50 million strongly consistent reads, all items under 1 KB: $6.25 + $6.25 = $12.50 in request charges, plus storage past the free 25 GB. Data transfer, Streams reads, global tables and other features are billed on top when you use them.
Our side is simpler: the modeling, build or migration carries one fixed figure, stated in the BRD and signed off ahead of the first CreateTable call. The first call costs you nothing; AWS bills you directly for DynamoDB itself.
07DynamoDB questions
Keys, costs, MongoDB comparisons and Zoho links. Got a table that throttles or a bill that jumped? Bring the CloudWatch graph to the first call.
Amazon DynamoDB is a serverless NoSQL database from AWS that stores items by key and returns them in single-digit milliseconds at almost any scale. Typical uses are shopping carts, orders, user sessions, game state, device data and the backend of serverless apps built on Lambda and API Gateway. It is a weak choice for ad-hoc reporting or joins across many tables.
MongoDB lets you query documents in many flexible ways and suits apps whose questions keep changing. DynamoDB asks you to design keys around known access patterns, and in return gives steady speed, no servers to run and pay-per-request pricing on AWS. If your team already runs MongoDB well and needs rich queries, staying can be right; if you want less to operate inside AWS, DynamoDB usually wins.
Choose a relational database on RDS or Aurora when your data has many relationships, you need joins and ad-hoc SQL, or reporting runs straight off the production database. Choose DynamoDB when reads and writes follow a known set of key lookups and traffic is large or spiky. Some apps use both, with DynamoDB for the hot path and SQL for reporting.
In US East (N. Virginia), on-demand mode is $0.625 per million write request units and $0.125 per million read request units. Provisioned mode is $0.00065 per write capacity unit-hour and $0.00013 per read capacity unit-hour. Storage is $0.25 per GB-month after the first 25 GB free, and point-in-time recovery adds $0.20 per GB-month.
Start new, unpredictable or spiky workloads on on-demand, which needs no capacity planning. Once traffic is steady and you can see the pattern in CloudWatch, provisioned capacity with auto scaling is often cheaper. You can switch a table between the two modes, so the first choice is not permanent.
Single-table design stores several entity types, such as customers, orders and invoices, in one table with generic key names, so related items can be fetched in one Query. It cuts round trips but makes the table harder to read for newcomers. We use it when patterns fetch related items together, and recommend separate tables when entities are read independently.
A hot partition happens when one key gets far more traffic than the rest, so requests to it get throttled even though the table has spare capacity. Each partition supports up to 3,000 read units and 1,000 write units per second. We avoid it with high-cardinality partition keys, write sharding for busy keys and caching for popular reads.
Yes, through code you own in AWS. Common patterns are Zoho CRM webhooks through API Gateway and Lambda into DynamoDB, DynamoDB Streams triggering Lambda to create invoices in Zoho Books, and DynamoDB as a cache with TTL to cut calls to the Zoho API. For simple hand-offs Zoho Flow can be enough.
Point-in-time recovery keeps continuous backups and lets you restore a table to any second within the recovery window, up to the last 35 days. On-demand backups are full copies you keep until you delete them. Both restore into a new table, so we plan and test how the app switches to it.
Talking through your tables on the first call is free. Each DynamoDB engagement after that, from a modeling workshop to a full move off MongoDB, gets one fixed price inside a signed BRD, along with dates for every phase. A big data move can call for a paid assessment, and we quote that before it begins. Your DynamoDB usage is billed by AWS straight to you.
08How a DynamoDB project starts
Four steps take you from “we think DynamoDB fits” to a signed plan. Reviewing one existing table is usually small enough to price while we talk. Moving a large MongoDB or SQL database is different: that may begin with a paid assessment, and you see its cost in writing first.
We run modeling workshops by video with US, Canadian and Latin American clients, and in person at a whiteboard when your developers are near Los Angeles.
Delivery after sign-off follows the same process as every build we run. See how we work →
09Let’s talk
Book a free consultation with Elite Tech Global. We review your Zoho, AWS, Shopify or WordPress setup, show where AI / SI agents can save time, and agree the next step. If we work together, every requirement and a fixed price go into a signed BRD before the build starts.
Real people, one team. Led by co-founders Ikramul Karim and Khris Kakosimidi, and a 40+ member team across Zoho, AWS and AI.
Thanks, we’ve got it.
We’ll review your request and email you to set up your free consultation. Prefer to pick a time now?
Book a call