Project

General

Profile

Testovaci scenare

  1. Soupis vstupnich pozadavku
  2. Srovnani existujicich databazovych systemu
  3. Testovaci scenare
  4. Testovaci dotazy
  5. Vysledky testu

Puvodni navrh testovacich scenaru

TS 1: Zapis dat a indexace

TS 1.1: Vliv fragmentace na zapis dat

  • Postup:
    • 1. pred testem je nutne inicializovat datovy adresar (DROP TABLE)
    • 2.a spusteni casovace
    • 2.b zapis posledni tretiny datasetu pomoci individualnich operaci INSERT
    • 2.c ukonceni casovace
    • 3. pred testem je nutne inicializovat datovy adresar (DROP TABLE)
    • 4. zapis prvnich dvou tretin datasetu pomoci individualnich operaci INSERT, jednotlive casovani
    • 5.a spusteni casovace
    • 5.b smazani 1/2 zaznamu podle nahodneho vyberu cisel (bulk remove)
    • 5.c ukonceni casovace
    • 6.a spusteni casovace
    • 6.b dohrani posledni tretiny datasetu pomoci individualnich operaci INSERT
    • 6.c ukonceni casovace
  • Poznámky:
    • zkrátit dobu, aby nedocházelo k ovlivnění kvůli nedostatku zdrojů testovacího stroje (32GB RAM):
      • dataset je cely nahran do pameti pred zahajenim testu (mongo nevyuziva vsechnu pamet, overit vliv pri ostatnich DB systemech)
    • potrebujeme vedet, zdali se jedna v Mentatu o import, copy, insert, bulk insert? - smyčka vykonavající INSERT nad záznamy ze souborů zízkaných pomocí warden-filer
    • zjistovani velikosti dat zruseno - wiredTiger pouziva komprimovany storage
  • Vystup:
    • doba zapisu posledni tretiny datasetu:
      • do prazdne databaze
      • do fragmentovane database
    • doba zapisu prvni tretiny datasetu do prazdne databaze
    • doba zapisu druhe tretiny datasetu do databaze obsahujici prvni tretinu

TS 1.2: Vliv fragmentace na zapis dat (s indexem)

  • Postup:
    • 1.a pred testem je nutne inicializovat datovy adresar (DROP TABLE)
    • 1.b vytvoreni indexu
    • 2.a spusteni casovace
    • 2.b zapis posledni tretiny datasetu pomoci individualnich operaci INSERT
    • 2.c ukonceni casovace
    • 3.a pred testem je nutne inicializovat datovy adresar (DROP TABLE)
    • 3.b vytvoreni indexu
    • 4. zapis prvnich dvou tretin datasetu pomoci individualnich operaci INSERT, jednotlive casovani
    • 5.a spusteni casovace
    • 5.b smazani 1/2 zaznamu podle nahodneho vyberu cisel (bulk remove)
    • 5.c ukonceni casovace
    • 6.a spusteni casovace
    • 6.b dohrani posledni tretiny datasetu pomoci individualnich operaci INSERT
    • 6.c ukonceni casovace
  • Poznámky:
    • zkrátit dobu, aby nedocházelo k ovlivnění kvůli nedostatku zdrojů testovacího stroje (32GB RAM):
      • dataset je cely nahran do pameti pred zahajenim testu (mongo nevyuziva vsechnu pamet, overit vliv pri ostatnich DB systemech)
    • potrebujeme vedet, zdali se jedna v Mentatu o import, copy, insert, bulk insert? - smyčka vykonavající INSERT nad záznamy ze souborů zízkaných pomocí warden-filer
    • zjistovani velikosti dat zruseno - wiredTiger pouziva komprimovany storage
  • Problémy:
    • urcit seznam indexovanych poli
  • Vystup:
    • doba zapisu posledni tretiny datasetu:
      • do prazdne databaze
      • do fragmentovane database
    • doba zapisu prvni tretiny datasetu do prazdne databaze
    • doba zapisu druhe tretiny datasetu do databaze obsahujici prvni tretinu

TS 1.3: Doba zapisu a vliv indexace na velikost DB

  • Postup
    • 1. pred testem je nutne inicializovat datovy adresar
    • 2.a spusteni casovace
    • 2.b zapis dat z celeho datasetu pomoci operace INSERT
    • 2.c ukonceni casovace
    • 3.a spusteni casovace
    • 3.b vykonani indexace
    • 3.c ukonceni casovace
  • Poznamky:
    • vypustene velkosti dat a indexu, jedna se o vlastnost datasetu
  • Vystup:
    • doba zapsani celeho datasetu do database
    • doba indexace

TS 1.4: Doba zapisu pri vytvorenych indexech

  • Postup
    • 1. pred testem je nutne inicializovat datovy adresar
    • 2.a vykonani indexace
    • 3.a spusteni casovace
    • 3.b zapis dat z celeho datasetu pomoci operace INSERT
    • 3.c ukonceni casovace
  • Poznamky:
    • vypustene velkosti dat a indexu, jedna se o vlastnost datasetu
  • Vystup:
    • doba zapsani celeho datasetu do database

