Problémom v oblasti Big Data je spracovávanie takého obrovského množstva dát v reálnom čase. Požiadavka na rýchle spracovanie veľkých dát býva častokrát v oblasti bankovníctva alebo v niektorých prípadoch dátovej analytiky.
Náš cieľ?
Celkom jasný – vytvoriť najrýchlejšiu databázu na svete.
Ako to celé funguje…
Klasické relačné databázy majú dáta usporiadané v riadkoch tabuľky a tieto dáta sa spracovávajú na procesore. Rýchlejší, ale zároveň zložitejší prístup je organizovať dáta do stĺpcov, kde tieto stĺpce spolu tvoria tabuľku. Tu nastáva problém s preusporiadavaním dát v rámci tabuľky – treba dávať pozor na to, že sa musia preusporiadať všetky stĺpce. Na toto treba myslieť hlavne pri indexovaní. Spracovávanie jednotlivých dopytov sa dá pri stĺpcových databázach ľahšie vykonávať na grafických kartách, ktoré síce majú menej výkonné jadrá oproti procesoru, ale za to ich majú mnohonásobne viac.
Tým pádom vieme lepšie využiť silu paralelizmu. Ďalšími úzkymi hrdlami sú pevné disky a zbernica. Zvolili sme prístup mať všetky dáta v operačnej pamäti a dáta, ktoré sa spracovávajú sa nakopírujú do video pamäte grafických kariet. Kopírovanie dát je stále veľmi časovo náročná operácia, najmä, keď každá milisekunda výpočtu je dôležitá. Preto sa snažíme znížiť potrebu kopírovania – robíme caching (prostredníctvom Least Reccently Used algoritmu) medzivýsledkov vo video pamäti grafických kariet.
Porovnanie rýchlosti s konkurenciou
Pre porovnanie sme zvolili databázu, ktorej dopyty sa spracovávajú na procesore – Microsoft SQL, avšak s nastavením Column Store. A ako druhého protivníka sme zvolili v súčasnosti najznámejšiu databázu akcelerovanú grafickými kartami – MapD (OmniSci). Naša databáza je ešte stále vo vývoji a predpokladáme, že v najbližších týždňoch prekonáme MapD (vyvíjame indexovanie dát a ich kompresiu kvôli priepustnosti zbernice).
Operačný systém | Ubuntu 18.04 |
Procesor | AMD Ryzen Threadripper 2950X 16-Core Processor 3.50 GHz |
Grafické karty | 2x NVIDIA GeForce GTX 1080 Ti |
Operačná pamäť (RAM) | 128 GB DDR4 3000 MHz |
Hardvér a softvér servera, na ktorom boli databázy testované.
Microsoft SQL | MapD | DropDBase | |
Prvý dopyt | 12885 ms | 50128 ms | 545 ms |
Druhý dopyt | 300 ms | 47 ms | 61 ms |
Porovnanie rýchlostí prvého a druhého dopytu (druhý dopyt využíva cache). Dopyty boli vykonávané nad 1 miliardou riadkov dát.
Použitie databázy na dátovú analytiku
Aby sme mohli jasne demonštrovať výhody nášho riešenia, vytvorili sme aj webový frontend, ktorý umožňuje používateľovi zvoliť si jednotlivé filtre (a tým vyskladať dopyt do databázy) a následne vidieť prepočítavanie údajov v reálnom čase.
Technológie
V projekte používame nasledovné technológie a programovacie jazyky:
- C++
- C#
- CUDA
- CMake
- Antlr 4
- Google Protocol Buffers
- Angular
- Leaflet
- Chart.js
- Bootstrap
- ASP.NET
Niečo o nás
Sme tím 8 študentov FIIT STU a na tomto projekte pracujeme v rámci školského predmetu v spolupráci s firmou Instarea. Našim pedagogickým vedúcim je Ing. Marek Lóderer.