OrioleDB arendajad on pakkunud parandusi API-le alternatiivsete PostgreSQL mootorite jaoks.

OrioleDB arendajad analĂŒĂŒsisid PostgresSQL-i tabelite ja indeksite laienduste madaltaseme API hetkeolukorda (Table/Index Access Method (AM) API) ning pakkusid vĂ€lja selle tĂ€iustamise vĂ”imalusi. Alates PostgresSQL 12 kĂ€ivitamisest on sellise API olemasolu vĂ”imaldanud arendajatel luua alternatiivseid andmesalvestusmehhanisme. Kuid hoolimata sellest API-st ja tuntud piirangutest sisseehitatud andmesalvestusmehhanismis, ei ole siiani tĂ€ielikult funktsionaalseid tehingupĂ”hiseid salvestusmootoreid, mis oleksid loodud ainult laiendustena.

PostgreSQL-i alternatiivsete tabelimootorite kÔige nÔutavamad funktsioonid on:

  • Alternatiivsed MVCC-ide rakendused, nagu nĂ€iteks UNDO logide pĂ”hised salvestused.
  • Indeksiga organiseeritud tabelid, kus indeks ei ole tabelile vabatahtlik lisa, mis kiirendab pĂ€ringuid, vaid kujutab endast peamist andmestruktuuri, milles hoitakse tabeli andmeid.

Tabeli/indeksi AM API-sse vajalikud muudatused, et toetada alternatiivseid MVCC rakendusi, kÀsitletakse OrioleDB laienduse kontekstis, mis on loodud sisseehitatud PostgresSQL salvestusmehhanismi tuntud puuduste kÔrvaldamiseks. Probleemiks on see, et OrioleDB tÀielikuks integreerimiseks PostgresSQL-iga on vajalikud muudatused PostgresSQL koodis, mis muudab projekti rakendamise keerulisemaks ja rÔhutab vajadust current Table AM API moderniseerimise jÀrele.

Table AM API ei mÀÀrata otse MVCC rakendamise meetodit. Siiski, Table AM API ja Index AM API teevad jĂ€rgmise eeldamise: iga TID (Tuple/Row Identifier) kas indekseerib kĂ”ikide indeksitega vĂ”i mitte ĂŒhtegi. Isegi kui Index AM-l on mitu viidet ĂŒhe TID-le (nĂ€iteks GIN), peavad kĂ”ik need viidatud vastama ĂŒhele ja samale indekseeritud vÀÀrtusele.

OrioleDB arendajad on pakkunud parandusi API-le alternatiivsete PostgreSQL mootorite jaoks.

Seda pĂ”himĂ”tet on kritiseeritud kirjutamise tegevuste arvu suurenemise tĂ”ttu („write amplification“) — kui uuendatakse ĂŒhte indekseeritud atribuut, tuleb igat indeksit tabelis uuendada. Kui on vajalik tĂ€ielikult Ă€ra kasutada UNDO logi eeliseid vĂ”i ehitada mĂ”ni muu salvestusmeetod, mis ei pĂ”hjusta kirjutamise tugevdamist (nĂ€iteks WARM meetod), tuleb seda eeldust rikkuda.

OrioleDB arendajad on pakkunud parandusi API-le alternatiivsete PostgreSQL mootorite jaoks.

Table AM, mis pĂ”hineb UNDO-l, ei riku seda eeldust ning sarnaneb olemasolevale meetodile HOT (Heap-Only Tuples), vĂ€lja arvatud see, et vanad stringiversioonid hoitakse UNDO logis ja need ei pea mahtuma samasse lehekĂŒlge. Kuid autorite arvates ei piisa sellest eelisest, et pĂ”hjendada eraldi Table AM-i olemasolu.

