Preview betaverzí dvou úspěšných Open Source programů - FreeBSD a PostgreSQL, které tvoří dohromady výbornou platformu k provozování databází.
19.11.2007 06:00 | Radim Kolář | přečteno 11540×
Pravděpodobně nejočekávanějším OSS produktem na poli operačních systémů je v současné době nová major verze operačního systému FreeBSD - 7.0. Novinek je v sedmičce opravdu mnoho, ale nejvýznamnější změny proběhly na poli diskového subsystému, škálovatelnosti a již tradičně v oblasti síťování.
GEOM, objektově orientovaný framework pro přístup k blokovým zařízením, byl rozšířen o několik nových tříd. Nejvíce zájmu vzbudily třídy:
Krom nových GEOM tříd přibyl také iSCSI initiator a serverová část iSCSI se nachází v portech.
Bezesporu největší novinkou na poli storage je integrace filesystému ZFS z projektu Open Solaris.
O ZFS bylo a ještě bude napsáno mnoho. ZFS (wikipedia) je revoluce ve světě filesystémů a protože se jedná o 128-mi bitový filesystém, tak se mu často říká The last word in filesystems, čímž se mírně naznačuje, že s příchodem ZFS ztrácí jakýkoliv další vývoj dalších filesystémů smysl. ZFS ale opravdu revoluční je. Poprvé v historii byl integrován RAID, filesystém a volume manager do jednoho celku.
Výhody ZFS oproti stávajícím řešením bych shrnul to několika hlavních bodů:
O technologii ZFS by se dalo psát ještě dlouho. Vážným zájemcům doporučuji navštívit ZFS learning center, případně se mrknout na nějaká ta videa 1, 2, 3, 4.
Poměrně zásadní změnou je využití technologií TSO (TCP/IP segmentation offload) a LRO (Large Receive Offload) se kterými se lze setkat u 1 Gbit a 10Gbit síťových karet. TSO podporují drivery pro Intel, Broadcom, NVidia, Realtek. LRO podporuje driver pro Myricom Myri10GE.
Druhou významnou změnou je automatické nastavování velikosti TCP send a receive bufferů, dříve se používal default buffer o velikosti 32K, který nyní může automaticky narůstat až do 256 KB. Tato změna teoreticky zvětšuje přenosovou rychlost na sítích s větším RTT (200 ms) až desetinásobně. Jedná se opravdu o významou změnu, moje testování na trase USA - Německo zjistilo nárůst přenosové rychlosti z 1 MB/s na 6 MB/s.
Další významnou změnou je podstatné zlepšení škálovatelnosti na 4 a více procesorových jádrech. FreeBSD řady 6 se dalo použít na nejlépe na dvou, maximálně na čtyřech procesorových jádrech. Použití 6 a více přineslo při typické zátěži zpomalení. U FreeBSD 7 je tento nedostatek již odstraněn a v níže uvedené prezentaci uvidíte lineární škálovatelost FreeBSD na 8 jádrech a další testy škálovatelnosti databází PostgreSQL a MySQL a operačních systémů FreeBSD-7 a Linux 2.6. FreeBSD 7 se schedulerem ULE (bude default v 7.1) v tomto sysbench testu bezproblémů porazilo ostatní soupeře. Absolutně nejlepšího score bylo dosaženo na 8-core AMD Opteron systému s databází PostgreSQL 8.2, což je platforma s výborným poměrem výkon/cena kterou doporučuji pro provozování lower end databázových serverů i já.
Pokud jste dočetli až jsem, rozhodně nevynechejte Krisovu prezentaci FreeBSD 7.0, stáhněte si betaverzi a začněte testovat.
Jako druhý program jsem vybral PostgreSQL, jehož nadcházející verze se nachází podobně jako FreeBSD ve stádiu beta testování. Podobně jako FreeBSD 7.0 je i PostgreSQL 8.3 bomba.
Názory na největší hit verze 8.3 se poněkud rozcházejí, změn je tentokrát opravdu dost. Někoho nejvíce zaujme podpora XML, jiný ocení nové datatypy uuid a enum, lidi portující aplikace z Oracle dostanou dlouho očekávané writeable cursory a podporu pro ORDER BY ... NULLS FIRST/LAST, na programu dne je i vylepšené autovacuum, které je nyní poprvné aktivováno ve standardní instalaci a umí čistit více tabulek současně, potěší všechny uživatele velkých tabulek.
Poměrně významné změny nastaly v oblasti OLTP. Nejvýznamější je bezesporu podpora asynchroního commitu, po kterém se neprovádí na WAL logu fsync, což vede k významnému nárůstu výkonu, protože se nemusí čekat na disk. Při havárii nedochází k poškození dat, ale k možné ztrátě několika posledních potvrzených transakcí. Další významnou změnou je paralelizace operací během provádění CHECKPOINTu, aby se tím snížila doba kdy musí uživatelé čekat na jeho dokončení. Rychlejším CHECKPOINTům také napomáhá inteligentnější bgwriter, který mění rychlost zápisu s ohledem na aktuální zátěž. Ve starších verzích ve většině případů totiž zapisoval data příliš pomalu. Když už jsme u těch background procesů, nově přibyl process vyhrazený k zápisu WAL logů (ala Oracle).
Pokud se při aktualizaci záznamu nemění hodnota nad kterou je vytvořen index, PostgreSQL se pokusí umístit novou verzi řádky do stejného bloku, aby nebylo potřeba aktualizovat indexy. Pro optimální funkčnost je potřeba v blocích rezervovat pro tento účel trochu (minimálně 15 procent) místa pomocí direktivy FILLFACTOR. Díky všem těmto změnám je OLTP workload rychlejší až o 20 procent. Zájemcům o ladění výkonu bych také doporučil shlédnutí této prezentace.
Docela příjemnou změnou je přesunutí fulltextového vyhledávání z contrib modulu tsearch2 do databázového serveru. Výhody oproti tsearch2 contrib modulu jsou jednoznačné: lepší dokumentace, snadnější konfigurace, odstranění několika dlouhodobých design nedostatků a v neposlední řadě taky pár významných bugfixů. Fulltextové vyhledávání je poměrně na úrovni, umí podporovat různé jazyky a znakové sady, kontrolovat překlepy podle slovníku, stop slova, synonyma, hodnotit kvalitu výsledků a stemming, Fulltextové vyhledávání potěší snad všechny autory web aplikací neboť je přibližně stonásobně rychlejší než operátor ILIKE, který bývá často používán pro tento účel.
PostgreSQL bývá velmi často rychlostně srovnáván s MySQL. V minulosti bylo totiž MySQL zejména díky chybějící funkcionalitě výrazně rychlejší. To ale už dnes neplatí, testy PostgreSQL 8.2 oproti MySQL 5.1 používané při ladění škálovatelnosti FreeBSD ukázaly, že PostgreSQL je v průměru o 20 procent rychlejší a nemá problémy se škálovatelností při více uživatelích. Podrobnější testování ukázalo, že u MySQL nastává pokles výkonu pokud počet uživatelů převýší počet procesorových jader.
PostgreSQL si získává v posledních letech stále větší oblibu v podnikovém prostředí a značnou část jeho uživatelů tvoří přeběhlíci z Oraclu. Trochu se o to zasloužila i firma Sun, která nejen integrovala PostgreSQL do svého operačního systému Solaris 10, ale prodává i podporu. Současná cena roční cena základní podpory od Sunu je $1,596, pro srovnání podpora od EnterpriseDB stojí $995/socket.
Seznam všech změn je k dispozici na http://www.postgresql.org/docs/8.3/static/release-8-3.html.
Testování dvou výše recenzovaných produktů ukázalo, že kombinace FreeBSD 7.0, PostgreSQL 8.3, ZFS a AMD Opteron je vynikající platforma k provozování databáze a výrazně překonává současný mainstream Linux 2.6 , MySQL 5.0, ext3 a Intel Xenon.
K dokonalosti nám chybí pouze podpora superpages (paměťové stránky větší než 4KB na x86 platfomě), jejiž použití v aplikacích s velkou spotřebou paměti, typicky databáze, přináší nárůst výkonu v desítkách procent. Ty se do FreeBSD-7.0 nedostaly a nachází se ještě ve stádiu vývoje.