OrioleDB arendajad pakuvad vÀlja parandusi PostgreSQL alternatiivsete mootorite API-le.

OrioleDB arendajad analĂŒĂŒsisid PostgreSQL-is tabelite ja indeksite laienduste juurdepÀÀsu jaoks kasutatava madala taseme API praegust seisundit (Table/Index Access Method (AM) API) ja pakkusid vĂ€lja selle tĂ€iustamise vĂ”imalusi. Alates PostgreSQL 12 tutvustamisest on arendajatel olnud vĂ”imalus luua alternatiivseid andmesalvestusmehhanisme. Siiski, hoolimata selle API olemasolust ja sissetuleva salvestusmehhanismi tuntud piirangutest, ei ole siiani tĂ€ieliku funktsionaalsusega tehingute salvestusmootoreid, mis oleksid rakendatud ainult laiendustena.

PostgreSQL alternatiivsete tabelimootorite jaoks on kÔige nÔudlikumad funktsioonid:

  • MVCC alternatiivsed teostused, nĂ€iteks UNDO ĆŸurnali pĂ”hised salvestused.
  • Indeksiga korraldatud tabelid, kus indeks ei ole tabeli tĂ€iendav funktsioon, mis kiirendab pĂ€ringute tĂ€itmist, vaid kujutab endast peamist andmestruktuuri, kus tabeli andmeid sĂ€ilitada.

API Table/Index AM-i jaoks vajalikud muudatused MVCC alternatiivsete rakenduste toetamiseks arutatakse OrioleDB laienduse kontekstis, mis on vÀlja töötatud PostgreSQL-i sisseehitatud salvestusmehhanismi tuntud puuduste kÔrvaldamiseks. Probleem seisneb selles, et OrioleDB tÀielik integratsioon PostgreSQL-iga nÔuab muudatusi PostgreSQL-i koodis, mis muudab projekti rakendamise keeruliseks ja rÔhutab vajadust praeguse API Table AM-i moderniseerimise jÀrele.

API Table AM ei sea MVCC rakenduse ĂŒleloomulikke nĂ”udmisi. Siiski, API Table AM ja API Index AM eeldavad jĂ€rgmist: iga TID (Tuple/row Identifier) on kas indekseeritud kĂ”igi indeksite poolt vĂ”i ĂŒldse mitte indekseeritud. Isegi kui Index AM-l on mitmeid viiteid ĂŒhe TID-iga (nĂ€iteks GIN), peavad kĂ”ik need viited vastama ĂŒhele ja samale indekseeritud vÀÀrtusele.

OrioleDB arendajad pakuvad vÀlja parandusi PostgreSQL alternatiivsete mootorite API-le.

Seda pĂ”himĂ”tet kritiseeriti, kuna see suurendab kirjutamisoperatsioonide arvu („write amplification“) — kui uuendatakse ĂŒhte indekseeritud atribuuti, tuleb iga tabeli indeks uuendada. Kui soovitakse tĂ€ielikult kasutada UNDO logi eeliseid vĂ”i luua mĂ”ni muu salvestusmeetod ilma „kirjutamise suurenemiseta“ (nt WARM meetod), tuleb seda eeldust rikkuda.

OrioleDB arendajad pakuvad vÀlja parandusi PostgreSQL alternatiivsete mootorite API-le.

UNDO-l pÔhinev Table AM, mis ei rikuks seda eeldust, meenutab olemasolevat HOT (Heap-Only Tuples) meetodit, vÀlja arvatud see, et vanad ridade versioonid salvestatakse UNDO logis ja ei pea mahtuma samasse lehte. Kuid autorite arvates ei ole see eelis piisav, et Ôigustada eraldi Table AM olemasolu.

