Distributed table — ma’lumotlari bir nechta server, shard yoki partitionda saqlanadigan va foydalanuvchiga yagona mantiqiy jadval sifatida ko‘rinadigan jadvaldir. Query coordinator so‘rovni tegishli tugunlarga yuboradi, oraliq natijalarni yig‘adi va yakuniy javobni qaytaradi. Taqsimlash hajm hamda throughputni oshiradi, lekin join, transaction, nosozlik va data skewni murakkablashtiradi.
Shard kaliti
Shard key record qaysi tugunga tushishini belgilaydi. Hash taqsimot tengroq yuk beradi, range taqsimot diapazon so‘rovi va lokalitetga yordam beradi. Random taqsimot ingestni yoyadi, ammo key bo‘yicha query barcha shardga borishi mumkin. Tenant ID yaxshi lokalitet berishi, juda katta tenant esa hot shard yaratishi mumkin.
Kalit yuqori cardinality, barqaror va ko‘p query joinlariga mos bo‘lishi maqsadga muvofiq. Keyni keyin o‘zgartirish to‘liq data migration talab qiladi. Composite yoki hierarchical sharding yirik tenantni alohida bo‘lishi mumkin.
So‘rov bajarish
Shard key predikati aniq bo‘lsa coordinator bitta yoki kam shardga route qiladi. Kalit yo‘q bo‘lsa scatter-gather barcha shardni so‘raydi. Har shard local filter va partial aggregate bajarib, coordinatorga kichik natija yuboradi. Global ORDER BY ... LIMIT har sharddan top-N olib, keyin merge qiladi.
Ikki katta distributed jadval bir xil key va shard xaritasida colocated bo‘lsa local join bajariladi. Mos bo‘lmasa, bir tomon broadcast qilinadi yoki ikkalasi network shuffle orqali qayta partitionlanadi. Kichik dimensionni replicate qilish tezlik beradi, ammo update ni barcha tugunga yetkazish kerak.
Replikatsiya va izchillik
Har shard bir nechta replika bilan saqlanishi mumkin. Leader yozuvlarni tartiblaydi, followerlar o‘qish va failoverga xizmat qiladi. Quorum yoki synchronous replication data lossni kamaytiradi. Replica lag sabab stale read yuz berishi mumkin; read-your-writes kerak bo‘lsa leader yoki session token ishlatiladi.
Cross-shard transaction two-phase commit yoki consensus koordinatsiyasini talab qilishi va partitionda bloklanishi mumkin. Ko‘p arxitektura biznes operatsiyasini bitta shardga joylashtirishga intiladi. Global unique constraint shard keyni o‘z ichiga olmasa markaziy indeks yoki koordinatsiya talab qiladi.
Qayta balans
Tugun qo‘shilganda shardlar ko‘chiriladi. Rebalance davomida source va target nusxa sinxronlanadi, routing metadata atomar yangilanadi va eski nusxa xavfsiz bo‘lgach o‘chiriladi. Katta transfer normal query bilan tarmoq hamda disk uchun raqobat qiladi, shuning uchun throttle va maintenance window ishlatiladi.
Consistent hashing yoki virtual shardlar ko‘chirishni mayda birliklarda boshqaradi. Range split hot diapazonni bo‘ladi. Metadata service xarita versiyasini client va coordinatorlarga tarqatadi; eski routing request redirect yoki forwarding bilan qayta yo‘naltiriladi.
Operatsion boshqaruv
Monitoring shard hajmi, QPS, CPU, disk, replica lag, fan-out, remote bytes va coordinator memoryni solishtiradi. Umumiy o‘rtacha sog‘lom bo‘lib, bitta shard saturated bo‘lishi mumkin. Backup barcha shard uchun izchil snapshot yoki transaction timestampni talab qiladi; alohida vaqtdagi nusxalar cross-shard invariantni buzadi.
Schema migration barcha shardga bosqichma-bosqich tarqatiladi va eski-yangi versiya mosligi saqlanadi. Bitta shard xatosida partial resultni to‘liq natija sifatida jim qaytarish xavfli; query failure yoki aniq incompleteness belgisi beradi. Distributed table ko‘lam muammosini hal qiladi, ammo shard kaliti va consistency modeli dastur semantikasining bir qismiga aylanadi.
Bog‘liq tushunchalar
Sharding, Distributed database, Partition key, Replication, Scatter-gather, Distributed join, Rebalancing