takže dobrý den je mě slyšet

výborně

push tady bylo změnovému se to máš ondra pracuje společnosti data

kde budeme vlastně

ku byznys intelligence platformu kde velkou část

moc ne

těch výpočtů a tak dále děláme o stresu takže proto

tady budu mluvit o stresu kromě toho se podílel nějakým způsobem

na vývoj postgres u

posílal patch a podobně

potil se na organizaci konferencí evropské chci českej

a pokud byste měli jako taky dotaz který se to týká

a když práce fu data nebo

interakce s komunitou tak klidně se na mě obraťte

to je ta přednáška je primárně o novinkách ve verzi byly čtyři která by měla

s nevím během každý

několika málo dní

maximálně řekněme měsíce bych tak očekával

s toho důvodu vlastně čerpáte řízení zdrojů počínaje který sou dvě čtyřky který sou že

s dostupný na internetu

před pár článků pavlas ty vole

kterýho možná taky znáte je to vlastně současnej kolega zvu data

a takový store český pozdě se call komunity

ten článek vyšel z květnu dva tisíce patnác takže sou tam některý jako na aktuální

informace na který upozorněn

a současně čerpá z nebo ta moje přednáška čerpá

z prezentace kterou měl matný zaveden trest že prezident evropský

je ze grupy postgres u

na evropských konference

já jsem si na evropský konferenci která se konala

čtrnáct dní zpátky tak bylo spousta přednášek o těch novejch featurách který sou vlastně dycky

pro tu komunitou nejzajímavější

takže ty přednášky jsou dostupný většinou na věky

ta holka se nula

no když jsem se zmínil o ty evropský von francie tak

netradičně brzo byla znamená

vlastně lokace toho dalšího

tu

co šije velmi blízko vlastně za rohem

vídeň

takže pokud vás zaujímá

znamená postgres nebo

vy ste se chtěli zúčastnit velmi příjemný akce tak si dejte do kalendáře dvacátýho sedmýho

až třicátýho října

na příští rok

kdyby jako je to pro vás bylo to moc daleko nebo ste měli problém s

jazykem

protože všechny ty přednášky tam by wifi dyšně tak vlastně za

krásný

se koná české mít a

český lze dupy

tradičně

o s tím cestu bliká vpravo ze takže pokud razíte

bude to velmi levná se rádi tam uvidíme začínat osumnáct třicet ale na začátku je

nějaký organizační povídání který se týká se resp kubu takže dyž zobrazíte pozdějc tak určitě

pivo jako nebude eště vyčerpaný

a můžeme se tam popovídat o

postgres

tak

s je sestavena ty předchozí přednášce kromě honza horách tak já bych si dovolil jednu

drobnou opravu tam bylo opakovaně zmiňoval můžem meinl verze vychází

po roce a tak dál jako

to vychází tak jo trošku je to zmatený ho verzováním postgres úterý to dělá jako

jinak

protože tam se za miner verzi označuje než ta poslední tak devět tři pět pojem

a jiné verze a ty vychází zhruba co měsíc nebo dva měsíce podle toho jak

se opraví barvy a podobně

to co vychází po roce

tomu se říká major verze pauzu ty první dvě čísla

takže aktuální major verze je devět tři

a to první číslo

se zvyšuje jenom kdyžtak objeví nějaká super bomba featura na kterou všichni čekáme

no takže prostě dyž se objevila replikace zabudovaná postgres u

vstoupil se řeklo nýbrž to nebude osum pět ale bude to devět nula

to až se objeví další super bomba

ta příšera na kterou všichni čekáme

multimaster aplikace barvy partition i o cokoliv tam prostě bude prvního

tak se tomu

povýším na deset nula

tak

hele bysme asi trošku sjednotili se v neděli názvosloví

co se týká trade věštecké což je ta verze natolik to všichni čekáme

akorát to já doufám že vy

tak

tam je kousek oříznu tajidle tam je dvojka lidské na začátku samozřejmě

a

to začalo ten vývoj začali by zhruba

v červnu

dva tisíce předáci jsem oprašovala devět tolika

začalo se pracoval jako na releasů na beta verzích a podobně

no

pak probíhá něco čemu se říká komise si to že takový jako

hurá akce kdy se vezmou peče který se pošlu

do

konference

ale tam se dělat review začal se to fixovat

začne se

to komentovat do databáze nebo do repozitář a podobně

ty probereš dva čtyři

každý ten komické stereo dvouměsíční plus mínus

no a to probíhalo až někdy do ledna do

dobu na

dva tisíce čtrnáct jsou další čistý s

řekl osa

tydle verzi

provoz tomhle stavu jak to je ty featury který se tam dostali tak budoucí devět

čtyřce a budem jenom fixovat bagy který objevíme během beta verzi

ty betaverze byly tři

ta třetí nebyla myslim deklarovaná ale girls nějakej problém co

von implementaci toho nových ho datovýho

typu že jsem od že jsem ví

takže toto trošku pozdrželo a ta poslední betaverze vyšla

na začátku října

antikleri v listopadu se očekává vydání

tý finální verze

tak takže uzavře tak si tudle chvíli vlastně aktuální beta trojka pokud máte aplikaci nebo

pokud máte dost nějaký

nástroj který pracujou s postgres řekl tak je to ideální způsob jak to otestovat praxi

jednak sylvestre to působí aplikaci

z hlediska kompatibility ale tam bych jako neočekával

nějaký problémy spíš jako je setřást postgres u nějaký featury ne byla zavlečena chyba která

