Změna schéma WebMedea databáze

led 27 2019

WebMedea již eviduje přes miliardu odkazů mezi weby. Tato data v naší Cassandra databázi zabírají již přes 110 GB. Společně s rostoucím množstvím dat jsme narazili na neustále se zvyšující vytížení RAM, CPU a diskové IO našich serverů právě od Cassandry. Její požadavky se zdá, že nejde ukojit. To nás přivedlo k zamyšlení se nad naším současným datovým modelem. Zhodnotili jsme, že nám nezbývá nic jiného než upravit způsob, jakým WebMedea ukládá odkazy mezi weby.

Cassandra, stejně jako relační databáze, umožňuje ukládat jako primární klíč tabulky skupinu více sloupců. Takový primární klíč se u Cassandry nazývá kompozitní (Composite key) a rozlišuje se na dvě důležité části - oddílový (Partition key) a třídící klíč (Clustering key). Oddílový klíč říká Cassandře do jakých celků (oddílů) ukládat bloky dat - tyto oddíly jsou vytvářeny na základě hodnoty sloupců, které jsou součástí klíče a cílem je vyhnout se příliš malým (stovky záznamů) nebo naopak příliš velkým oddílům (stovky MB dat). Třídící klíč, jak můj pokus o překlad napovídá, pak slouží ke třídění dat v rámci jednoho oddílu.

Při ukládání odkazů ve WebMedea jsme preventivně rozdělili cílové domény odkazů na jednotlivé úrovně oddělené tečkou a v oddílovém klíči je vedeme jako samostatné sloupce. Ukazuje se nám ale, že to nestačí. Největší české weby jako Heuréka.cz a Nova.cz jsou schopny vytvářet v naší databázi oddíly do velikosti až několika GB. Jejich "mikrostránky" jako produktroku.cz pak nejsou daleko pozadu.

Abychom předešli tomuto problému upravujeme náš oddílový klíč aby obsahoval také údaje o datumu nalezení odkazu. Tato změna má navíc benefit v tom, že urychlí zobrazování nejnovějších odkazů na výstupu z WebMedea. Jak ale provést takový zásah do 110 GB dat, která jsou neustále upravována, rozšiřována a čtena našimi klienty?

Pro tento úkol jsme přidali do WebMedea servery artemis.webmedea.com a athena.webmedea.com, které sídlí v datacentru Wedos.cz. Tyto servery na svých instancích Cassandry replikují pouze nově vytvořené databázové schéma a s ním i novou strukturu uložení odkazů. Původní formát odkazů je postupně překládán na nový persistentní službou. Tím se zvedá zátěž na naše servery v ostrém provozu jen minimálně, protože nemusí zapisovat novou strukturu dat. Paralelně k tomu upravujeme naši těžbu odkazů tak, aby ukládala do obou formátů naráz. Posledním krokem pak bude přepnutí schématu v klientských aplikacích a změna replikačního faktoru nového schématu, aby se nový formát dat rozšířil do celé sítě WebMedea.

Aktualizace Echo pro Bludit

pro 19 2018

Bludit je super CMS systém pro blog, zápisník nebo i velmi jednoduché webové stránky. Nepotřebuje žádný databázový systém, vše ukládá do struktury textových souborů. Oslovil mě natolik, že jsem se stal sponzorem a vydávám pro něj sám grafickou šablonu, kterou jsem během pár posledních večerů opět aktualizoval. Ke stažení (a zkritizování) je dostupná (zatím ještě) na GitHub.

Teď jen najít chvíli a aktualizovat ji tady u sebe na blogu :)

Degustace ve Wine Bar

pro 12 2018

