Ravindra BagaleCourses & study guides English Track your progress

DynamoDB Transactions, Conditional Writes आणि Optimistic Locking

Minji: double-book. Transactions, conditions, optimistic lock. SDK link.

या chapter मध्ये तुम्ही काय शिकाल

  • Everyday story
  • Why/What/How
  • Commands
  • Industries
  • Lab

1. रोजचे उदाहरण: दोन cashiers

दोन्ही cashiers = race. Transaction = एकत्र. Condition = stock>0. Version tag = optimistic lock.

2. Vertical steps

Why -> What -> How -> Lab -> CleanupWhyWhatHowLabCleanup
Cleanup

3. हे का लागतं?

हे का लागतं?

Concurrent writers = corruption. No idempotency = duplicates.

4. हे काय आहे?

हे काय आहे?

Conditions; Transact all-or-nothing; version attr; idempotency keys.

5. कसं करायचं

कसं करायचं (step by step)

  1. Race spots.
  2. Conditions.
  3. Transactions.
  4. Idempotency.
  5. Cancel reasons.

6. Transaction

Seat update + order Put एकत्र; else काही नाही.

7. Idempotency

IDEMP# key item; not_exists create; retry Get.

8. Commands: output आणि अर्थ

aws dynamodb put-item --table-name lab-dda-shop --item '{"PK":{"S":"SEAT#A1"},"SK":{"S":"META"},"status":{"S":"FREE"},"version":{"N":"1"}}'
aws dynamodb update-item --table-name lab-dda-shop --key '{"PK":{"S":"SEAT#A1"},"SK":{"S":"META"}}' \
  --update-expression "SET #s = :taken, version = version + :one" \
  --condition-expression "#s = :free AND version = :v" \
  --expression-attribute-names '{"#s":"status"}' \
  --expression-attribute-values '{":taken":{"S":"TAKEN"},":free":{"S":"FREE"},":v":{"N":"1"},":one":{"N":"1"}}'
# Output: success once. Second identical call fails ConditionalCheckFailedException.
# Meaning: only one booker wins; version bumps.

एकच book succeed; stale version fail.

9. Industry stories

  • Clinic
  • Fintech
  • Retail
  • Travel
  • Gaming

10. Lab

कसं करायचं (step by step)

  1. Book+replay.
  2. Transact.
  3. Delete.

Cleanup

  1. Delete lab.
  2. Confirm.

11. Access-pattern workshop (आधी कागदावर)

  1. प्रत्येक screen/API लिहा.
  2. प्रत्येकासाठी key/query English मध्ये.
  3. Relationships mark करा.
  4. Range गरज गोल करा.
  5. मगच PK/SK/GSI.
  6. Peak per PK.
  7. Entity JSON नमुना.
  8. Peer review.

12. Copy-paste DynamoDB CLI starters

# Region habit for this series
export AWS_DEFAULT_REGION=ap-south-1

# Describe + sample
aws dynamodb describe-table --table-name ShopApp
aws dynamodb scan --table-name ShopApp --max-items 3

# Query by PK (replace names)
aws dynamodb query --table-name ShopApp   --key-condition-expression "PK = :pk"   --expression-attribute-values '{":pk":{"S":"USER#u123"}}'

# On-demand capacity mode check
aws dynamodb describe-table --table-name ShopApp   --query 'Table.BillingModeSummary'

# Streams status
aws dynamodb describe-table --table-name ShopApp   --query 'Table.StreamSpecification'

13. अजून industry stories

  • Retail cart single-table
  • Gaming leaderboard shard
  • IoT time-series TTL
  • Clinic conditional Put
  • Fintech audit Streams
  • Travel global tables

14. Glossary

Termअर्थ
PKPartition ठरवणारी key
SKPartition आतील क्रम
Item collectionएक PK चे सर्व items
GSIAlternate index
LSISame PK, वेगळा SK
RCU/WCUProvisioned units
Conditional writeCondition true तरच write
Stream viewStream मध्ये काय येतं

15. Practice: मोठ्याने explain

  1. 60s access patterns first.
  2. 60s hot + shard.
  3. 60s GSI vs LSI.
  4. 60s capacity modes.
  5. 60s version lock.
  6. 60s Streams audit.
  7. Record ×2.