TS 2: Kompletni cteni

Poznámky:
  • Další scénáře:
    • Test vlivu získávání count
    • Test přímého vs. opačného řazení (t.j. ten samý dotaz s DESC)
  • Problemy
    • Spravne pochopeni duvodu mereni hot a cold dotazu? - oprava:
      • HOT dotaz proti COLD bude mít malé časové posunutí, napr.: COLD dotaz na 14:00 až 15:00, HOT na 14:15 až 15:15
        • předpokládaný vliv diskové cache větší než interní agregační cache DB server, t.j. možnost paradoxu - lepší výkon DB serveru nevyužívajícího všechnu dostupnou paměť.
    • Řazení - vždy jen podle času
      • Data v DB by z principu měla být seřazena podle času - je možná nechronologicita? pokud ano, navržený scénář pro import dat by ji měl modelovat
  • Vystup:
    • cold
      • doba vykonani dotazu pro 1 den
    • hot
      • doba vykonani dotazu pro 3 dny
      • doba vykonani dotazu pro 1 den

TS 2.1: Kompletni “cold” cteni dat

  • Postup
    • 1. vyliti cache pameti OS a databazoveho serveru
      # service mongodb stop
      # sync
      # echo 3 > /proc/sys/vm/drop_caches
      # service mongodb start
      
    • 2.a spusteni casovace
    • 2.b spusteni jednoho dotazu nad casovym oknem 1 den - Mentat, HAWAT, SABU
    • 2.c ukonceni casovace

TS 2.2: Kompletni “hot” cteni dat

  • Postup
    • 1. vyliti cache pameti OS a databazoveho serveru
      # service mongodb stop
      # sync
      # echo 3 > /proc/sys/vm/drop_caches
      # service mongodb start
      
    • 2.a spusteni casovace
    • 2.b spusteni jednoho dotazu nad casovym oknem 1 hodina (13:00 - 14:00) - HAWAT
    • 2.c ukonceni casovace
    • 2.d spusteni casovace
    • 2.e spusteni jednoho dotazu nad casovym oknem 1 hodina (13:05 - 14:05)
    • 2.f ukonceni casovace

TS 2.3: Mereni vlivu Count

  • Postup
    • 1. vyliti cache pameti OS a databazoveho serveru
      # service mongodb stop
      # sync
      # echo 3 > /proc/sys/vm/drop_caches
      # service mongodb start
      
    • 2.a spusteni casovace
    • 2.b spusteni jednoho dotazu - HAWAT, SABU - dotaz 1, Ostatni - dotaz 2
    • 2.c ukonceni casovace
  • Vystup
    • doba trvani ziskani celkoveho poctu vysledku
    • speciálně porovnání HAWAT1 vs. Ostatni2 - vliv použití zmíšeného filtru (index/noindex)

TS 2.4: Mereni vlivu opacneho razeni

  • Postup
    • 1. vyliti cache pameti OS a databazoveho serveru
      # service mongodb stop
      # sync
      # echo 3 > /proc/sys/vm/drop_caches
      # service mongodb start
      
    • 2.a spusteni casovace
    • 2.b spusteni jednoho dotazu - HAWAT, SABU - dotaz 1
    • 2.c ukonceni casovace

TS 2.5: Mereni skalovani v zavislosti na velikosti seznamu IP adres

  • Postup - kazdou velikost seznamu (2,4,8,16,32,64,128,256)
    • 1. vyliti cache pameti OS a databazoveho serveru
      # service mongodb stop
      # sync
      # echo 3 > /proc/sys/vm/drop_caches
      # service mongodb start
      
    • 2.a spusteni casovace
    • 2.b spusteni jednoho dotazu - Ostatni
    • 2.c ukonceni casovace
  • Vystup
    • doba trvani dotazu v zavislosti na velikosti seznamu IP adres

TS 3: Davkove cteni pomoci “SKIP LIMIT”

  • Postup
    • Časování sady dotazů: HAWAT1, HAWAT3, HAWAT4, HAWAT5, HAWAT6
  • Poznámky:
    • Pro TS3 + TS4 HOT vs COLD: načíst 1., 2., 3., stránku a poté znovu 1. s malou změnou (posun o 5 minut)
  • Vystup

TS 3.1: Davkove “cold” cteni pomoci “SKIP LIMIT” posledni stranky

TS 3.2: Davkove “cold” cteni pomoci “SKIP LIMIT” posledni strany opacneho poradi

TS 3.3: Davkove “hot” cteni pomoci “SKIP LIMIT” od zacatku

TS 3.4: Davkove “hot” cteni pomoci “SKIP LIMIT” od konce