GH GambleHub

Վերլուծական պահեստների ինդեքսավորում

1) Ինչու՞ iGaming պլատֆորմի ինդեքսավորումը

Վերլուծության արագությունը 'GGR/NET զեկույցները, ծրարները, RG/AML և A/B փորձարկումները տեղադրվում են SLA-ում։

Արժեքը 'ավելի քիչ սկանավորված բայթ ցածր է հաշվարկման/պահեստի պատճառով։

Իսպանիան 'կայուն p95/p99 dashbords և API մետրիկ լատենտ։

Մասշտաբը 'տասնյակ բրենդեր/շուկաներ/PSA/պրովայդերներ առանց «fronscan» դժոխքի արժեքի։

2) Բեռի մոդելը (նախքան ինդեքսավորումը)

Факты: `payments`, `game_rounds`, `sessions`, `bonus_events`.

Չափումներ ՝ «dult _ user» (առանց PII), «dult _ provider», «dult _ pert», «dice _ country»։

Հարցումները ՝ "Վերջին N օրերը", ագրեգացիան 'brand/country/provider/provider/pro ", ստատիկ դաշտի ֆիլտրեր, jourrrogate-keys, որոնում JSON-ալգորիթմների (կոդավորման մեթոդ, սարք), top-K/percentile։

Մենք ընտրում ենք ինդեքսներ, հիմնված ընտրողությունից, կարդինալությունից և օգտագործման հաճախականությունից։

3) Ինդեքսների տեսակները և երբ վերցնենք դրանք

3. 1 Դասական

B-tree: Հավասարություն/միջակայք բարձրորակ սյուների վրա («user _ surrogate _ id», «occurred _ at», «amount»)։

Hash 'մաքուր հավասարություն; ավելի քիչ հաճախ վերլուծության մեջ (լաբի միջակայքների դեմ)։

Bitmap: Ցածր կարդինալություն և հաճախակի ֆիլտրեր («country», «kyc _ level», «rg _ state», «brand»)։ Հիանալի է յուղերը ամփոփելու համար։

3. 2 Columnar հատկություն

Min-max (wwwww.skipping): ավտոմատ վիճակագրությունը «նվազագույն/առավելագույնը» պարկետ-ստրեյպերում/մասերում շարժիչը բաց է թողնում բլոկները։ Ավելի լավ է աշխատում ֆիլտրված գազերի տեսակավորման ժամանակ։

Bloom-ինդեքսները 'արագ հավանական արժեքային թեստեր, որոնք օգտակար են «user _ id», «transaction _ id», «p.ru»)։

BRIN (Block Range Index): էժան «ցուցիչներ» բլոկների միջակայքում, եթե տվյալները բնականաբար կարգավորված են (ժամանակը)։ Էժան, բայց արդյունավետ Time սերիաների համար։

3. 3 Առաջադեմ/մասնագիտացված

GiST/GIN (հակադարձված): JSON/arrays/տեքստ, ներդրված ֆիլտրեր («metadata»)։ method = 'Papara'`, `device. os in [...]`).

Join/Project (ClickHouse/MPP): նյութեր join/agg արագացնելու համար (pre-join key պահպանվում է փաստի կողքին, նախնական ագրեգացիաները)։

Վեկտորային (ANN) 'նմանատիպ սաղմեդինգների որոնումը (առաջարկություններ/հակաֆրոդ վարքագիծ) - IVF/HNSW/Flat որպես «ամենամոտ հարևանների ինդեքսը»։

Z-order (Lakehouse/Diabricks )/Cluster keys (Winowflake )/ORDER BY (ClickHouse) - տվյալների բազմաչափ կլաստերիզացիա ավելի լավ կոդավորման համար։

4) Կուսակցության, տեսակավորման, կլաստերիզացիայի

Կուսակցությունը (date/country/brand) 'մեծ (օր/շաբաթ), որպեսզի խուսափի «փոքր ֆայլերի անեծքից»։ Մենք ընտրում ենք բարձր ընտրության դաշտեր WHLS/հասանելիության իրավունքներով։

Կուսակցության մեջ տեսակավորումը '"ORDER BY (occurred _ at, brand, pox)" կամ Z-order' (brand, country, provider) "- այնպես որ min-max և bloom ավելի լավ են աշխատում։

Cluster/Recluster: պարբերական վերափոխում տեղական պահպանման համար։

TTL և retenshn 'հին կուսակցությունների/հատվածների ավտոմատ հեռացում։

5) Նյութականացված գաղափարներ և պրոյեկցիաներ

MV տաք կտրվածքների համար '«payments _ 7d _ by _ brand _ prone», «rounds _ 1d _ by _ provider»։ Աջակցում ենք ռացիոնալ (streaming upser.ru)։

Պրոյեկտները (ClickHouse )/Aggregate tables: Նախնական խմբերը, roll-up մակարդակները (մեկ ժամ 210 շաբաթ)։

Քեշը 'query resortcache/warehouse resortcache-ը կրկնելու համար dashbords-ը (validirum հարցման և տվյալների թարմացման)։

6) Կիսագնդի տվյալները (JSON/VARISA)

Ինդեքսները ճանապարհներով 'international/GIN ինդեքսը json-հետքերով ("$ .device. os`, `$.psp. details. method`).

Կարևոր ատրիբուտների նյութականացումը սյունակներում 'կայուն ֆիլտրերի համար (կոդավորման մեթոդ, սարք, դիմումի տարբերակը)։

Բաների վիճակագրությունը 'ընտրողական պլանի համար բաշխումներ հավաքելը։

7) Տվյալների լճերը ՝ Iceberg/Delta/Hudi/Hudi

Manifest ինդեքսները 'parket ֆայլերի մասին (min-max, national-count, bloom) parterpruning + www.skipping։

Համակարգչային/ֆայլերի միավորումը 'փոքր ֆայլերի ստացիոնար merge «օպտիմալ» չափի (105-1024 MB)։

Clustering/Z-order: Ֆայլերի փոխպատվաստումը հարաբերական դաշտերի համար (օրինակ ՝ «brand, country, occcurred _ at»)։

Corete/Cormate ինդեքսները 'դիրքային բաժանումներ և բլոում, որպեսզի արագացնի merge-on-read։

8) Ինչպե՞ ս ընտրել ինդեքսները 'գործնական չեկ թերթ

1. Հավաքեք առաջին N հարցումները (բեռի 90 տոկոսը) ֆիլտրի/join/group դաշտերը։

2. Յուրաքանչյուր դաշտի համար գնահատեք «sel = 1 - distinct (value )/rows» և կարդինալությունը։

3. Ժամանակը + 1-2 չափումներ կայուն ֆիլտրերով/հասանելի։

4. Տեսակավորումը/keys կլաստերը համաձայն են ֆիլտրերի և join-բեկորների հետ։

5. Ավելացնել bloom կետային id, bitmap ցածր կարդինալության համար։

6. Տաք ագրեգացիաներ MV/պրոյեկցիա։

7. JSON-ի ուղիները պարունակում են ինդեքսներ + նյութականացում։

8. Լճերում 'կոմպակացիա և clustering գրաֆիկի վրա։

9. Մուտքագրեք SLO 'p95-լատենտ, սկանավորվող բայթ/հարցում, skipped-ի մասնաբաժինը։

9) Աջակցություն և ծառայություն

ANLS ZE/վիճակագրությունը 'թարմացրեք կարդինալությունը և հիստոգրամները։ հակառակ դեպքում օպտիմիզատոր «կույր»։

VACUUM/OPTIMIZE/RECLUSTER 'դեֆրագենտացիա և վերարտադրում։

Ինդեքսների օգտագործման իրականացումը '«covering rate», «unused index list», «bytes scanned/bytes skipped»։

Avto-խորհրդատուներ 'պարբերական առաջարկություններ կլաստերի և տեսակավորման վերաբերյալ, հիմնվելով query log-ի վրա։

Ռեգրեսիայի թեստերը 'մինչ նոր դեղամիջոցները, համեմատում են համապատասխան հարցումները և արժեքները։

10) Մետրիկի և SLO ինդեքսավորման

Տեխնիկական ՝ p95/p99 latency, scanned bytes/query, skipped bytes%, medes touched, cache hit-rate։

Տնտեսությունը ՝ դոլար/հարցում, դոլար/դաշբորդ, դոլար/TB սկան։

Վիրահատություններ 'կոմպակտի ժամանակը, վերարտադրման հերթը, «փոքր ֆայլերի» մասը։

Պլանների որակը 'հարցումների մի մասը, որոնք օգտագործում են ինդեքսներ/պրոյեկտներ, կարդինալիզմի ճշգրտությունը։

11) Քեյսներ iGaming (պատրաստի բաղադրատոմսեր)

11. 1 Վճարումներ/PSA ՝ անկում/մերժում

Կուսակցությունը '«by day»։ Տեսակավորումը '«(brand, country, occurred _ at)»։

Bloom: `transaction_id`, `user_id`. Bitmap: `psp`, `status`.
MV: `payments_7d_by_brand_psp(status, declines)`.
Արդյունքը ՝ p95 ռուբլիներ 8-ից։ 2s մինչև 1։ 1s, scanned bytes ↓ на 87%.

11. 2 Խաղային փուլեր ՝ պրովայդեր/խաղ

Z-order / ORDER BY: `(provider, game_id, occurred_at)`.
Projection/agg: `rounds_1d_by_provider_game`.

BRIN (եթե Postgres-նման պահեստ) '«occurred _ at»։

Արդյունքը 'առաջին K խաղեր/ժամ - sub-second տաք քեշի վրա։

11. 3 RG/AML 'սահմանափակումների/ինքնության իրադարձություններ

Bitmap: `rg_state`, `kyc_level`. JSON-path GIN: `$.reason`.

MV: «ակտիվ սահմանափակումներ 30 օրվա ընթացքում» + user մակարդակի նյութականացումը առանց PII։

Արդյունքը 'արագ նմուշներ կոմպլանսի համար առանց fronscan միլիարդ իրադարձությունների։

11. 4 Անտիֆրոդ ՝ երթուղիներ և սարքեր

JSON-ի նյութականացումը բացատրում է սյունակները ՝ "device. os`, `device. model`, `payment. method`.
Bloom: `graph_device_id`. Cluster: `(brand, country, device. os)`.

Վեկտորային ինդեքսը 'էմբեդինգի «դեպոզիտների վարքագիծը 7d» -ը արագ k-NN-ն է նման անոմալիաների համար։

12) Անվտանգությունն ու գաղտնիությունը

Zero-PII-ը ինդեքսավորված դաշտերում և պլանների լոգարաններում։

Կոդավորումը 'ինդեքսները/վիճակագրությունը կոդավորված են այնպես, ինչպես տվյալները։

Ագրեգատների k-անունությունը 'MV/պրոյեկցիաները հրապարակում են միայն NV խմբերը։

Geo/tenault-մեկուսացում 'կուսակցությունը/բանալիները ներառում են «brand/country/license»։

Legal Hold: ինդեքսները/մանիֆեստները նույնպես ընկնում են «սառեցման» մեջ։

13) Anti-patterna

«Ամեն ինչ անընդմեջ» ինդեքսավորումը բացատրում է ծավալի պայթյունը և write-amplifae-ը։

Փոքր կուսակցությունները (ժամ/րոպե) բացատրում են բլոկի փոթորիկը և «փոքր ֆայլերը»։

Տեսակավորման բանալիները, որոնք չեն համընկնում ֆիլտրերի հետ ռուսական զրոյական skipping-ի։

Վիճակագրության բացակայությունը վատ պլաններ է, fronscan։

JSON-ը առանց ճանապարհորդական ինդեքսների և առանց «տաք» ատրիբուտների նյութականացման։

Կոմպակտիայի և recluster-ի անտեսումը 2-4 շաբաթվա ընթացքում դեգրադացիա է։

14) Ձևանմուշները (պատրաստ են օգտագործման համար)

14. 1 Կլաստերիզացիայի/ինդեքսավորման քաղաքականությունը (YAML)

yaml dataset: gold. payments partition_by: ["date"]
order_by: ["brand","country","occurred_at"]
indexes:
bloom: ["transaction_id","user_surrogate_id"]
bitmap: ["psp","status","rg_state"]
materialized_views:
- name: mv_payments_7d_brand_psp group_by: ["brand","psp","status"]
window: "7d"
slo:
p95_latency_ms: 1200 scanned_bytes_per_query_max_mb: 256 maintenance:
compact_small_files: true recluster_cron: "0 /6  "
privacy:
pii_in_index: false

14. 2 Լճի կոմպակտի պլանը (Iceberg/Delta)

yaml compaction:
target_file_size_mb: 512 small_file_threshold_mb: 64 zorder_by: ["brand","country","occurred_at"]
run_every: "PT6H"
max_concurrency: 4

14. 3 Ինդեքսներ JSON դաշտերի համար

sql
-- GIN/inverted index on device attributes
CREATE INDEX idx_device_json ON gold. sessions
USING GIN ((device_json));
-- Materialization of critical pathways
ALTER TABLE gold. sessions ADD COLUMN device_os TEXT;
UPDATE gold. sessions SET device_os = device_json->>'os';
CREATE BITMAP INDEX idx_device_os ON gold. sessions(device_os);

14. 4 SLO ինդեքսների մոնիտորինգի

yaml monitoring:
skipped_bytes_share_min: 0. 70 index_usage_rate_min: 0. 85 stats_freshness_max_hours: 24 small_files_share_max: 0. 10

15) Իրականացման ճանապարհային քարտեզը

0-30 օր (MVP)

1. Լավագույն N հարցումների հավաքումը և սկանավորումը։

2. Սահմանափակումը ամսաթվով + տեսակավորումը, որը կապված է ֆիլտրերի հետ։

3. Միացրեք skipping (min-max) և bloom id դաշտերի համար։

4. Մեկ MV-ը «տաք» մետրիկայի համար (payments 7d)։

5. Dashbord SLI: p95, scanned bytes, skipped, small wines։

30-90 օր

1. JSON-ի ճանապարհները 'ինդեքսներ + նյութականացում։

2. Լիճը 'և Z-order/clustering-ը 2-3։

3. Autosovetich 112/պրոյեկցիա; ANLS ZE-ն։

4. Ռուսական կուսակցությունները (day week) որտեղ «փոքրիկ ֆայլերը»։

3-6 ամիս

1. MV/պրոյեկցիաների կատալոգը տարբերակով և SLA-ով։

2. Վեկտորային ինդեքսները 2019/հակաֆրոդի համար։

3. SLO-ի միասնական քաղաքականությունը և 105 դոլար/հարցում; դեգրադացիայի ալտերտերը։

4. Ինդեքսների գաղտնիության աուդիտը, geo/tenault-մեկուսացումը։

16) RACI

SystePlatform (R) 'կուսակցություններ/ինդեքսներ/բաղադրիչներ, Auto-խորհրդատուներ, ռուսական։

Anport.ru/BI (R): MV/dashbords պրոյեկտներ, հարցումների ավելացում։

Domain Owners (C): «տաք» կտրվածքների և ֆիլտրերի չափանիշները։

Մոսկվա/DPO (A/R) 'գաղտնիությունը, PII քաղաքականությունը, geo/tenault-բանալիները։

MSE/Observability (C): SLO/alerting, կապասիտներ բաղադրիչների համար։

Finance (C) 'բյուջեներ դոլար/հարցում և խնայողություն ինդեքսներից։

17) Կապված հատվածներ

Տվյալների սխեմաները և դրանց էվոլյուցիան, Walidation Ops-ը, API վերլուծությունը և հարաբերակցությունները, API վերլուծությունները և մետրիկը, տվյալների կլաստերիզացիան, չափման նվազումը, MLOps-ը 'մոդելների գործողությունը։

Արդյունքը

Վերլուծական ինդեքսավորումը ռազմավարություն է, ոչ թե «ստեղծել ինդեքսը ամեն ինչի վրա»։ Ճիշտ կուսակցությունները և տեսակավորումը, որոնք պարունակում են skipping և bloom, մտածված MV/պրոյեկցիա և հիբրիդային կոմպակտիա տալիս են արագ և կանխատեսելի հարցումներ վերահսկվող արժեքի և առանց գաղտնիության ռիսկի։ IGaming-ի համար դա նշանակում է վերջնական լուծումներ բյուջեների, պրովայդերների և RG/AML-ի համար, SLA-ի և բյուջեի սահմաններում։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։