Bosh sahifa Wiki Shard

Shard

Shard — katta indeks yoki ma’lumotlar to‘plamining alohida saqlanadigan va hisoblanadigan bo‘lagidir. Distributed search tizimida har shard mustaqil indeks sifatida ishlaydi, ma’lum hujjatlarni saqlaydi va queryning o‘z qismiga javob beradi. Sharding hajm hamda yukni bir nechta nodega taqsimlash imkonini beradi.

Hujjatni joylashtirish

Hujjatning routing qiymati hash funksiyadan o‘tkazilib, tegishli primary shard tanlanadi. Default routing ko‘pincha document IDga asoslanadi. Bir ID bilan takror yozish bir shardga tushishi kerak; aks holda update eski nusxani topa olmaydi.

Custom routing bir tenant yoki account yozuvlarini bir shardda saqlab, query fan-outini kamaytiradi. Biroq yirik tenant boshqa barcha keylardan ko‘p ma’lumot yaratsa hot shard paydo bo‘ladi. Routing cardinality va hajm taqsimoti oldindan baholanadi.

Primary va replica

Primary shard yozuvning asosiy nusxasini qabul qiladi. Operatsiya kerakli validationdan o‘tib, replica shardlarga uzatiladi. Acknowledgment darajasi va tizim konfiguratsiyasiga qarab client javob olgan paytda barcha yoki ayrim replicalar yozgan bo‘lishi mumkin.

Node yo‘qolganda replica primaryga ko‘tarilishi mumkin. Cluster manager bir shardning ikki mustaqil primary nusxasi paydo bo‘lmasligi uchun term, quorum yoki in-sync ro‘yxat kabi mexanizmlardan foydalanadi. Network partition davrida availability va consistency tanlovi tizim modeliga bog‘liq.

Query fan-out

Search coordinator so‘rovni indeksning shard nusxalariga tarqatadi. Har shard lokal top natijalarni qaytaradi, coordinator ularni birlashtiradi va kerakli hujjatlarni fetch qiladi. Shard soni ortishi parallelizmni oshirishi mumkin, lekin har query uchun ko‘proq network xabari, queue va merge xarajati paydo bo‘ladi.

Global rankingda term statistikasi shard bo‘yicha taxminiy bo‘lishi mumkin. Kichik va notekis shardlarda bir terminning lokal raritysi natijaga ta’sir qiladi. Distributed frequency search kabi qo‘shimcha bosqich aniqlikni oshiradi, ammo latencyga xarajat qo‘shadi.

Shard hajmini tanlash

Juda mayda shardlar cluster state, file descriptor va heap overheadini ko‘paytiradi. Juda katta shard esa relocation, backup va recoveryni sekinlashtiradi. Maqbul hajm hardware, query turi, ingest tezligi va tiklanish vaqtiga bog‘liq; universal bitta raqam mavjud emas.

Vaqt bo‘yicha indekslarda rollover hujjat soni, disk hajmi yoki yosh chegarasida yangi indeks yaratadi. Eski read-only shardlar segment merge va compressiondan so‘ng arzon storage qatlamiga ko‘chirilishi mumkin. Shrink yoki split imkoniyati platforma shartlariga bog‘liq.

Allocation va qayta tiklash

Allocation qoidalari primary va replica bir xil failure domain — masalan, bitta host yoki availability zonada — qolmasligini ta’minlaydi. Disk watermark to‘lgan nodega yangi shard joylashtirishni to‘xtatadi. Rebalancing teng taqsimotga intiladi, lekin katta ko‘chirish production I/O va networkni band qilishi mumkin.

Recovery snapshotdan, peer sharddan yoki transaction log yordamida bajariladi. Monitoring shard state, unassigned sabab, recovery byte, pending task va query latencyni ko‘rsatadi. Shardni majburan allocate qilish stale nusxani primaryga aylantirib data loss keltirishi mumkin; history va in-sync holati tekshirilmasdan bajarilmaydi.

Tenant va xavfsizlik chegarasi

Shard fizik taqsimot birligi bo‘lsa-da, odatda mustaqil authorization chegarasi emas. Bir shard ichida bir nechta tenant hujjati turishi mumkin; queryga access filter majburiy qo‘llanadi. Tenantni custom routing bilan bir shardga yig‘ish delete va queryni tezlashtiradi, biroq yirik tenant shard limitiga urilishi mumkin. Routing qiymati clientdan ko‘r-ko‘rona olinmaydi, autentifikatsiya qilingan tenant contextidan hosil qilinadi. Snapshot restore ham index darajasidagi permission va tenant isolationni qayta tekshiradi.

Bog‘liq tushunchalar

Partitioning, Replica, Routing key, Primary shard, Rebalancing, Search engine, Recovery