se no neobjevil vtom dosavadním testování

a když automatizovaný nebo uživatelském

tak trocha statistiky

bylo změnil jejich já ti dva tisíce dvě stě dvacet dva souborů

sto třicet

tisíc nový řádek

šedesát tisíc řádek zhruba bylo vymazanejch

tohle to je zase statistika stará

taky dva měsíce

a

ty fixy který se posílal ještě do tý beta trojky tam teda jako nejsou

je to o trošku míň dyž devět tolika a

jako

bukem si to všichni víme

ne lines of dvou je super

jako metrika podle kterých se dá velmi spolehlivě měřit produktivita

tu ta týmu takže

to je celkem jedno

se podíváte na ňákej

a ho

jak se tomu původně menovalo

dneska se to přejmenovalo na openhub se

dále kolik let eště měl

tak tam je vidět že tě keksů je zhruba za posledních pět let

plus mínus stejně takže ta aktivita ta komunita jako funguje velice slušně

a víceméně

to sem se pošle za nový featury

to se dá koupit no

tak

co se týká ty vlastnosti taky hrozně moc tedy dyž přepnu na chvilku

do waylandu rostu do

jsou který sou ty dost nám chybí kousek nějakýho důvodu

no a

když bude prosperovat dle to sou všechno

nový featury a nebo opravy nebo vylepšení a tak dál takže není šance

tady během pět a štyryceti minut

všechno projde to je do detailů takže já jsem si vybral to co se myslím

že nejzajímavější

rozjel jsem to tady nějakej čtyř kategorií

vývojářský s vlastnosti jsou ty první samé podívejme

tak první co se vám jako vylepšilo tak sou různý

věci ohledně agregační funkce

a

zde trojice směr do ty dvě čtyřky když ste chtěli dělat podmíněný součty nebo podmíněný

agregace teďka mám tady prostě sumou

tady tabulku splátka má

a zajímá mě prostě

suma lidí který jsou pod pětadvacet let suma platů který jsou na pětadvacet let

tak ste museli desetkrát nějaký takovýdle podmíněný casy

zanoření a ve chvíli kdy ty podmínky byly složitý tak jako

sláva

to co je devět čtyřce tak je

zpocené jako jednoduchej

formát

dva se tu podmínku píšete

do klauzule filtr

a mělo by to bejt jako rychlejší to není to jenom jako

pro zvýšení

čitelnosti toho kódu

ale výkon

no takže

velice užitečný tam je který dělaj jako analytický aplikace který dělaj právě spoustu validaci tohodle

typu

tak se to nemůže vynachválit

druhá věc je

liberce tady de s znamená agregační funkce který pracujou na setříděny vstupu

no

u spousty aplikací novou spousty agregaci to jako nedává smysl no tak když máte sumu

takže ten první zvýrazněny případ tak vy si teda můžete napsat takové podrbané se a

vono vám to sečte to béčko ale ten s to setříděně a to nemá jako

žádnej vliv že to prostě

je pěkný že to umíme

k ničemu to moc není

kde to dává větší smysl také agregace

typu

se změny to do pole jahod to prvky tak tam už jako na tom pořadí

může nějakým sme s jakým stylem záležet

to je ten druhý případ

nicméně tohle to prostě neni toto je něco co sme měli jako dycky i před

tou devět čtyřkou to tohleto nejsou rubrice tady věc

jsou standardní agregační funkce kterým prostě

já to setřídí ten

pak ten sloupec se zahodíte a pošlete tomu jenom

ten sloupec ve

setříděné je podle toho c

před jako

je celkem pochopitelný

no předělejte od srdce tady věc to je situace kdy

a

třeba delším funkce který jinak než nesetříděném vstupů si nedávaj smysl

když potřebujete spočítat třeba percentil

typicky media

tak potřebujete ten s tou před řídit

a

teprve poté slovo můžete vzít prostřední prvek že takže to je ten medián

nula

to je přesně to co dělejte porce tady věc

který dostává jednak nějakej příjmy a kde přímej

parametr začátek nula celá pět protože chci media

jo

a potom dostávají nějakou

setříděnou

setříděny

sloupec nebo setřídění hodnoty toho bene

podle mne

tady s tomhletom případě jako je chtěl se to liší je že to béčko se

nezahojí se to setřídí podle toho b

a pak se to ty hodnoty pošlu

do

redakční funkce

sami nebo

pracuje věc indukcím na v rámci té grupy

jaké to teda sekané

podle toho a takže

co umí postgres jako takový

tohle to samozřejmě prosím vás součástí standa porsche jo

to co je to trošku proprietární rozšíření postgres u je že je tam můžete těch

těch hodnot

poslat víc tomhle případě

tam můžete poslat prostě

tři hodnoty třeba

a vám to spočítá kvartily

stě hodnotu znamená

první čtvrtinu polovinu

tři čtvrtě

kvapil

a

šetří to

paměť je to výkonnější protože se ty hodnoty nemusí schraňoval několika kopií

no

máte tam nějaký dotazy

jako

když sem to nedočet dokumentace jak jsem řekl prostě musel číst asi pětkrát než jako

došlo je tak to funguje

no

těch radši funkcí

který tam sou

tak je

a taky několik je tam percentil diskrétní nebo prostě

souvisle jedna

průměrovaly a podobně

a

dají se vám dopisovat samozřejmě jak je dobrým zvykem s postgres uvede tar šiřitelný o

uživatelský

funkce

tak

to co je to asi nikdo to nečeká tak jsou hypotetický radiačním funkce

no

