Bosh sahifa Wiki Trino

Trino

Trino — ko‘p turdagi data source’lar ustida yuqori parallel distributed SQL querylar bajaradigan query engine. U data lake, object storage, relational database, message tizimi va boshqa cataloglarni yagona SQL interfeysida birlashtiradi.

Trino asosiy data nusxasini o‘zida saqlamaydi. U connectorlar orqali ma’lumotni o‘qib, workerlar orasida parallel qayta ishlaydi.

Arxitektura

Trino cluster ikki asosiy roldan iborat:

  • coordinator;
  • worker.

Coordinator query lifecycle’ini boshqaradi.

Workerlar scan, filter, join va aggregationni bajaradi.

Kichik muhitda coordinator ham worker vazifasini bajarishi mumkin, ammo katta production clusterda rollar ajratiladi.

Coordinator

Coordinator:

uchun javob beradi.

Coordinator yuqori availability modeli deploymentga bog‘liq.

Worker

Worker connector’dan data splitlarini o‘qiydi.

Har worker bir nechta task va driverlarni parallel bajaradi.

Worker memory, CPU va network query throughputga ta’sir qiladi.

Bir worker sekin bo‘lsa stage yakunlanishi kechikishi mumkin.

Catalog

Catalog ma’lum connector instance’ini bildiradi.

Masalan:

lake.analytics.events
postgres.public.users

Bu yerda birinchi qism catalog, ikkinchisi schema, uchinchisi table.

Bir query turli cataloglarni join qilishi mumkin.

Connector

Connector tashqi tizimning:

interfeysini Trino uchun moslashtiradi.

Connector capability pushdown va write imkoniyatiga ta’sir qiladi.

Page va block

Trino data’ni row-by-row emas, columnar page va blocklar ko‘rinishida qayta ishlaydi.

Bu vectorized executionga yaqin samaradorlik beradi.

Operatorlar bir batchdagi ko‘p qiymat ustida ishlaydi.

Query plan

SQL logical operationlarga ajratiladi:

Optimizer ularni distributed physical stage’larga aylantiradi.

EXPLAIN plan va fragmentlarni ko‘rsatadi.

Dynamic filtering

Join vaqtida kichik tomondagi keylar runtime filterga aylantirilib katta source scaniga uzatilishi mumkin.

Masalan, faqat kerakli partition yoki rowlar o‘qiladi.

Bu katta fact table joinida I/Oni kamaytiradi.

Connector dynamic filterdan foydalana olishi kerak.

Pushdown

Trino ayrim operationlarni source tizimga uzatadi:

Source operationni samarali bajarsa network hajmi kamayadi.

Biroq source load oshishi mumkin.

Partition pruning

Data lake table partition key bo‘yicha filter qilinsa keraksiz directory va filelar o‘qilmaydi.

Metadata catalog partitionlarni topadi.

Juda ko‘p partition planning vaqtini oshiradi.

File format

Trino columnar formatlardan samarali foydalanadi.

Format metadata’si:

orqali pruning va column selection beradi.

Ko‘p mayda file split va object storage request sonini oshiradi.

Join distribution

Partitioned

Ikkala input hash key bo‘yicha workerlarga qayta taqsimlanadi.

Broadcast

Kichik table barcha workerga yuboriladi.

Optimizer statistics va limit asosida tanlov qiladi.

Memory va network limitlari hisobga olinadi.

Join reordering

Ko‘p table joinida optimizer qaysi join avval bajarilishini o‘zgartirishi mumkin.

Kuchli filterlangan yoki kichik resultni oldin join qilish intermediate data’ni kamaytiradi.

Statistics yo‘q bo‘lsa original order yoki taxminiy reja ishlatilishi mumkin.

Spill

Hash join, sort va aggregation memory limitga yetganda diskka spill qilishi mumkin.

Spill query failure’ni kamaytiradi, ammo disk I/O va encryption xarajati bor.

Temporary storage tez va yetarli hajmda bo‘lishi kerak.

Fault-tolerant execution

Ayrim execution rejimlari task outputini oraliq storage’da saqlab, worker failure’dan keyin faqat zarur tasklarni qayta bajarishi mumkin.

Bu uzun batch querylar uchun foydali.

Evaziga ko‘proq disk va latency talab qilinadi.

Workload management

Resource group orqali:

boshqariladi.

BI dashboard va data engineering workloadlari alohida guruhga ajratilishi mumkin.

Security

Trino:

bilan himoyalanishi mumkin.

Connector credentiallari serverda himoyalanadi.

User source database parolini bevosita olmasligi mumkin.

Session property

Query uchun ayrim optimizer va execution parametrlari session darajasida o‘zgartirilishi mumkin.

Bu debug va workload tuning uchun.

Userga xavfli yoki clusterga katta ta’sir qiladigan propertylarni o‘zgartirish huquqi cheklanadi.

Trino va data lake

Trino data lake’da SQL query qatlamini beradi.

Ammo quyidagilar alohida tizimlar tomonidan boshqariladi:

Yaxshi file layout query performance uchun muhim.

Query retry

Transient object storage yoki worker xatosida fault-tolerant rejim taskni qayta bajarishi mumkin.

Source va sink operationlari idempotent bo‘lishi kerak.

Write query qisman bajarilgan bo‘lsa connector transaction modeli natijani belgilaydi.

Result cache

Trino’ning o‘zida yoki tashqi gateway’da bir xil query natijasi cache qilinishi mumkin.

Cache key:

ni hisobga oladi.

Stale analytics qabul qilinadigan workloadlarda foydali.

Table function

Connector yoki engine tablega o‘xshash natija qaytaradigan parametrli function taqdim etishi mumkin. Bu tashqi tizimning maxsus scan yoki metadata operationini SQL ichida ifodalaydi.

Bog‘liq tushunchalar

Distributed SQL, Coordinator, Worker, Catalog, Connector, Dynamic filtering, Predicate pushdown, Data lake, Columnar processing, Federated query