Praegused API praktilised piirangud:

  • Rea vĂ€rskendamise ajal uuendatakse tabeli indeksid pĂ”himĂ”ttel "kĂ”ik vĂ”i mitte midagi".
  • API Index AM-l puudub vĂ”imalus teatud korthĂ€idete punktikustutamiseks. Praegu saab korthĂ€tteindeksitest kustutada korthĂ€idete massilisi koguseid, kasutades meetodeid ambulkdelete ja amvacuumcleanup. Katse teostada punktikustutamine lĂ€bi selle API tooks kaasa madala efektiivsuse, kuna enamik praeguseid teostusi peab skaneerima kogu indeksi. Lisaks ei vĂ”imalda API mÀÀrata, millised korthĂ€tetest, mis viitavad samale TID-ile, tuleks kustutada. See saab kustutada ainult kĂ”ik.
  • Indeksid viitavad praegu tabeli ridadele ploki numbri (32 bitti) ja nihke numbri (16 bitti) kaudu. Ainult 11 bitti nihke numbrist vĂ”ib TID-st ohutult indeksi juurdepÀÀsu meetoditesse edastada. Samuti vĂ”ivad MVCC alternatiivsete teostuste jaoks olla vajalikud tĂ€iendavate kasuliku koormuse (payload) sĂ€ilitamine koos TID-ga. NĂ€iteks OrioleDB-s on vaja ĂŒhte vĂ”i mitut bitti, et rakendada „delete-marking“ indekseid vĂ”i tĂ€ielikku nĂ€htavuse teavet.

Kaks meetodit piirangute ĂŒletamiseks on ettepanekud:

    LÀhenemine 1: API Index AM pakub vÔimalusi alternatiivseks MVCC teostuseks.

    Kuigi Table AM vastutab kÔigi MVCC komponentide eest, pakub Index AM vajalikud vÔimalused alternatiivse MVCC teostuse jaoks, nimelt: kasutaja kasuliku koormuse (payload) sÀilitamine koos TID-ga, punktikustutamise meetod ja isegi punktivÀrskenduse meetod (kui indeksi TID-d ei saa muuta, vÔib kasutaja kasulik koormus muutuda). Lisaks on vajalik, et mitu indeksi korthÀidjat viitaksid samale TID-le, seetÔttu peavad indeksi skaneerimise ajal kasutatavad API meetodid samuti uuendamist.

    LĂ€henemine 2: Indeksid, mis toetavad MVCC.

    Alternatiiv oleks lubada MVCC toetavaid indekseid. See tÀhendab, et «executor» (vÔi vÔib-olla Table AM) kutsub lihtsalt Index AM-is vÀlja insert() ja delete() meetodid, samal ajal kui Index AM pakub vÔimalust skannimiseks MVCC arvestamisega. See lihtsustaks skannimist kasutades ainult indekseid (index-only) mÀrkimisvÀÀrselt. Isegi kogu Table AM vÔiks sellisel juhul saada vahekihiks, mis talletab andmeid indeksis.

    Alloleval joonisel on nĂ€ide. Indeksi 2 vÀÀrtus vĂ€rskendatakse tehinguga 11 vÀÀrtusest «A» vÀÀrtuseks «B». SeetĂ”ttu on vÀÀrtus «A» mĂ€rgitud xmax == 11 ja vÀÀrtus «B» on mĂ€rgitud xmin == 11. Nii saab skannida indeksit 2 ja saada ainult MVCC kohaseid nĂ€htavaid tuple’ite ilma kuhja (heap) kontrollimata. Indeksi 2 prĂŒgikogu (garbage collection) saate samuti lĂ€bi viia ilma kuhjata.

    OrioleDB arendajad on pakkunud parandusi API-le alternatiivsete PostgreSQL mootorite jaoks.

    Kuna kĂ”igi nende uuenduste rakendamine indeksite juurdepÀÀsu API-sse on keeruline, on ebatĂ”enĂ€oline, et suudetakse kĂ”ik indeksid ĂŒheaegselt tĂ€iendada kĂ”igi uute vĂ”imalustega. Realistlikum oleks lubada ĂŒhe indeksi juurdepÀÀsumeetodi jaoks mitmeid teostusi. NĂ€iteks, tavapĂ€rase B-puuli kĂ”rvale vĂ”iks laiendus rakendada alternatiivset B-puud, mis toetab MVCC-d indeksi sees ja toetab muutujate identifikaatoreid, mille pikkus on mistahes.

    OrioleDB arendajad on pakkunud parandusi API-le alternatiivsete PostgreSQL mootorite jaoks.

    Seega on soovitatav ĂŒle vaadata mitte ainult Table AM API, vaid ka Index AM API, mis on olnud PostgreSQL kogukonna teenistuses aastaid. Veelgi enam, soovitatakse jagada Index AM loogiliseks kihiks ja rakenduse kihiks. See ĂŒmberkehastatud arhitektuur vĂ”imaldab PostgreSQL-l toetada erinevaid salvestusmudeleid.

    Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster