Maglumat bazalaryny köpeltmek we köpeltmek
(Bölüm: Tehnologiýalar we infrastruktura)
Gysgaça gysgaça
iGaming-platformalar üçin traffigiň ösüşi (nyrhlar, goýumlar, PSP webhuklar, oýun wakalary) we elýeterlilik talaplary (99 ≈. 9–99. 99%) çalt bir DB çägine geçýär. Replikasiýa okamagyň gorizontal masştabyny we şowsuzlyga çydamlylygy berýär; sharding - ýazgylaryň we maglumatlaryň gorizontal masştaby. Açar - PACELC-iň aňly eglişikleri (ret edilenden soň: CA/P, ýogsam: Latency vs Consistency), aýdyň SLO we shemalaryň/açarlaryň tertibi.
Termini we modelleri
Köpeltmek - düwünleriň arasynda maglumatlary göçürmek.
Leader-Follower (Primary-Replica): bir ýazgy → köp okalýar.
Multi-Leader (Active-Active): birnäçe sebitlerde ýazgylar, gapma-garşylyklar/merj.
Consensus-replication (Raft/Paxos, NewSQL): kworum ýazgylary (Cassandra/Scylla - AP-kworumlar, CockroachDB/Yugabyte - CP-kworumlar).
Sync/Semi-sync/Async: gijikdirme balansy vs RPO.
Şarding - tablisalaryň/açarlaryň şardlara gorizontal bölünmegi.
Hash-sharding (birmeňzeş, has çylşyrymly diapazonlar).
Range-sharding (açar aralyklary, "gyzgyn" uçlaryň töwekgelçiligi).
Consistent hashing (ýumşak nod goşmak/azaltmak).
Geo-şarding (sebit/ýurisdiksiýa boýunça).
Funksional şarding (domen boýunça: tölegler/nyrhlar/CRM).
iGaming-de haçan we näme saýlamaly
Diňe köpeltmek (şardingsiz) - esasy mesele okalanda: wakalaryň lentalary, hasabatlar, köpçülige açyk kataloglar. Ýazgylar bir lidere, okamak bolsa replikalardan ýerleşdirilýär.
Şerding - haçan-da ýazgynyň/saklamagyň dar ýeri: nyrhlaryň akymy, balanslaryň amallary, trigger wakalary.
- Oýunçylara gizlinlik/PSP → replikalardan lokal okamak.
- Düzgünleşdiriji (maglumatlaryň lokalizasiýasy) → geo-sharding.
- Sebitara DR → asinxron göçürmesi + geçiş meýilnamasy.
PACELC we kepillik aýratynlyklary
CAP: bölünen torda C (yzygiderlilik) ýa-da A (elýeterlilik) saýlaýarys.
PACELC: şowsuzlyklar bolmadyk halatynda Latency (L) we Consistency (C) arasynda saýlaýarys.
Pul ýollary (balans, hasapdan çykarmak): adatça C-gönükdirilen (CP/strict serializable или Serializable + business-idempotentlik).
Az kritiki kiçi ulgamlar (basmalar, kataloglar): L-gönükdirilen (AP/EC, eventual).
Köpeltmek: amallar
Leader–Follower
Ýazgylar → lider, okamak → göçürmeler (okamak).
Read-after-write: ulanyjy amallary üçin liderden okaň ýa-da lager garaşyň (barlamak 'last _ committed _ lsn '/' wait _ for _ replay _ lag').
Kritiki ýollarda semi-sync (RPO-ny gizlinlik bahasyndan azaltmak).
Failover: awtomatiki (patroni/raft-koordinator) + fencing (goşa lider bolmazlygy üçin).
Multi-Leader
Bölünen domenler we pes gapma-garşylyk üçin amatly (mysal üçin, mazmun/sazlama), ýöne ýörite çäreler bolmazdan oýunçynyň ýeke-täk hasaby üçin däl.
Merj syýasaty: last-write-wins, CRDT, konsolidasiýa domen düzgünleri.
Consensus/Kworum DB
Kworum bilen ýazgy (mysal üçin, 'WRITE QUORUM'), kworum bilen okamak ('READ QUORUM') → güýçli/sazlanyp bilinýän yzygiderlilik.
AZ/sebitler arasyndaky gizlinligi we kworumyň bahasyny göz öňünde tutuň.
Şarding: strategiýalar we açar saýlamak
Açary nädip saýlamaly
player_id/ account_id/ bet_id boýunça durnukly paýlanyş.
Range-çardingde monoton açarlardan (auto-increment) gaça duruň - "gyzgyn" guýruk.
Tölegler üçin - köplenç 'player _ id' ýa-da 'account _ id'; bloglar üçin - 'event _ time' + bucketing; mazmun üçin - 'tenant _ id'.
Strategiýalar
player_id boýunça hash-şarding: nyrhlaryň/balanslaryň akymynda balans.
Analitika/arhiw üçin range-sharding.
Geo-şarding: EU-oýunçylar → EU-şard (ýerli kanunlara laýyklyk).
Gibrid: sebitiň içinde hash + ýurisdiksiýa boýunça geo.
"Gyzgyn" açarlara garşy göreş
Key-salting (açara duz/bucket goşmak).
Write-throttling.
"Agregatlary" (balansy) yzygiderlilik nobaty bilen aýratyn depginde materiallaşdyrmak.
Çapraz-şard amallary
Pul geçirimleri/öwezini dolmalar: gyzgyn ýollarda 2PC gaça durmak.
Saga-pattern: ýerli amallara bölmek + öwezini dolmak hereketleri, berk idempotentlik we outbox.
2RS/kommit teswirnamalary: nokat (arka-ofis batçlary) bilen rugsat berilýär, ýöne gizlinlik we şowsuzlyga çydamlylyk boýunça gymmat.
Proýeksiýalar: akymdan täzelenýän domen ekranlary üçin okalýan çykyşlar (read models).
Shemalar, indeksler we ewolýusiýa
Shemany wersiýalaşdyrmak: kodda back-compat, feature-flags bilen göçmek.
Şardlamak açarlary we ýygy-ýygydan haýyşlar boýunça indeksler; cross-shard join-den gaça duruň (pre-join/denormalizasiýa ediň).
JSON/dok-saklaýyş üçin - "şowhunly" kolleksiýalar üçin shemalary (JSON-Schema/Protobuf) we TTL tassyklaň.
Onlaýn masştablamak we resharding
N ≫ wirtual şardlaryň (slots) häzirki sanyny meýilleşdiriň → çeýe deňagramlylyk.
Düwünleri ýumşak goşmak üçin "consistent hashing" ýa-da "wirtual node".
- goşa ýazgy (köne + täze şard), yzygiderliligi tassyklamak;
- çankalaryň fon nusgalary (logical dump/table move/streaming clone);
- "bellik" boýunça geçiş + gözegçilik penjiresi, soňra goşa ýazgyny aýyrmak.
- Lideriň iş wagty bolmazdan hereket etmegi: rollary üýtgetmek, konnekşenleri zeýkeş etmek.
SLO, gözegçilik we alerting
SLO ýazmak/okamak: p99 ≤ X ms gyzgyn tablisalarda, rugsat berilýän lag replikalar ≤ Y sekunt, elýeterlilik ≥ Z.
Metrikler: TPS, p95/p99, replication lag, gapma-garşylyk (multi-leader), retry rate, deadlocks, lock wait, cache hit ratio, IOPS/latency disk.
Tracking: DB soraglarynda 'trace _ id', broker/waka şinasy bilen baglanyşdyryň.
Irki zaýalanma ýüze çykarmak üçin kanareýa soraglary we synthetic transactions.
Howpsuzlyk we talaplara laýyklyk
Asuda we tranzit şifrlemek (TLS), açarlaryň aýlanmagy.
RBAC/ACL, domenler/tenantlar boýunça segmentasiýa, tölegler/KUS üçin aýratyn klasterler.
Maglumatlaryň lokalizasiýasy (EU/TR/LATAM) - geo-şarding we retensiýa syýasatlaryny birleşdiriň.
Audit: kim we näme okady/düzgünleri; PII gizlemek; auditiň eksporty.
Arkalar, PITR, DR
Doly + içerki ekaplar, ofsaýt-ammar.
Öňdebaryjy klaster üçin PITR (nokat-in-time recovery).
- Möhüm domenler (balans/töleg) - RPO ≈ 0-30c (semi-sync ýa-da ýygy-ýygydan WAL-şipping), RTO awtomatiki failover bilen ≤ minut.
- Az kritiki - RPO minutlara/sagada çenli.
- DR-maşklar (game day) we dokumentleşdirilen geçiş runbook.
Öndürijilik we sazlama (gysgaça)
Ýat/kesmek: buferleri ulanyň (shared buffers/innodb buffer pool), 95% ≥ cache-hit yzarlaň.
Magazine/hereketlendiriji: WAL/redo üçin aýratyn jilt bolan çalt NVMe.
Baglanyşyk howuzy (PgBouncer/Hikari).
Meýilleşdiriji/statistika: awtowanaliz/awtowakuwum (Postgres), kompaksiýa/sazlama GC (LSM-hereketlendirijiler).
Kworumlar/replika-faktor: p99 bilen şowsuzlyga çydamlylygyň arasyndaky deňagramlylyk.
iGaming üçin adaty topologiýalar
1) Balanslar we tölegler (CP-kontury)
Oýunçynyň sebitindäki Leader-Follower, ýakyn replika semi-sync.
Hash-sharding 'account _ id'.
"Ýazylandan soň" okamak - liderden; API-latency üçin Redis proýeksiýalary.
Outbox → hasaplamalar/analitikler üçin wakalaryň tekeri.
2) Jedelleriň taryhy/oýun wakalary (AP gönükdirilen log)
Range-sharding ýa-da hash 'player _ id' sütünli/LSM-ammarda.
Hasabat üçin asinxron göçürmeler/OLAP.
Eventual consistency kabul ederlikli, has möhüm geçiriş ukyby.
3) Profiller/CRM (Köp sebit okamak, lokalizasiýa)
Ýurisdiksiýa boýunça geo-şarding, okamak üçin lokal bellikler.
Iň ýakyn lider arkaly ýazgylar; kross-sebit - asinhron + konfliktleri diňe kritiki däl ýerler üçin çözmek.
Mysallar (konseptual)
Postgres: 'player _ id'
sql
CREATE TABLE player_wallet (
player_id BIGINT NOT NULL,
balance_cents BIGINT NOT NULL,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (player_id)
) PARTITION BY HASH (player_id);
CREATE TABLE player_wallet_p0 PARTITION OF player_wallet FOR VALUES WITH (MODULUS 32, REMAINDER 0);
--... p1..p31
-- Репликация: публикация WAL на реплики, синхронность для «горячего» региона.
ALTER SYSTEM SET synchronous_standby_names = 'FIRST 1 (replica_eu1, replica_eu2)';
Kworum ýazgysy (psevdo)
WRITE CL=QUORUM -- запись подтверждена большинством реплик
READ CL=LOCAL_QUORUM -- локальный кворум для низкой задержки
2PC ýerine saga (ýönekeý)
1. Şard-A (idempotent) depozitini ýazmak.
2. "Aýryldy" çäresini iberiň → töleg hyzmaty (şard-B).
3. Eger 2-nji ädim şowsuz bolsa - 1-nji ädimiň öwezini "yzyna gaýtarmak" wakasy bilen dolmak.
Giriş barlagy
1. Maglumat domenlerini we SLO (p99, RPO/RTO, lag replica) kesgitläň.
2. Köpeltmek modelini (leader/follower, kworum) we şarding strategiýasyny saýlaň.
3. Çarding açarlaryny we shemasyny düzüň (üýtgemez!).
4. Okamak syýasatyny we okamak ugruny okaň.
5. Onlaýn-resharding (wirtual şarlar, goşa ýazgy).
6. Wakalar/buýruklar üçin deňligi we outbox kepillendiriň.
7. Arkaplary, PITR, DR we yzygiderli maşklary sazlaň.
8. Syn edilişini açyň: lag, kworumlar, gyzgyn açarlar, gapma-garşylyklar.
9. Runbook: failover, split-brain, degradasiýalary dokumentleşdiriň.
10. Duşuşygyň iň ýokary nokatlarynda ýüklemek/bulam-bujarlyk synaglaryny geçiriň.
Antipattern
Bir äpet şard "hemme zada" we "soň keseris".
Soragyň gyzgyn ýolundaky çapraz-şard join's.
read-after-write syýasatynyň ýoklugy (ýüzýän bökdençlikler).
Şemalaryň göçmegi "döwýän" şarding açarlary.
Konfliktleri berk çözmezden pul hasaplary üçin multi-leader.
PITR/DR ýok - logiki ýalňyşlykdan gutulmak mümkin däl.
Netijeler
Replikasiýa okamagy we şowsuzlyga çydamlylygy, şarding - ýazgylary we göwrümi çözýär. "iGaming" -iň üstünlikli arhitekturasy aýdyň SLO we PACELC eglişikleri, durnukly şarding açarlary, iň az çapraz-şard utgaşdyrylmagy (2PC ýerine saga), read-after-write düzgün-nyzamly, onlaýn-resharding we yzygiderli DR-maşklarydyr. Bu çemeleşme ýaryşlaryň iň ýokary derejesine ýetýär, maglumatlaryň lokalizasiýasy boýunça kadalaşdyryjy çäklendirmelere çydam edýär we ulanyşda öňünden aýdyp bolýar.