co proti rozumět

je tam pošlete hodnotu

a dva to řekne na jakou pozici

vtom setříděný slovu by se to zařadil

takže prospěšná nějaký stringy

to je ta ho ty ten sloupec ve

jsou stringy

a vy tam pošlete nějakej string tak vám to řekne

to by se zařadilo na pozici sto padesát osum

no

cože celá ten

případně ten sen k

nebo na jakou pozici procentuálně mezi nula jedna

kam to spadne což jako výhodný pokud potřebujete dělat zase nějakou analytiků typu kolik procent

zaměstnanců má plat vyšší neřeš tak osm nějakých hodnot

samozřejmě to můžete udělat samostatným a dotazem a ale tohle to je jako efektivnější

do jistý míry se to podobá

do jistý míry se to podobá analytickým funkcí jako

pokud znát anglický funkce tak

funkce jako rank

jensen k podobně

tak vám musí jako přívod se

povědomí

akorát že tomhletom případě se to jako počítá v rámci tý tlupy která je daná

tou klauzulí dubaje

toho celýho dotaz

veš nějaký další je menší vylepšení ty frekvenční funkcí

tomhle případě se to týká

příkazu explain

kterej doplňuje vlastně explicitně

výstup

těch ho v těch soudců podle kterých se du pojem

takže byste měli a ty složitější dotazy by byla po těch agregací několik třeba potřeboval

podobně

takhle

ne úplně jednoduchý dycky zjistit krát a agregace která

vtom výstupu next time

no

předchozí přednášce vlastně tom měl honza horách takhle taky změny

automaticky aktualizovatelný pohledy a

předpokládám že všichni víme že otce pohled jste jaké alias pro skládal dotaz

situaci kdy ten dotaz je dostatečně jednoduchej tak vlastně jde propagovat změny když uděláte update

toho view takto jde zpropagovat na ty tabulky pak ti

co

co znamená dostatečně jednoduchej

tomhle kontextu znamená že tam jedna tabulka vtom from listu si že dycky jednoznačný která

ta tabulka se má updatovat a jak nejsou tam nějaký joiny který tak strašně komplikujou

nesmí tam bejt samozřejmě žádný agregace prostě kdybych jako potom aby to ten

pohled tak asi nevim na který

ty řádky to mám jak zpropagovat

a to co bylo ještě před devět čtyřkou

tak to znamenalo že tam musí bejt pouze jednoduchý odkazy na sloupce tabulky ztratili vy

ste tam udělali

místo přímo jednoduchýho sloupce nějakou prostě část formátovací funkci

nebo ste vy sloupce nějak třeba

spojili dohromady

jako řetězce a podobně tak tu chvíli jako to přestalo fungovat

může

postgres nevěděla to jako přeložit

na ten update

to dneska neplatí

tyhlety sloupce nejsou aktualizovatelný ale všechno ostatní aktualizovat můžete

druhá věc bylo že tam nesmí by to

žádný funkce nebo žádný ty podmínky

označeny jako security barier

co

to tady nebudu vysvětlovat ale znamená toto

je ochrana proti leakování informací z toho view

který ty pohledy se vlastně používají

jak to nějaká vrstva

omezení přístupu k těm tabulkám na úrovni řádek prostě řeknu tenleten uživatel smí vidět jenom

řádky který máj prostě jiné oddělení

toho k do kterýho on patří

to s tím souvisí byl ještě ste to ještě není úplně dotažený dokonce ale do

devět pětky

která se aktuálně vyvíjí uši je commitnutý něco čemu se říká row level security který

právě ten přístup na úrovni řádek

umožňuje řídit

no

co se samozřejmě může stát

tak je že když já budu takle vydefinovanej pohled to znamená budu tam mít to

nějakej sloupec pár sloupců a budu tam mít ve id oddělení

je deset nebo dvacet tak se může stát že až to updatnu

tak ten řádek

řádek pistole to vyskočí toho prostě já udělám update

aby toho řádku na třicet

a pak už ten uživatel nikdy ten řádek neuvidí jo přes tenhleten pohled to nevyhovuje

tý podmínce

no

existuje tam

nějaká volba

with check option která prostě tohletomu brání

a tedy šlo budu updatovat přes view

přes ten pohled

tak ten uživatel tohleto nebude moct udělat

je to zase způsob jak jako vytvářet vlastně

v rituál private database

na úrovni řádek aniž by se to museli dělit do víc databázi a podobně

a jak říkám je to další krok na cestě k tý raw level se kryty

která

což je vlastnost krajně některých kruzích jako dost poptávaná

slyšel jste někdy někdo o funkci unnest

tak schválně jestli vy dva kteří ste se přihlásili se budete znát jako odpověď jako

na ty otázky

a

já když udělám tohle tak

to znamená vlastně že vy to s

toho pole

vygeneruje řádky s těma hodnota ano prostě

tady to unnest

no ale o tři

prvcích tak je to vrátí tři řádky s těma hodnota

kolik řádek vrátí tohle

no tam prostě dvě

funkce každá o třech řádcích

tak kdo si myslí že tři

kdo si myslí že tak co je třeba další možnost

devět že

kolek kolega má pravdu no

ono to prostě vezmete hodnoty a dá je to vedle sebe

otázka číslo dva

je tam tři hodnoty a dvě hodnoty

tak kdo si myslí že to udělá tři

a kdo si myslí že to dá šest

a kolega práva opět ta

takže

to je prostě něco co je to

strašně způsobem komplikovalo využití vejlet jako chytrý funkce protože to co to vrací a ty