Praeguste API praktilised piirangud:

  • Tabeli ridade uuendamise ajal uuendatakse indekseid „kĂ”ik vĂ”i mitte midagi“ pĂ”himĂ”tte jĂ€rgi.
  • API Index AM-is puudub vĂ”imalus eemaldada kindlaid ridasid. Praegu saab ridu massiliselt eemaldada indikaatoritest meetodite ambulkdelete ja amvacuumcleanup kaudu. Katse rakendada punktide eemaldamist lĂ€bi selle API tooks kaasa madala efektiivsuse, kuna enamik praegustest rakendustest peavad kogu indikaatori skaneerima. Lisaks ei vĂ”imalda API mÀÀrata, millised rida, mis viitavad samale TID-le, tuleks eemaldada. See suudab eemaldada ainult kĂ”ik.
  • Indeksid viitavad praegu tabelite ridadele ploki numbri (32 bitti) ja nihke numbri (16 bitti) kaudu. Ainult 11 bitti nihke numbrist saab turvaliselt edastada TID tabelist kĂ”igisse indeksi juurdepÀÀsumeetoditesse. Sellega seoses vĂ”ivad alternatiivsed MVCC rakendused vajada tĂ€iendava laadimise (payload) salvestamist koos TID-ga. NĂ€iteks OrioleDB nĂ”uab indeksi „delete-marking” rakendamiseks ĂŒhe vĂ”i mitme bit’i sĂ€ilitamist vĂ”i tĂ€ielikku nĂ€htavuse teavet.

Pakkuda on kaks vĂ”imalust, kuidas piirangutest ĂŒle saada:

    LÀhenemine 1: API Index AM pakub vÔimalusi alternatiivse MVCC rakendamise jaoks.

    Kuigi Table AM vastutab kĂ”igi MVCC komponentide eest, pakub Index AM vajalikku tuge alternatiivse MVCC rakenduse jaoks, nimelt: kasutaja kasuliku koormuse (payload) salvestamine koos TID-ga, punktide kustutamise meetod ja isegi punktide uuendamise meetod (kui TID indeksis ei saa muudetud, siis kasutaja kasulik koormus – saab). Lisaks, kuna on vajalik lubada mitmetel indeksikorteritel viidata samale TID-le, vajavad indeksiskannimise ajal kasutatavad API meetodid samuti uuendamist.

    LĂ€htekoht 2: MVCC-d toetavad indeksid.

    Alternatiiv oleks lubada MVCC-d toetavad indeksid. St «executor» (vÔi vÔimalikult Table AM) kutsub lihtsalt Index AM-is vÀlja insert() ja delete() meetodid, samas kui Index AM vÔimaldab skaneerimist, arvestades MVCC-d. See lihtsustaks oluliselt skaneerimist, kasutades ainult indekseid (index-only). Isegi kogu Table AM vÔiks sellisel juhul olla vahekiht, mis salvestab andmeid indeksis.

    Allpooli nĂ€idatakse allolevas diagrammis. Indeksi vÀÀrtus 2 uuendatakse tehinguga 11 vÀÀrtuselt "A" vÀÀrtusele "B". SeetĂ”ttu on vÀÀrtus "A" mĂ€rgitud kui xmax == 11 ja vÀÀrtus "B" kui xmin == 11. Nii saab indeksi 2 skaneerimist teostada ja saada ainult nĂ€htavaid tuple'e vastavalt MVCC-le, ilma kuhja (heap) kontrollideta. Indeksi 2 prĂŒgikogu vĂ”ib samuti toimuda ilma kuhi kasutamiseta.

    OrioleDB arendajad pakuvad vÀlja parandusi PostgreSQL alternatiivsete mootorite API-le.

    KĂ”igi eespool toodud uuendustega indeksimeetodite API-s on vĂ€hetĂ”enĂ€oline, et kĂ”ik indeksid suudetakse samal ajal tĂ€iustada, et toetada kĂ”iki uusi funktsioone. Realistlikum on lubada mitmeid rakendusi ĂŒhe indeksi meetodi jaoks. NĂ€iteks vĂ”iks lisaks tavalisele B-puule laiendus rakendada alternatiivset B-puud, millel on oma indeksis MVCC tugi ja muutuva pikkusega kirje identifikaatorite tugi.

    OrioleDB arendajad pakuvad vÀlja parandusi PostgreSQL alternatiivsete mootorite API-le.

    Seega soovitatakse lĂ€bi vaadata mitte ainult API Table AM, vaid ka API Index AM, mis on aastate jooksul hĂ€sti teeninud PostgreSQL kogukonda. Veelgi enam, soovitatakse jagada Index AM loogiliseks kihiks ja rakenduskihiks. See ĂŒmbermĂ”eldud arhitektuur vĂ”imaldab PostgreSQL-l toetada erinevaid salvestusmudeleid.

    Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster