Testovani databazovych systemu - vstupni pozadavky¶
- Soupis vstupnich pozadavku
- Srovnani existujicich databazovych systemu
- Testovaci scenare
- Testovaci dotazy
- Vysledky testu
Klicove pozadavky pro analyzu jsou vyznaceny tucne.
- Table of contents
- Testovani databazovych systemu - vstupni pozadavky
Mentat¶
Charakter dat¶
- Spousta zápisů nových dat, prakticky žádné změny (počítejme cca 3M zápisů za den)
- Statické dokumenty (Idea)
- Klíč ID
- Komplexní dokument (vnořená pole - Src[].IP4[])
- Potenciálně nové neznámé atributy
- Ale sada atributů, které se vyskytují vždy, nebo skoro vždy
- Relevantní data cca měsíc zpět
- Průměrná velikost dokumentu cca 1kB
Typické dotazy¶
- Viz Mentat/Alerts - Source.IP? A/Nebo Target.IP?, rozsah časů, detektor, kategorie
- Dej mi vše ke zprávě s ID=X
- Dej mi všechny zprávy z časového období (reporting)
NERD (reputační databáze)¶
Charakter dat¶
- Spousta zápisů a malých změn (cca 5M za den, půl na půl zápisy/změny)
- Klíč IP4/6, případně síť, případně doménové jméno, možná časem i něco úplně jiného
- Dokument - atributy, datové i booleany
- Sada atributů, které se vyskytují vždy, nebo skoro vždy
- Některé atributy s historií (v dokumentové db tedy nejspíš opět vnořená pole)
- Některé atributy komplexní (poddokument), ale spíš bez historie
Typické dotazy¶
- Dej mi vše k IP (včetně historie)
- Základní rychlé info k řadě IP
- Adresy, které splňují X (bez historie)
Navrhovany postup testovani¶
To hlavně pro představu, jaká jsou (Mentat) nebo nejspíš budou (NERD) data. Charakter je do velké míry podobný, rozdíl je hlavně v poměru zápisů/updatů. Nemá do začátku smysl testovat všechno, ale viděl bych to jako:
- vybrat vhodné db
- vhodně nalít cca měsíc Idea dat (a změřit zápisy)
- udělat pár vhodných reprezentativních dotazů (cold vs hot, vrať celý doc vs. vrať omezenou projekci)
- vybrat a nastavit vhodné indexy, případně vytáhnout vhodná data mimo dokument, pokud db podporuje třeba sloupcová data, nebo timeseries, nebo je to hybridní db (typicky PostgreSQL s podporou binárního JSONu)
- znovu nalít data (a změřit zápisy)
- znovu udělat dotazy
Bylo by dobré také¶
- Podívat se na efektivitu uložení (kolik data po nalití zaberou, kolik indexy, kolik statické sloupce, dokumentové db mívají overhead na jména klíčů).
- Podporuje db i agregace/analytické dotazy?
- Umí vracet uvolněné misté FS (vacuum/reclaim) a jak je to drahé?
- Umí replikaci a/nebo sharding?
- Chceme přesné výsledky, ne interpolace nebo statistické odhady
Poznamky Pavel¶
Tomovy zkušenosti:- mysql postgres sqlite
- fastbit
- Mongo
- postgresql (ph)
- orientdb (Vašek)
- arangodb (Vašek)
- elk (ph)
- cassandra (Vašek)
Dataset - měsíc Idea dat ("filesender")
Postup:- recherché - kandidáti
- pak se dohodneme, co je do začátku vhodné
- návrh dotazů (lze použít něco z Radkova výběru)
- ph+Mek: stroj na testování
Poznamky Tom¶
- Mentat a NERD mohou pouzivat dve ruzne nebo i jednu stejnou DB - zalezi na vysledku srovnani
- pro timestampy vyuzivat nativni databazovy typ (v rozliseni max. 1ms)
- nutna podpora IPv4/v6 adres, podsiti (rozsah, CIDR, seznam adres)
- proverit moznost vyuziti asynchronniho dotazovani (pollovani na db)
- pri testovani se zamerit i na prostorovou narocnost pro ulozeni dat
- pro testovani vyuzit sestavene dotazy od Radka Orkace + sadu typickych dotazu
- jako zakladni dataset pouzit lednova data z Mentatu v JSON formatu (40GB)
- open-source licence (BSD, GPL, MIT)
- HW bude dopresnen
- Mentat
- aktualne jsou vsechny polozky MongoDB indexovane - ma ale mensi vykon nez se ocekavalo
- uchovava 1 mesic kompletnich dat, 6 mesicu zajmovych dat
- vykonnostni problemy prevazne u slozitejsich uzivatelskych dotazu v ramci WebUI
- NERD
- v navrhu se pocita s dynamickou strukturou DB schematu
- zaznamy urcuji IP adresy, ke kterym se pripojuji relevantni informace
- uchovava data po dobu danou reputaci urciteho zdroje