Postgres – všetko, čo si chcel vedieť, ale bál sa spýtať svojho seniora, aby si nevypadal ako jelito 19. storage, pages, TOAST.
Postgres ukladá data do datafiles v adresári databázy, a to pre každú tabuľku a index zvlášť datafile. Defaultne je veľkosť file 1GB, dá sa zmeniť pri inicializácii DB (SEGSIZE). Datafiles sú delené na pages, resp. blocks, každý ma defaultne 8KB (8192 B), dá sa meniť pri kompilácii:
./configure –with-blocksize=<size in kB>
SELECT current_setting(‘block_size’);
Postgres – všetko, čo si chcel vedieť, ale bál sa spýtať svojho seniora, aby si nevypadal ako jelito 18. OID, relfilenode.
OID je interný identifikátor entity v postgrese. V rámci pg_class identifikuje relačné entity (table like). ďalej
Postgres – všetko, čo si chcel vedieť, ale bál sa spýtať svojho seniora, aby si nevypadal ako jelito 16. Indexy.
Prehľad a komentár k indexom v Postgrese. ďalej
Postgres – všetko, čo si chcel vedieť, ale bál sa spýtať svojho seniora, aby si nevypadal ako jelito 18. Veľkosť databází a datových fajlov.
Zaujímavý problém, ktorý riešil v práci môj kolega. ďalej
Postgres – všetko, čo si chcel vedieť, ale bál sa spýtať svojho seniora, aby si nevypadal ako jelito 17. MVCC
Tento prehlad je excerpt z tohoto kratkeho clanku a z tohto dlheho clanku. ďalej
Postgres – všetko, čo si chcel vedieť, ale bál sa spýtať svojho seniora, aby si nevypadal ako jelito 15. OOM killer.
OOM killer je štandardná linuxová vec v managemente pamäte. Vzhľadom na to, že linux používa virtual memory a má necnosť, že dovoľuje alokovať aplikácii viac pamäte, než má k dispozícii (overcommit), občas je nutné nejaký proces odstreliť, keď pamäť dôjde. Ovšem postgres má tú vlastnosť, že ak sa odstrelí čo jen 1 process SIGKILLom (napr. nejaký enormný dotaz), tak sa porúča celý cluster, ktorý nevie, v akom stave sú datové buffers. Ergo OOM killer na postgres je veľký špatný…
docker – jak, co, kde, ako…
Filosoficky uvod. Dnes je kontajnerizacia velke hype a Docker je velkym standardom, ale: primarne bol vyvinuty a urceny vyvojarom, pre rychlu a standardizovanu cestu nasadenia “VM”. Pre produkciu to nebolo moc urcene, pokial clovek nepouziva nejaky framework typu K8s – napr. samotna dokerizacia neriesi HA a podobne. Tudiz skutocnou vyhodou Dockeru je len rychle standardizovane nasadenie nejakeho prostredia…
Druhou velkou filosofickou vecou je, ze Docker images/kontajners su urcene ako static – dockerfile predpisuje ich stav a zmenovost (napr. datafily a pod.) nie su priamo v kontajneri ziaduce. Preto je dolezite pre data, ktore maju byt pritomne aj po likvidacii kontajneru, separatnu vlastnu volumu.
Postgres – vsetko, co si chtel vediet, ale bal sa spytat svojho seniora, aby si nevypadal ako jelito 13. Query processing.
Spracovanie SQL dotazov je jednou z najkomplikovanejších vecí vôbec. U postgresu neni možné používať hinty a optimalizátor dotazov je cost-based. ďalej
Postgres – vsetko, co si chtel vediet, ale bal sa spytat svojho seniora, aby si nevypadal ako jelito 12. Django.
Vývoj na Djangu je dnes už evergreenom a tak si urobím pár poznámok (pre niekoho možno triviálnych, ale ja sa k tomu dostávam sporadicky a preto potrebujem pár základných poznámok k architektúre a tak). ďalej
Postgres – vsetko, co si chtel vediet, ale bal sa spytat svojho seniora, aby si nevypadal ako jelito 11. TimescaleDB.
TimescaleDB je standardna ekstnsna postgresu, tak ako ine extensny. Je zamerana na zbieranie time-series dat a to velkych dat (typicky zo senzorov). Zvonku je pri pohlade na Postgres transparentna, je to skor sposob, akym enginom Postgres bude ukladat rady casovych dat. Preco ju pouzivat je pekne vysvetlene tu. ďalej