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ý