pravidla jak to

podle který s taková

strašně závisí na tom jaký sou tam vstupy nedá že když jako nevíte přesně jaký

vstupy vám tam do

když třeba tu

plyne zimní aplikace a neuděláte si takovýhle jako ten to uvažování a tydlety pravidla tak

vás to prostě jednou kousne hrozným způsobem do zadku a tedy se vám to spadne

tak

ta věc kterou vlastně je teďko devět čtyřce tak s toho dělá může tomu vlastnost

je možný udělat více s vícehodnotové vy

unnest

tady ale de použít jenom

do

když jsem klauzule

a ten se chová jako se mi ten kdo prostě to rozdělí

a vygeneruje s toho tabulku zkombinuje ty

ty hodnoty který padají

ze set returning tam všem susu fofrem funkce který vrací

množiny řádek

a takovýdle způsobem jednoduchej

triviální pochopitelně

je zkombinuje dohromady

dokonce možný tam říci je to že museli trávit ordinality urážet tomu doplní jako jeden

řádek neříká jako tohle první hodnota sníst

spíš funkce a tak dál

tohle to de použít potom třeba proč linování

mezi víc tabulka

no a celý tohleto jenom je to takovej

speciální případ

ale já s víceméně to

klauzuli která se který říká row strom

která umožňuje kombinovat obecně funkce nebo výstupy funkcí který vrací řádky

no takže má moje oblíbená funkce sme generate cílí skrá prostě generuje řádky nebo hodnoty

v daném rozsahu

výborná věc pro generování testovací data setů a podobně

no a

tady je použitá prostě pro

proto

ukázku právě tady ty slušnosti

takže pokud máte

messy aplikaci nějaký funkce který generujou řádky konečně způsobem

tohle to je výbornej způsob jak je schopno

taková drobnost ale to potěší tak je kostek provede se to

používá tady někdo klepe dosedl

tohle ne způsobem získá vlastně aktuální kostek

proceduře tady je prostě ukázka to triviální volání dvou funkcí

a

dělá se to těm standardní kde diagnostics

a

je to víceméně

rozšíření toho co sme měli už odejde trojky pro dvě dvojky

opět jako se na tom podíl pavel stě vole

kde jsme mohli

moc nezíská ten které

kostek

když neošetřovali výjimku

ve funkci

tak

dev administrace

už tady bylo zmiňovaný nebo na ty předchozí přednášce byly zmiňovaný models ale pohledy

který některý aplikace jsou velice užiteční

to co ste mohli udělat vlastně ušli předchozí verzí rétorice

tak bylo vytvořit na trezory pohled jako prostě

alias pro

dotaz

mohli sto marek strašnou často naplnili ale to mělo jako tu nepříjemnou vlastnost že na

tu dobu toho rešerše se zamknul a ta tabulka takže prostě na tom neběžely ani

se lek ty inzeráty ne a tak dál což jako velice nepříjemný

a tím způsobem jako fungujou funguje zamykání

jako obecně nenos postgres u

tak to generovalo u nepříjemnej s tou ty aplikace s prostě zastavilo pak ty dotazy

prostě na tom

na tom na tyranizovaném pohledu

byli rychlí ale tohle takle

proč nasazení často

často

nepříjemný zejména pokud jako nasazením

těch materializování pohledů sledujete

snížení těhletěch

výkyvů responds na ní pro uživatele

a to co vy můžete udělat prostě devět čtyřce

tak je tady přidat nějaký klíčový slovo conquer and play

do toho reflection

a případě že tam máte nějakej unikátní index což jako podmínka tohodletoho použití

ta k

tohle to funguje víceméně podobně jako index konkurenty

takže přece to běží vo trošku dýl

ale

ty dotazy to nějak jako nebo

tak

další věc která je to užitečná zejména pro devel áčka oko

administrátory tak je

možnost přesunů všech objektů nebo prostě jenom vybranýho typu objektu třeba tabulek případně eště filtrovaných

podle vlastníka

přibyly nevotivnostech

no

takže toto je ta první věc kterou bych tě upozornit že s tom článku je

to trošku jinak protože ta syntaxe byla jako autor tejdnu space

což ale nakonec byla jako rozhodnuto jako ne intuitivní protože ono to vlastně ne manipuluje

s tím peklo ste jsem ona nebo je to s těma objektová no proto je

to dycky u těch objektů pane u té

neeruptivnost nejsou

taková věc která to asi nejvíc potěšilo mě tak je vylepšení indexu

co sou indexu indexy na nestárne hodnota čtvrtek

to znamená pokud máte sloupec

kterej nějakým způsobem složený z malejch části je potřeba

full textový

futex to je vektor

slova který sou dokumentu

nějakým způsobem stokem vyzváni tam

převedený na základní tvary

nebo třeba poletí děvče chtěl musí který se uložíte do sloupce

tak

pro tohleto

ten index je

užitečné

pokud používáte futex takto

pravděpodobně

používáte

ten index nemá strukturu

nemá strukturu stromu jako ty defaultní by vítr indexy

ale rozkládá se na něco čemu se říká plus tento jestli

na lidské tam dostřel slovo

a odkazy na boky déčka těch dokumentů

nebo adresy vlastně těch dokumentů

ve kterých se to slovo výskytu případně ještě s nějakýma

rozšiřujícím a informace o ten svůj text

a

můžete se to přece tak zjednodušeně

podstatě to de chápat jako bitmapový indexy

s trošku jinou ne vyloženě pomocí bitmapy ale kódovaný pomocí té do těch

