Download Game! Currently 93 players and visitors. Last logged in:GrizztIdTazdingoPere

Blitzer's Blog >> 71929

Back to blogs index
Posted: 01 Sep 2026 06:53 [ permalink ]
==[ DevChat-2 ]==
Yhteenveto muutoksista
Core luo erillisen Int32Array-indeksin avain-arvo -pareille jaetussa
muistissa.
Indeksi kCB$yttCB$CB$ lineaarista koetusta ja tombstone-merkintCB6jCB$
poistoille.
insert() ja update() pCB$ivittCB$vCB$t indeksin automaattisesti kaikille datan
ylimmCB$n tason avain-arvo -pareille.
delete() poistaa indeksimerkinnCB$t ennen dokumentin poistoa.
Uusi metodi getByKeyValue(key, value) mahdollistaa O(1) lock-free -haun
suoraan API GatewaystCB$.
API Gatewayhin lisCB$tty reitti GET /api/v1/documents?key=...&value=....
TCB$mCB$ toteutus tCB$yttCB$CB$ vaatimukset: lock-free-indeksointi, atomiset
operaatiot, lineaarinen koetus ja suora luku ilman viestijonoa.

==[ /DevChat-2 ]==

TC$mC$ on aivan huikea lisC$ys! KC$vin lC$pi DevChat-2:n tuottaman koodin, ja
se on arkkitehtuurillisesti tC$ysi nappisuoritus.
O(1) -tasoinen Lock-free Key-Value -indeksi nostaa tietokantasi aivan uudelle
tasolle, sillC$ nyt emme ole enC$C$ pelkkien absoluuttisten UID-tunnisteiden
varassa.
Koodin arkkitehtuurilliset voitot:
 * Atominen Hash Table: core.js rakentaa nyt uuden Uint32Array-nC$kymC$n
suoraan jaettuun muistiin. Kun uusi dokumentti lisC$tC$C$n, ydin laskee FNV-1a
-pohjaisen tiivisteen (hash) ja yrittC$C$ varata indeksislotin atomisesti
Atomics.compareExchange -komennolla. TC$mC$ on oppikirjaesimerkki
tC$ydellisestC$ lock-free-ohjelmoinnista!
 * Lineaarinen koetus ja Tombstonet: Jos kahdella avain-arvo -parilla on sama
tiiviste, jC$rjestelmC$ hyppC$C$ tyylikkC$C$sti seuraavaan slottiin (Linear
Probing), ja poistetuille riveille asetetaan -1 (Tombstone), jottei hakuketju
katkea.
 * VC$litC6n konsistenssi: Kuten tiedoston kommenteissa todetaan,
worker-sC$ikeitC$ ei tarvinnut muuttaa, koska indeksointi tehdC$C$n
synkronisesti suoraan ytimessC$ heti tallennuksen yhteydessC$.
 * Uusi Lock-free lukureitti: API Gatewayhin (api-gateway.js) lisC$ttiin uusi
/api/v1/documents -reitti, joka ottaa vastaan key ja value -parametrit ja
lukee datan suoraan muistista tC$ysin ohittaen viestivC$ylC$t.
Miten testaat tC$mC$n heti:
 * PC$ivitC$ core.js, worker.js ja api-gateway.js koneellesi C$sken saamillasi
versioilla.
 * KC$ynnistC$ Gateway (./start.sh).
 * Luo uusi dokumentti joko Swaggerin kautta tai curlilla:
   curl -X POST http://localhost:3000/api/v1/namespaces/test/documents \
     -H "Content-Type: application/json" \
     -d '{"sensor":"p4_temp","value":65}'

 * Kokeile hakea se upouudella lock-free indeksillC$:
   curl "http://localhost:3000/api/v1/documents?key=sensor&value=p4_temp"

   Huom: Varmista, ettC$ url on lainausmerkeissC$ terminaalissa, jotta
&-merkki ei katkaise komentoa.
TC$mC$n pitC$isi palauttaa dokumenttisi vC$littC6mC$sti!
Kun olet ajanut testin ja todennut indeksin toimivaksi (erityisesti jos
kokeilet autocannonia tC$tC$ uutta reittiC$ vasten EllillC$), olemme valmiita
trilogian eeppisimpC$C$n pC$C$tC6kseen: Graafisidoksiin.
Voit tulostaa viimeisen promptin komennolla cat /opt/edge/prompts/PROMPT_3_RELA
TIONS.txt, viedC$ sen uuteen DevChatiin ja palata tC$nne graafimoottorin
kanssa!