Protože jsem chtěl poznat vinárnu Wine Bar i z druhé strany, a porozumět tak více vínům, rozhodl jsem se navštívit degustaci vín, která se ve vinárně pravidelně koná. Degustace se tentokrát zaměřovala na vína oceněná českou soutěží Prague Wine Trophy, kde nabídka Wine Baru získala hned několik medailí a dokonce i titul šampióna ve dvou kategoriích. Degustace byla super akce - přestože jsem naprostý laik, necítil jsem se méněcenně. Sommeliér Petr Mikeska vysvětloval i pojmy, které jsou pro zkušené samozřejmostí. Ochutnávka každého vína byla doplněna názornou prezentací fotografií, mapou lokality, odkud pochází hrozny, i zajímavostmi ze zákulisí vinařství.

Spodní patro vinárny Wine Bar Spodní patro vinárny Wine Bar

Nový core server ve WebMedea

čen 06 2018

Protože naše databáze se neustále rozšiřuje, a my k ní navíc přidáváme další funkce, museli jsme ve WebMedea Services rozšířit i náš hardware o další hlavní server - ares.webmedea.com. S naším bohem války se ale, na rozdíl od toho antického, nikde nepotkáte. Jeho úkolem je totiž válčit s naší databází. Ares se bude starat o výpočty důležitosti domén na internetu a o aktuálnost odkazů mezi těmito doménami.

A "bright" future for GitHub indeed

čen 04 2018

The name of this post is inspired by the latest official post on the GitHub blog.

So Microsoft is acquiring GitHub. While certain people like GitHub CEO defunkt are beaming with enthusiasm reserved only for those, who secured themselves a hefty sum and a nice position on the lap of their new overlord, I can't help myself but feel skeptical. Don't get me wrong, I wish for nothing else but the bright future that has been promised - but is that future really possible with the track record Microsoft has had up until now?

While Microsoft and GitHub are both busy reassuring us how this partnership was struck in heaven itself, I look back at how Microsoft acquisitions have impacted me in the past. Let's just say: most times they weren't pleasant experiences...

Nokia

When Nokia annouced that they were teaming up with Intel to bring us a new mobile OS with native applications and Qt 4 as the default graphical library, I was overhelmed with joy. After my initial reservations, when I witnessed the weird squabble and sudden shift from Maemo to MeeGo, I finally gave in and bought the new flagship phone Nokia N9. The operating system and all the apps were astonishingly fast compared both to my previous semi-smart phone and to any Android device I've touched ever since. However within two weeks from my purchase it was annouced that Stephen Elop would be the new CEO of Nokia. I knew right away that the glorious era of MeeGo and native phone applications would never come. Within the next half of a year my shiny new phone became an obsolete brick with zero official support or updates and with no functional app store.

Skype

How hard can it be to screw up something that is working perfectly fine and generates a steady stream of revenue? It appears that in the hands of Microsoft nothing is impossible. A fast peer-to-peer encrypted chat and voice call application was transformed into incomprehensible mess that sports two variants which can't even properly interact together. I'm talking, of course, about the split to Skype and Skype for Business. From the rising new platform to an obsolete piece of software that works only randomly (the only version that seems to semi-successfully work is the installation on my android tablet).

While both of these events arguably occured before Satya Nadella became the new CEO of Microsoft, the direction in which Skype is evolving simply hasn't changed. Furthermore the introduction of projects such as Ubuntu on Windows and announcing SQL Server for Linux inspire only more skepticism on my side - for let's never forget the fabled triple E strategy (Embrace, Extend, Extinguish) Microsoft has used so many times in the past. To add one final drop to my bowl of mistrust, let's look at OneDrive.

OneDrive

When OneDrive was launched, it was clearly designed to pick a fight with Google Drive over their customers. In the free plan it offered thrice the size and that was quite enticing for me. Of course, when I was busy moving my files to the new cloud drive, it suddenly got shrinked back to the 5 GB limit.

What's next for GitHub

Just like with Nokia and OneDrive I've moved to GitHub shortly before the major change was announced. This time, however, I'm not waiting around to see what the damage will be. I sincerely hope this platform will stay the same unadultered cloud storage it has been so far, but I wouldn't bet on it. For all I know we can expect announcement of GitHub for Business, integration into Office 365 and login replacement with Microsoft account within few months.