pozic

kde to použité na skalární typ je takže pokud máte aplikaci kde se říkat jako

bitmapový index by se mi hodily

tohle to je možná zajímavý

no a v devět čtyřce sou dvě výrazný zlepšení

za prvý je tam komprese těch postech do listů

znamená

těch odkazů na ty dokumenty taky se ukládají nějakým delta kódování a tak dál což

výrazně snižují vlastně i velikost

a za druhý je tam výrazný zlepšení

logiky

jak se kombinuje víc těch plus minus tu dohromady jste dyž máte dotazy typu dej

mi s dokumenty

který obsahu tyhlety dvě slova

tak to je kombinovat různýma způsobama

a

já vám ukážu prostě

jak velký zrychlení

ty změny devět čtyřce můžou způsobit

další věc kterou

třeba lidi který přechází iso deklu

často jako chtěli

tak je zjednodušení administrace databáze aby nemuseli fyzické editovat textový soubor s konfiguraci dělá by

se to dalo dělat skrze skládal

no prostě aby bylo možný místo

u

já tě upatlaný se s textovým souborem

seš nevyhovuje ale jim evidentně ne

tak aby bylo možný udělat něco jako autor systém

a nastavit tu hodnotu

což teda jako dneska ne

needituje se ten mastr textový soubor

udělá se vedle toho

stě soubor s těmadle těma hodnota na změně name a

pomocí autor systém

a do toho se to uloží se dalo se ty změny oproti defaultní

kopne zahrnuje to bohužel nebo pořád to vyžaduje pře načtení do souboru vesnici protože vy

děláte autor systém tak to neznamená že by se to je to začalo hnedka používat

musíte udělat nějakej lump conf

jako volání funkce

a samozřejmě sou pořád eště

parametry který je nutný načíst

tím že restartuje zatímco v databázi no třeba velikosti četba fades

ty databázový keše tak prostě nejde měnit akademické jsem si že tohle tak jako nepude

o současně to je to věc kterou je to nemění teď každej den

tak

je tam spousta novejch nebo spousta je tam

několik nově konfigura těch parametrů

jednak je oddělená autovlaky walkman

stý

paměti která se používá třeba pro

proto vytváření indexu a podobně

bye default je to prosím vás jako stejný to je to stejná hodnota jste teď

jedí se to

no linuxových systémech můžete používat něco jako víš page s

pokud je tam máte pokud máte velkej objem paměti

pokud používáte sdílený knihovny pro implementaci no pro nějaký vlastní

věci napsaný třeba v céčku

tak je tam další možnost jaké načítat

je možný logová ty byty ví někdo co sou tady bity

a

velice rychle ukradení řádky je uložený možná informace

ve který transakci vznikla aut tebe který transakci byla smazána pokud byla smazána

o to za postgres musí dělat je kontrolovat podle toho proti transakčnímu

a prostě jestli se podívat tak což není úplně zadarmo

a existuje něco čemu se říká někdy

kterej ve chvíli kdy všechny transakce ten řádek jako viď

tam prostě není tam žádná transakce

která

ten řádek nemůže vidět

tak se vám udělá jako všechny transakce to vidí jako není bit

k tý řádce tato výhoda je že tohleto se nemusí lomeno transakčního

no prostě

mu tam ten by jim to není nastavené udělá se vše a nebo tam je

nastavené

a tu chvíli jako

no to je to spolehlivý

vám

to samé tomu čas nehodí je to nepříjemný když uděláte třeba fail over

tím že jsou to nemohli do transakčního mobile toto nepřenáší ani na tu repliku a

tu chvíli na replika musí dělat všechny tyhle ty kontroly který se na to mástru

udělali třeba za měsíc

tak to musí dělat pro každou tu

operace

takže

je možný zapnout logování těch bitů bylo transakčního

no a pak tam došlo k nějakým zvýšení

default hodnota teda parametrů

paměti

aby to respektovalo prostě aktuální realitu hardvéru kde ty objemy paměti výrazně naroste

tak

další zajímavá věc je pravá no

seš je

modul která umožňuje zahřívat

paměť

ve chvíli kdy vy ste restartuje databázi nebo co list roli tak prostě nakešovány to

není nic

tohleto vám umožňuje

je to velice triviální která jako možnost

ale lze toho skriptová

von kombinaci s jako další má

mode extenze máte potřebovat buffer cache na ty statistiky a můžeme získat

pak to pořád a inteligentně

nebo s nějakým externím a šíření má jako

vyčíslím core

který interaguje s o

s patch keší

linuxu

to přeskočím tak

replikace kamery

nemyslím si že tu standardní replikaci ty steaming prvek asi by došlo k nějakým jako

zásadním změnám

jo

je to pořád jako stejný došlo tam k nějakým drobným vylepšením typu

když inicializuju nebo dělám

ve jsme k a vám to iniciální kupy repliky tak je možný přemapovávat

tak dost peněz

jako úplně nejlepší je když máte ty mašiny úplně stejný

včetně rozdělení disku myslím bych tipl spisů

ale

pokud už to prostě musíte zálohovat na jinou mašinu

tak

tohle asi dobrý způsob

další možnost je prostě explicitně nastavit delay reka velikosti když chci aby se mi vo

hodinu zpožďovat replika oproti mástru tak do teďka s to vlastně neměli možnosti jak udělat

a

teď je tam ještě možnost která sice přijmete

ty transakční logy ale její aplikaci ti databáze pozdrží o daný počet milisekund

takže tady toto je dost nějakých

přesto šedesát

nebo tři tisíce šest set vteřin

hodin

no a jako je přibyl tam další

pohled systému vy pohled který vám umožňuje přímo jako sledovat který ty transakčního kdy už

byly zálohovaný na do archivu

pokud teda archivace používáte

no

co se týká infrastruktury tak jenom jako velice rychle držet jsou většinou věci který uživatele

pokud jako ne implementuju nějaký

no vlevo extenze podle su

nebo ne

nepotřebujou

byl tam commitnutý základ logický replikace

prostě replikace která ne nereplikuje přímo ty transakční logy ale nějakým způsobem s těch transakčních

logů zpětně extrahuje to logický změny přeměnit to binární bys

ale nemáte možno třídě tomu a tomu dělá to nějaký prostě

ukládá se to

za základ to takových replikační řešení

jako je slony

vám byste

a případně mu carlo

pro

nějaký multimaster aplikační systém

jako základ takovýho jedeš na systém

přebalit ale běda číslo ty který vám už neublíží řídit

zachovává těch transakčních logů

já si to nebudu víc jako rozepisovat ale vo rozvádět ale

dneska vlastně nemáte možnost jak přesně říct který to logy

eště zachovat aby všechny repliky je třeba ty který ste na vypnuli údržbě tak aby

jako

jim neutekli ty transakční logy a nemuseli ste inicializovat znova

a že teda číslo by vám tohleto umožňujou

a umožňovala se vysledovat

přes nějaký statistickému přes nějaké pohled systémovej

jak daleko ty repliky jsou kolik už toho přijali kolik už toho aplikovaného podobně

vida workery

to je podobná situace jako ú

ty logický replikace

je to

předseda můžete používá třebas textem zítra nějakej

vlastní proces který bude startovali automaticky databází

napadá mě třeba já však nule můžou

spouštěný přímo z databáze

ale

komunitě to vyvíjený jako primárně

základ pro dotazy

no prosím něco co vám umožňuje spouštět jeden dotaz

co sort

ne nebo

kousek toho dotazu

navíc procesorech dodržet tuhle chvíli

každej dotaz běží jenom v jednom procesu linuxové znovu

jakémkoliv

to víš ovázaný vlastně omezené jedním procesor

to letadlo tam že spousta dalšího

to já teda tom

nemusim řikat

tak

co se týká

ty druhý části nebo

toho zbytku času to bych se rád podíval a

takové hlavním tahákem velkej marketingovej

marketingový lákadlo

imidže jsem ví

takže napadnul dotazy se o tom není pro změnu databáze

samozřejmě je to o jakým se rozporu s takovou tou standardní

relační teorii která říká se ty hodnoty který se ukládají do jedno sloupce

tak by měli by atomicky

to znamená že jako jestliže tam chci ukládat jako do jednoho sloupce nějaký složitý struktury

tomhle případě json dokumenty který jsou

nejsou to skalární hodnoty jsou to kolekce

kýval a ještě ke všemu list hierarchický tak ano je to v rozporu s

takovouto uridinech chápanou relační strukturu

druhá věc ale je že pro svět není čistě relačních jako spoustu situací čisté dalším

schématem nemůžete úplně jako postihnout nebo je to velice jako neefektivní tak jako přes ruku

řešení

a tam se vám tom

u že jsem ví vo tohle ten přístup může

může hodit druhá věc je že to prostě není popsaný žádný nadstandard a

prostě

jsme se s smiřte se s tím že tímhletím způsobem standarty nevznikat

standarty nevznikaje tím způsobem že by se někdo se nula tak se

potřebujeme prostě dostat stukturovaný data do

do databáze

ve formě že jsem ví tak na to uděláme standard

a respektive standarty který vznikne takovýdle to

způsobem tak většinou umřou

takže tohle to je případ

kdy

uživatele jednu konkrétní databáze se řekl potřebovali bysme nějaký řešení tohodle toho problému

máme tady zavedenej

formát pro takovýhle ten typ dat tak to poďme na rungova prostě do relační databáze

tak aby to dávalo smysl

je to popsaný nějaký dokumentaci postgres u

ta konkrétní implementace

a na tý konferenci která se trochu před čtrnácti dny konala v madridu

tak proběhlo moc pěkný školení

na to jak to používáte na ty efektivní

a neefektivní způsoby

takže ty věci který já tady s nejvyšší pravděpodobností jako nestihnu které všechny

tak tam najdete popsaný

a to školení dělat dusno můžem

s tomem braunem co všechno je za záruka kvality

tak

když se podíváme pokrývaný dokumentech postgres u

tak první věc která jako se objevila v roce dva tisíce čtyři dva tisíce pět

tušim

dva tisíce šest byla commitnutý love osum police nebo vydaná tak store

co všechno jakoby jednoduchá

že kolekce kýval uhodnout

jednoúrovňová nemůže na s tím že ty

hodnoty i klíče jsou vlastně no řetězce

no takže já osobně jsem tohleto používal třeba pro uložení hlaviček

s týmem pustil co vše jako lehce kýval uhodnout

tak dál

je to jednoduchá definice efektivní a snadno se s tím pracuje no ale

máte krátí nevýhody

nemá tam typy že ho žádný takže když tam potřebujete vložit integer tak potřebujete takže

tak dál

ideální to je pro řídký kolekce

hodnot

jestliže nebo třeba když vy ani nevíte jaký klíče vám přídou takže proto nemůžete s

tý tabulce vytvořit index ty sloupce odpovídající

a takový ty

jak se to standardně řeší další databázi je a ve schématu

takže to standardně se překládá jako jídlo

zlo

takže

druhá varianta je to uložený relační databáze je prostě mi tam nějaký generický sloupce adam

jedna parabola

to ještě horší

jsou

se ve srovnání s tím prostě ten že jsem jako je moc krásné

no

kde ve dvojce už bylo řečeno

nebo změnu jistý předchozí přednášce

tak se objevil ten že jsou ty auto šel vlastně jenom jako strašně triviální věc

protože to vlastně no jako text

s nějakou validaci na vstupu

že prostě tedy stovek ukládali že jsem

tak ste tomu přidal jako text vono to zvalidovat že to jako je validní že

jsou

a to bylo všechno

no to uložený jako text

všechno

všechny

problémy který s tím spojený jsou

tak platili

byly tam minimální množství funkcí nebo minimální rozsah musí který s to mohli použít pro

manipulaci

devět olizoval to bylo vylepšení nějaký jako další operátory extrakci hodnota tak

to co ste neměli tak si můžete dopsat pomocí nějakýho uložený jo uložený procedury naimplementovat

si tam

třeba pomocí

javascriptů spouštím databázi

to co ste potřebovali

no a teďka sem byl ještě jste přichází je to velká revoluce vtom že

je tam optimalizovaný datový typ který se ukládá parsuje

a ukládá ve binární podobě

takže jako je velice jednoduchý přistupovat k těm klíčům a nemusí se to parsovat nebo

k těm hodnota super dokumentům a podobně nemusí se to pak sou a dycky vod

začátku

umožňuje to vlastně jaký nějaký normalizace toho že jsem dokumentům není to prostě jedna k

jedný jako ten text když uložíte že jsou a vytáhnete si ho zpátky tak ty

klíče můžete mít v jiném pořadí odstraní to mají space i a tak dál

z asi neni to neni to samý jako vajnarem že jsem

který používá samo budete

to jinak

pojatý a je to přenosové vlastně protokol

takže jsou

no takže prostě já když udělám jako triviální tabulku s jedním soudcem které jako je

ten že jsem

to může vypadat zrovna takle kdy mám prostě sloupec kterým že tam data

ten datových typů dat jo takže jsem ví

a pak do toho prostě pošlu řetězec

ne kterým je ten že jsem

předpokládám že třeba drahý byly typu paritního psa jako p g

tak dál podlezou mapovat na kdy všelijak podobně

a jako negativní dopady

tak

todleto jako možno vazivo podle ilustruje možnost ukládat

hierarchické dokument o tom

to ho datovýho sloupce

je to vlastně úplně to samý jenom je tam složitější že jsou

když jsem říkal že týden ještě s to sou

složitější

nebo

je tam širší paleta operátorů

vy samozřejmě můžete

používat

jednoduchý operátory který extrahuj datový typ extrému ty hodnoty ať už ve formě tak čtu

nebo

jsou dokumentu

případě můžete dělat různě kontroly typu obsahuje pod dokument nebo obsahuje klíč nebo obsahuje aspoň

jeden klíč nebo obsahuje všechny klíče který tam půjdete školy

jo takže potom můžete dělat takovýhle dotazy

tohleto je příklad i

extrakce kdy mám nějakej tvořej že jsou dokument nebo hierarchické dokument

a papíře kam kdybys toho hodnotu pro klíč a jako že jsem vám to vrátí

že jsi dokument

neřiká tedy ne klíč a pak s toho dokumentu který nelze

kdy když ne tak vám to vrátil ten stejný chce

co

tadydle vlastně

tohle to je podoba

alternativní způsob jak bylo to samý kdy používáte ten

přístup přes pole

těch klíčů

prací to zase to céčko to říká a ne

ty operátory který má možnou kontrolovat existenci

tak prostě říkám

obsahuje ten první dokumentů druhej

tomu operátor je kapinku jen

připomínám tak nějak a

takže

ano ten první dokument obsahuje prostě bendová

ten druhej

neobsahuje nepřibližujte

hodnota je tam jiná že to je false

obsahuje klíč a ano

obsahuje všech a

alespoň jeden s těch

klíčů ano

obsahuje oba dva

takže způsobem jednoduchej můžete si vyhledává štyři jsou dokumentech který sou databázi uloženy

kromě toho je tam hrozná spousta

a

funkcí který vám už jo jako manipulovat s nima že jsou dokumentovat

takže ve chvíli kdy vy prostě máte třeba uloženou proceduru která

nějakým způsobem zpracovává týče jsi

ta to můžete použít tohleto

tohleto sou prosím vás funkce pro ten původní datový ty json

pokud budete používat že jsem víte používejte

tu variantu která má na začátku že jsem by jinak jako

eliminujete všechny benefity který to má

takový příklad který já používám

pro testování a tak dál adamse mailem vestách ais dva miliony

skrá vezmeme městu postgres u

jsou tam takový ty standardní sloupce jako sem když se to poslalo kdo

se tím předmětem a tak dál letem

ta položka která se strašně těžkou kanadu relační databáze

to jsou hlavičky to jsou ve si variantu

no

každej jinej má jiný sněhu se do hlaviček

spam po svém filtry

tam přidáme nějaký vlastní hlavičky a podobně

takže proto tam já mám ten datový typ že jsem ví

když to namalujete

tohle to je prosím vás když by dám polovinu té hlavičky s těch milion dokumentů

obyčejnej tam má

jedna ku nebo jedna celá šest lidovecké

no

když to náhodou do sloupce