16. Safe lab hygiene

  • Budget alert.
  • lab- prefix.
  • On-demand labs.
  • Delete after.
  • DLQ required.
  • Owner+Expiry tags.
  • Intro chapter
  • CRUD survey
  • CLI chapter
  • SDK chapter
  • Serverless projects

18. Single-table sketch pad

Console आधी एक mentally table. Shop: USER#, ORD#, ITEM#, PROD#.

EntityPKSKAttrs
UserUSER#u1PROFILEname, city
OrderUSER#u1ORD#...total, status
Order itemORD#o9ITEM#sku1qty, price
ProductPROD#sku1METAtitle, stock

19. दहा oral drills

  1. Access pattern?
  2. PK prefixes?
  3. Hot symptom?
  4. Sparse GSI?
  5. LSI timing?
  6. On-demand bill?
  7. attribute_not_exists?
  8. View type trade-off?
  9. Poison loop?
  10. Which chapter for Put?

20. Capacity / throttle drill

  1. CW metrics उघडा.
  2. Mode note.
  3. RCU/WCU लिहा.
  4. Hottest PK.
  5. Mitigation.
  6. Budget alert.
  7. GSI audit.
  8. Streams audit.

21. Condition cheatsheet

# Create-once
attribute_not_exists(PK)

# Optimistic lock
version = :v

# Stock / seat
stock > :zero
#status = :free

# Combine
attribute_not_exists(PK) AND #type = :user

Conditions = seatbelt. SDK chapter = full samples.

22. Streams consumer checklist

  • View type.
  • DLQ.
  • Idempotent.
  • IteratorAge.
  • No loop.
  • Fan-out.
  • Lab disable.
  • Sequence.
  • No duplicate verbs.
  • Projects later.

24. अधिक oral drills

  1. 45s PM.
  2. Chat PK/SK.
  3. 3 metrics.
  4. Refuse GSI.
  5. Txn story.
  6. ALO.
  7. Scan->Query.
  8. Cleanup.

25. Teacher story: notebook → database

Ravindra Sir नी एका दुकानात सगळं एका notebook मध्ये बघितलं — customer, order, payment. unpaid bills शोधायला पाने उलटायला लागत. DynamoDB single-table म्हणजे तोच notebook नीट लेबल (PK/SK) आणि गरज असेल तरच दुसरी tab (GSI). दहा वेगळे books तयार करू नका जोपर्यंत खरंच दहा वेगळे व्यवसाय नाहीत.

Meera (clinic), Omar (travel), Aisha (retail) एकत्र design करतात तेव्हाही आधी कागद: screen यादी, key sketch, sample JSON, peer review. Console शेवटी. म्हणूनच ही deep series PutItem पुन्हा लिहित नाही — intro आणि CRUD ला link करते.

26. सोळा mini tasks (self-check)

  1. Cart साठी तीन access patterns.
  2. User + orders PK/SK.
  3. एक hot anti-pattern.
  4. 40s मध्ये write sharding.
  5. GSI vs LSI without notes.
  6. Sparse index projection का?
  7. Flash sale mode.
  8. पाच bill line items.
  9. Create-once condition शब्दात.
  10. Version lock वर्णन.
  11. Txn कधी?
  12. Audit view type.
  13. दोन consumer safety rules.
  14. Stream lag metric.
  15. PutItem CLI कुठे?
  16. Lab cleanup checklist.

27. मराठी classroom lines

  • Mantra: patterns first.
  • Hot = गर्दी.
  • GSI vs LSI.
  • Modes.
  • Seatbelt.
  • ALO.

28. Hindi bridge lines

  • Patterns first.
  • Hot load.
  • GSI/LSI.
  • Modes.
  • Txn.
  • Idempotent.

29. सामान्य errors आणि fixes

प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.

Error / लक्षणFix
Check-thenCondition
SwallowHandle
No verAdd
No idemKey
Too many<=100
Over-txnPut
No reasonsLog
ClockVersion
Lost updVersion

30. Troubleshooting checklist

  1. Refresh.
  2. Reasons.
  3. Split.
  4. Return prior.
  5. Backoff.

31. FAQ

प्र. Single table always?

Related patterns साठी हो; religion नाही.

प्र. RDS अजून?

Joins/SQL reports साठी हो — intro chapter.

प्र. Scan वाईट?

Hot path = Query/Get; Scan rare.

प्र. Put/Get कुठे?

CRUD/CLI/SDK chapters — link.

प्र. Opt lock?

Version match.

प्र. Txn?

All-or-nothing.

प्र. not_exists?

Create-once.

प्र. Idem?

Retry safe.

32. Interview Q&A

प्र. Why?

Races.

प्र. Fail?

Conflict.

प्र. Opt/pes?

Version.

प्र. Limits?

100.

प्र. Pay?

Idem+ledger.

प्र. RCA?

Missing cond.

33. Tips — English, मराठी आणि हिंदी

Ravindra Bagale's Tip (EN)

If two writers can touch it, write a condition.

Ravindra Bagale's Tip (MR)

दोन writers = condition.

Tip (HI)

दो writer हों तो condition लिखो।

घरी करून बघा

  1. एक race.
  2. Version.
  3. SDK.

थोडक्यात सांगायचं तर

  1. Conditions.
  2. Txns.
  3. Version.
  4. Idem.

उजळणी, मुलाखत आणि तुलना cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: Transactions one card. Partial = inconsistent. Atomic + reasons. Items → cond → txn → idem. Clinic txn.
उजळणी card: Transactions one card · PNG download करा · Card page उघडा
उजळणी card: Optimistic locking. Blind overwrite. version = :v. Read → edit → cond → retry. Version everywhere mutable.
उजळणी card: Optimistic locking · PNG download करा · Card page उघडा
तुलना: Conditional write vs Transaction. Conditional write: Single. Transaction: Multi.
तुलना: Conditional write vs Transaction · PNG download करा · Card page उघडा
तुलना: Optimistic lock vs Blind Put. Optimistic lock: Safe merge. Blind Put: Lost update.
तुलना: Optimistic lock vs Blind Put · PNG download करा · Card page उघडा
मुलाखत card: Txn कधी?. Use-case. Multi-item atomic. Limits.
मुलाखत card: Txn कधी? · PNG download करा · Card page उघडा
मुलाखत card: Conditional writes. Safety. Condition gate. Show expr.
मुलाखत card: Conditional writes · PNG download करा · Card page उघडा
मुलाखत card: Optimistic lock?. Pattern. version=:v. vs blind Put.
मुलाखत card: Optimistic lock? · PNG download करा · Card page उघडा
मुलाखत card: Idempotency?. Retries. Safe retry. Token key.
मुलाखत card: Idempotency? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.

सराव Tasks

या scenario बद्दल

Milan Furniture हा मिलान मधला फर्निचर व्यवसाय आहे. Giulia Rossi त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे EUR मध्ये मोजले जातात आणि AWS resources eu-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 16

सोपं Txn

का: Atomic.

काय करायचं: All-or-nothing तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं Condition

का: Gate.

काय करायचं: Condition true तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं Version

का: Lock.

काय करायचं: Version lock तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं Create-once

का: Insert.

काय करायचं: Create-once तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं Cond YAML

का: List.

काय करायचं: conds.

कसं करायचं:
  1. Task मधल्या top-level keys पासून सुरू करा.
  2. Child keys 2 spaces ने indent करा (tabs नकोत).
  3. प्रत्येक property मध्ये task मधली value भरा.
  4. Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.

सोपं Describe

का: CLI.

काय करायचं: describe.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं Atomic

का: Property.

काय करायचं: Atomic fail तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Idempotency

का: Retry.

काय करायचं: Idempotency तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Canceled

का: Debug.

काय करायचं: CancellationReasons तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Link

का: Depth.

काय करायचं: Link SDK तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम TransactGet

का: Read.

काय करायचं: TransactGet तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Flow

का: Flow.

काय करायचं: keys.

कसं करायचं:
  1. Task मधल्या top-level keys पासून सुरू करा.
  2. Child keys 2 spaces ने indent करा (tabs नकोत).
  3. प्रत्येक property मध्ये task मधली value भरा.
  4. Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.

अवघड Seat

का: Pattern.

काय करायचं: Seat free condition तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड Limit

का: Limit.

काय करायचं: 100-action awareness तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड Race

का: Safety.

काय करायचं: Race conditions तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड Stock

का: Expr.

काय करायचं: stock > 0 style तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.