Ravindra BagaleCourses & study guides English Track your progress

DynamoDB GSI आणि LSI Deep Dive: Projections, Keys आणि Costs

Nour: unused fat GSIs. Sparse GSI, projections, LSI, cost. CRUD link.

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

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

1. रोजचे उदाहरण: library catalog

Base = table. Extra drawers = GSI. Sparse = फक्त needed cards. ALL projection = महाग.

2. Vertical steps

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

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

हे का लागतं?

Indexes = alternate patterns. Wrong projection = cost. LSI = create-time.

4. हे काय आहे?

हे काय आहे?

GSI alternate keys; LSI same PK. Projections तीन. Sparse = optional attr.

5. कसं करायचं

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

  1. Leftover patterns.
  2. Sparse prefer.
  3. Projection choose.
  4. LSI limits.
  5. GSI metrics.

6. Projections

KEYS_ONLY छोटा; ALL जड. GetItem OK असेल तर KEYS_ONLY.

7. Backfill

Backfill existing; sparse without attr skip; CREATING wait.

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

aws dynamodb update-table --table-name lab-dda-shop --attribute-definitions AttributeName=GSI1PK,AttributeType=S AttributeName=GSI1SK,AttributeType=S \
  --global-secondary-index-updates '[{"Create":{"IndexName":"GSI1","KeySchema":[{"AttributeName":"GSI1PK","KeyType":"HASH"},{"AttributeName":"GSI1SK","KeyType":"RANGE"}],"Projection":{"ProjectionType":"KEYS_ONLY"}}}]'
# Output: IndexStatus CREATING then ACTIVE. Meaning: sparse-ready KEYS_ONLY index — put GSI1PK only on items that need it.
aws dynamodb query --table-name lab-dda-shop --index-name GSI1 --key-condition-expression "GSI1PK = :g" --expression-attribute-values '{":g":{"S":"STATUS#NEW"}}'
# Output: only items you stamped with GSI1PK=STATUS#NEW.

GSI create + sparse stamp + index Query.

9. Industry stories

  • Support sparse
  • HR LSI
  • Marketplace
  • Fintech PII
  • Gaming

10. Lab

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

  1. Add+Query.
  2. Compare size.
  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
ALL habitKEYS_ONLY
Fat GSISparse
Late LSIGSI
No GSI capMonitor
Hot GSIDesign
BackfillWait
Strong GSIBase Get
UnusedDelete
Missing attrINCLUDE

30. Troubleshooting checklist

  1. Stamp attr.
  2. Wait/backfill.
  3. Use GSI.
  4. GSI metrics.
  5. Expect lag.

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.

प्र. Sparse?

Optional attr.

प्र. LSI/GSI?

Same vs alt.

प्र. KEYS_ONLY?

Keys then Get.

प्र. Strong?

No.

32. Interview Q&A

प्र. Why?

Alternate.

प्र. Sparse?

Optional.

प्र. Proj?

Three.

प्र. LSI lim?

Create+10GB.

प्र. Cost?

Sparse+delete.

प्र. 2nd table?

Lifecycle.

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

Ravindra Bagale's Tip (EN)

Stamp index attributes only when the alternate pattern needs that item.

Ravindra Bagale's Tip (MR)

Index attr फक्त गरज असेल तर.

Tip (HI)

जरूरत हो तभी index attr लिखो।

घरी करून बघा

  1. 2 patterns.
  2. Projection.
  3. CRUD GSI.

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

  1. GSI/LSI.
  2. Sparse.
  3. Projection.
  4. Monitor.

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

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

उजळणी card: GSI vs LSI pick. Wrong index = waste. GSI flexible; LSI create-time. Access → pick → project → cost. Late LSI → sparse GSI.
उजळणी card: GSI vs LSI pick · PNG download करा · Card page उघडा
उजळणी card: Projection cost. ALL is expensive. Project minimally. Attrs → projection → estimate. Budget GSI writes.
उजळणी card: Projection cost · PNG download करा · Card page उघडा
तुलना: GSI vs LSI. GSI: Flexible. LSI: Create-time.
तुलना: GSI vs LSI · PNG download करा · Card page उघडा
तुलना: KEYS_ONLY vs ALL. KEYS_ONLY: Thin. ALL: Fat.
तुलना: KEYS_ONLY vs ALL · PNG download करा · Card page उघडा
मुलाखत card: GSI vs LSI 1 min. Compare. GSI vs LSI. Link CRUD.
मुलाखत card: GSI vs LSI 1 min · PNG download करा · Card page उघडा
मुलाखत card: Sparse GSI?. Pattern. Exists → indexed. Examples.
मुलाखत card: Sparse GSI? · PNG download करा · Card page उघडा
मुलाखत card: Projection?. Cost. Minimal project. ALL warning.
मुलाखत card: Projection? · PNG download करा · Card page उघडा
मुलाखत card: दुसरी table?. Pragmatism. Lifecycle/hot/domain. Tool not religion.
मुलाखत card: दुसरी table? · PNG download करा · Card page उघडा

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

सराव Tasks

या scenario बद्दल

London Legal LLP हा लंडन मधला कायदा सेवा व्यवसाय आहे. Oliver Hughes त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे GBP मध्ये मोजले जातात आणि AWS resources eu-west-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 16

सोपं GSI keys

का: Def.

काय करायचं: GSI own keys तर 1.

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

सोपं LSI timing

का: Timing.

काय करायचं: LSI at create तर 1.

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

सोपं KEYS_ONLY

का: Proj.

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

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

सोपं Sparse GSI

का: Sparse.

काय करायचं: Sparse skip तर 1.

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

सोपं Describe

का: CLI.

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

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

सोपं Proj YAML

का: Sketch.

काय करायचं: दोन्ही.

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

सोपं Base

का: Truth.

काय करायचं: Base truth तर 1.

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

मध्यम Cost

का: Cost.

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

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

मध्यम Backfill

का: Backfill.

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

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

मध्यम Second

का: Split.

काय करायचं: Second table तर 1.

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

मध्यम LSI SC

का: Consistency.

काय करायचं: LSI strong तर 1.

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

मध्यम Pick

का: Choose.

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

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

अवघड ALL

का: Proj.

काय करायचं: ALL copy तर 1.

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

अवघड Link

का: No dup.

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

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

अवघड INCLUDE

का: Proj.

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

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

अवघड GSI EC

का: Consistency.

काय करायचं: GSI EC तर 1.

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