které je text

se to trošku toho zkomprimujete že postgres transparentně komprimuje dlouhý hodnoty

ale jako nic moc

vidíte že ten že jsem to je ten druhej hospoda

tak ten má jako zase

úplně přesně tu stejnou hodnotu je to vlasy jako alias pro ten datový typ s

validací

není důvod aby se to řešilo

když ste se kdybyste tohle to zkusili do toho že jsem by zde tě

tý druhý

tak to bude mít nějakejch jedna celá tři kilo bajtů

cože to je vidět že tam je nějaký binární prostě uložení

efektivnější komprese

ale

neodpovídalo to

tomu

co se očekávalo

takže proto viz vznikla ta věta tři

a ty současný už to mástři jenom jedna celá revidován tu

jseš

jako velice jako

současně losuje

jak velkej důraz se to řekla klade na kvalitu toho kolik to dresu

protože

já dybych popsal programátor mělo to ho

sto megabajtů výsledný doba je tak bych kartě mávnu rukou možná

ne tak všichni že oprav programátoři postgres

tak

dotazovat samozřejmě všechny operátory který jsem ukazoval tak je možný použít

ať už tam se let listu prostě kdejakou mě zajímá třeba s těch hlaviček jenom

nějakým si čaj jinak můžu takle

vy extrahovat

nebo můžu se dotazovat na dokumenty

který obsahuje nějakou konkrétní hodnotu pro film hlavičku a podobně

nepříjemný tady na tom je že vono samozřejmě ty podobě když tam neudělal žádný indexy

a nic tak to dycky přečte celou tu tabulku musí to jako zkontrolovat pro každý

dokument to je to ilustrovaný tím že to dělá sekvenční scan

to je nepříjemný

je možný používat nějaký

bejt indexy který sou ale cílený dělo na konkrétní

na konkrétní klíč a hodnotu

takže jako aplikovat ty standardní být indexy na co je ten že jsou dokument leda

ve smyslu

pysky hledáte podle nějakého klíče

tomhle případě

todle na tu arku

cíleně aplikovat tady se použije nějakej bitmap index cam seš pěkný

no ale nejjednodušší a nejlepší co byste měli udělat tak je použít jiným jaksi co

sou ty optimalizovaný indexy futex to jinde se vpodstatě

a tohleto ještě jako rychlejší daleko

než ten předchozí dotaz

jo a současně vám to umožňuje dotazovat libovolný klíče libovolný hodnoty

tak

toto jsou sou dvě varianty teď indexů pro json

a

ten default

umožňuje vlastně pracovat se všema těma operátora na který sou tady ukazoval prostě umožňuje dotazovat

null

od dokumenty existenci klíčová tak dál

je tam

je tam je to šanci naopak drog vás

že jsem pípá o s

jo

trojka

a

ten má tu výhodu že vygeneruje menší rychlejší indexy ale umožňuje vlastně optimalizovat jenom ten

operátor dopingu jen se na tom stejném dokumentu

jak to použít je strašně jednoduchý

a jeho co to pomůže vlastně

tom klid indexu

za

tím seznamem sloupců

no a

samozřejmě bude dělat koho indexování port

dokumentů

tím že se to vhodným způsobem že extrahuje

v tom klid indexu jako je to ukázaný tady

no takže potom budete moct vyhledávat hlavičkách cc

pomocí těch indexu

tady je vidět nějaká jak je rozdíl velikosti těch indexů

to co tam je to zajímavý taky je ten druhej a třetí řádek je tam

begin index

má pět set tři mega

ta celá tabulka má nějaký prostě šest dní do bajtů

ten třetí tak jim a na ty dvě stě sendesát megabajtů

a když mít vezme ten ať takže indexu že ten poslední

tak pětadvacet mega takže

je tam velká flexibilita

toho co můžete dělat

etapa jízdy vyřešena s firem který se motají kolem postgres u takže a jak jako

know vesmíru benchmark

ve kterém samozřejmě na trhu je mokrý

řekni otvor

ale

já také nechci přeceňovat jenom poukazuju že pokud nepotřebujete prostě takový ty automatické sean linka

takovýhle nové school no hezky jo

no z vody

i ta relační databáze která má navíc poskytuje nějak jako

benefity typu konzistence a podobně

tak pro vás může bejt zajímavý

ta poslední slajd

syntaxe benchmark já jsem dělal jako pes

jak moc ty jen indexy pomohli vlastně standardu futex u

respektuje to zlepšení devět čtyřce

a dospěl jsem k něčemu takovýhlemu

kdy jsem z ale to prostě ten waylandu je s archiv udělal jsem na prostě

přece při tisíc dotazů

realistické posbírané jich skutečně z webovýho formuláře vektory uživatele dále

a

tohle prosím vás na ty ose x

je trvání ve dvě trojce

a na ose ypsilon je

relativní čas

devět čtyřce takže to co je pod jedničkou je rychlý no jde rychlejší než na

devět velice a je to poměrně to devět čtyři lomeno devět tři

takže to co tam vidíte taková ta

ale to logaritmické často se s ještě ke všemu na ty osoby

takže to co vidíte tajdle

vy tam hyperbola tak tady spojencem zrychlení

což jako myslím si že

dyž dokáže někdo zrychlit algoritmus exponenciálně tak jako to asi stojí

jako za potlesku

tohleto dělaly mimochodem a alexander proskov

a jak je jistě s finska

takže ty já bych asi skončil

nic dalšího tam mám

tak já mu řeknu nanečisto složit poslanecký