DynamoDB — key-value va document modelini qo‘llaydigan, gorizontal scale, replication va managed operationga mo‘ljallangan cloud database xizmati. U past latency bilan katta request hajmini qayta ishlash uchun partitionlangan arxitekturadan foydalanadi.
DynamoDB data modeli access pattern va primary key tanloviga kuchli bog‘liq.
Table
Table itemlar to‘plamidir.
Har item attribute’lardan iborat.
Itemlar bir xil attribute to‘plamiga ega bo‘lishi shart emas, ammo primary key schema barcha itemlar uchun umumiy.
Item
Item JSONga o‘xshash structure.
Attribute turlari:
Item hajmi platforma limitiga ega.
Katta binary fayllar object storage’da saqlanib, table’da reference yoziladi.
Partition key
Primary key faqat partition keydan iborat bo‘lishi mumkin.
Partition key hash qilinib data qaysi partitionga tushishini aniqlaydi.
Yuqori cardinality va teng taqsimlangan key kerak.
Bitta mashhur key hot partition yaratishi mumkin.
Sort key
Composite primary key partition key va sort keydan iborat.
Bir xil partition keydagi itemlar sort key bo‘yicha tartiblangan.
Masalan:
PK = USER#15
SK = ORDER#2026-07-14#100
Bu bitta userning orderlarini range bilan olishga yordam beradi.
Single-table design
Turli entitylar bitta table’da key patternlari bilan saqlanishi mumkin.
Masalan:
PK = USER#15, SK = PROFILE
PK = USER#15, SK = ORDER#100
Bu bir requestda bog‘liq data’ni olishga yordam beradi.
Kamchiligi — schema va key convention murakkablashadi.
GetItem
Primary key to‘liq ma’lum bo‘lsa bitta item olinadi.
Bu eng aniq va tez access patternlardan biri.
Primary key bo‘lmagan field bo‘yicha GetItem ishlamaydi.
Secondary index yoki scan talab qilinadi.
Query
Bir partition key ichidagi itemlar sort key sharti bilan olinadi.
Shartlar:
- equality;
- between;
- prefix;
- comparison.
Query natijasi pagination bilan qaytadi.
Filter key conditiondan keyin qo‘llanishi mumkin, shu sababli o‘qilgan capacity kamaymasligi ehtimoli bor.
Scan
Scan table yoki indexdagi barcha itemlarni ko‘rib chiqadi.
Filter faqat natijani kamaytiradi, o‘qilgan data hajmini har doim kamaytirmaydi.
Katta production table’da scan qimmat.
Parallel scan analytics yoki migration uchun boshqariladigan segmentlarda ishlatilishi mumkin.
Secondary index
Global secondary index
Boshqa partition va sort keyga ega.
U mustaqil partitionlangan index sifatida ishlaydi.
Update asynchronous bo‘lishi mumkin.
Local secondary index
Asosiy table bilan bir partition key, boshqa sort key.
Table yaratilishida belgilanadi va imkoniyatlari cheklangan bo‘lishi mumkin.
Capacity
Requestlar read va write capacity birliklari bilan o‘lchanishi mumkin.
- provisioned;
- on-demand.
Item hajmi, consistency va operation turi capacity sarfiga ta’sir qiladi.
Traffic spike va throttling metriclari kuzatiladi.
Adaptive capacity
Storage hot partition loadini ma’lum darajada boshqa resource bilan muvozanatlashtirishi mumkin.
Bu noto‘g‘ri partition keyni to‘liq tuzatmaydi.
Bitta key fizik va logical limitlarga urilishi mumkin.
Consistent read
Read eventual yoki strongly consistent variantga ega bo‘lishi mumkin.
Strong read ko‘proq capacity va latency talab qilishi mumkin.
Global replication yoki secondary indexda consistency imkoniyati farq qiladi.
Conditional write
Item faqat condition true bo‘lsa update qilinadi.
Masalan:
version = 7
attribute_not_exists(id)
stock >= quantity
Bu optimistic locking va uniquenessga yaqin patternlar uchun ishlatiladi.
Transaction
Bir nechta item uchun atomic read yoki write transactionlari qo‘llanishi mumkin.
- qo‘shimcha capacity;
- item soni va hajmi limitlari;
- conflict;
- idempotency
talablariga ega.
Data model ko‘p transaction ehtiyojini kamaytirishga intiladi.
TTL
Item attribute’i expiration timestamp sifatida belgilanadi.
Expired item background jarayonda o‘chiriladi.
U aniq sekundda darhol yo‘qolmasligi mumkin.
Application expired vaqtni o‘zi ham tekshirishi mumkin.
Stream
Table’dagi insert, update va delete hodisalari ordered stream shardlariga yozilishi mumkin.
uchun foydalanadi.
Har item keyi bo‘yicha event tartibi saqlanishi mumkin.
Global table
Table bir nechta regionda replicated bo‘lishi mumkin.
Har region local write qabul qilishi ehtimoli bor.
Conflict resolution timestamp yoki platforma qoidalariga asoslanadi.
Parallel bir xil item update’lari business conflict yaratishi mumkin.
Backup
Point-in-time recovery ma’lum retention oynasida table holatini tiklashga yordam beradi.
On-demand backup uzoqroq saqlanishi mumkin.
Restore yangi table yaratishi va index, policy yoki stream konfiguratsiyasini alohida tiklash talab qilishi mumkin.
Pagination
Query va scan javobi bir requestda cheklangan hajm qaytaradi.
Davom etish uchun oxirgi evaluated key keyingi requestga beriladi.
Bu cursor opaque saqlanadi va filter hamda index bilan bir xil contextda ishlatiladi.
Optimistic locking
Item ichida version attribute saqlanadi.
Update faqat kutilgan version mos bo‘lsa bajariladi.
Muvaffaqiyatli update versionni oshiradi.
Conflict bo‘lsa client yangi itemni o‘qib, business qoidaga ko‘ra retry yoki rad etadi.
Batch operation
Batch read va write network requestlarini birlashtiradi. Ayrim itemlar throttling sabab bajarilmasligi mumkin, shuning uchun unprocessed ro‘yxat backoff bilan qayta yuboriladi.
Bog‘liq tushunchalar
Key-value database, Document database, Partition key, Sort key, Secondary index, Conditional write, TTL, Change stream, Global table, NoSQL