Mitä tietovarastoa PowerAppsissa kannattaa käyttää? Aiheesta kuulee usein erilaisia heittoja. Yleisin näistä on takuulla
SharePoint on hidas
Tämän lisäksi Microsoft rummuttaa vahvasti
Common Data Service -yhdistin on nopein
Kehittäjien suosikki on kaikille selvä
Jos haluaa nopeaa, valintasi on SQL
Tehdään tällä kertaa leikkimielinen koe. Onko yllämainittujen vaihtoehtojen suorituskyvyssä PowerAppsin näkökulmasta millaisia eroja?
Koejärjestely
Luodaan projektitietoja varten
- SharePoint-lista ilman mitään säätöä (=indeksejä)
- Azureen SQL-tietokanta (halvin Basic -tilaus) ja sinne yksi taulu
- Common Data Service -entiteetti
Jokaiseen luodaan samat kentät
- Projektin nimi (Title)
- Projektipäällikkö (Project manager)
- Asiakkaan nimi (Customer)
- Arvioitu työmäärä (Hours)
- Prioriteetti (Priority)
Tämän jälkeen luodaan Flow, joka lisää jokaiseen tallennuspaikkaan tismalleen samat rivit. Rivien sisältö luodaan Rand() -funktiota hyödyntäen.
Varoitus! Tällaisella Flow:lla saat nopeasti päivittäisen request limittisi täyteen.
Hetken kuluttua jokaisessa tietovarastossa on 19 000 riviä. Voimme aloittaa testit.
Yksinkertainen galleria
Luodaan PowerApps, jossa on
- Alasvetovalikko, josta valitaan projektipäällikkö
- Galleria, joka näyttää projektit. Mikäli projektipäällikkö on valittu, suodatetaan projektit sen perusteella.
Asetetaan alasvetovalikon arvoiksi ”All”, sekä muutama projektipäällikkö.
Galleriassa esitetään joko kaikki projektit (Projektipäällikkö = ”All”) tai projektit, joiden projektipäällikkö on sama kuin alasvetovalikosta valittu projektipäällikkö.
Suorituskyvyn mittaamiseen käytetään PowerAppsin omaa uutta valvontatyökalua. Se ei näytä hirveän paljon tietoa, mutta on mukavan yksinkertainen.
Työkalu löytyy PowerAppsin vasemmasta reunasta ja avautuu omalle välilehdelleen.
Generoidaan alasvetovalikosta arvoja vaihtelemalla 35 pyyntöä tietolähteeseen. Tehdään tämä vuoronperään jokaisen tietolähteen kanssa. Lopuksi katsotaan, mitkä pyyntöjen keskimääräiset kestot olivat.
Päädymme seuraavaan.
- SQL: 274ms
- SharePoint: 266ms
- CDS: 370ms
Hieman yllättäen SharePoint on nopein, toki vain pienellä erolla SQL-kantaan. CDS hävisi tämän kierroksen.
Valvontatyökalusta näkee latausajan lisäksi myös vastauksen koon.
SharePointin palauttama tietojoukko on kooltaan 170kt. CDS:n vastaava luku 23kt. Tehokkain on SQL, joka palauttaa ainostaan 7kt.
Erot ovat ymmärrettäviä. SQL-taulun riveillä ei ole muita sarakkeita kuin meidän luomamme. SharePointin ja CDS:n riveillä on runsas joukko vakiosarakkeita (luontipäivä, muokkauspäivä luoja, muokkaaja jne ). Nämä kasvattavat liikuteltavan tiedon määrää.
Rivien suodatus StartsWith-funktion avulla
Pidetään koejärjestely muutoin samana, mutta suodatetaan galleriaa StartsWith-funktiolla.
Filter(ProjectsTest_1;
Dropdown2.Selected.Value = "All" Or
StartsWith(ProjectManager ;Dropdown2.Selected.Value))
Vaikuttaako tämä tuloksiin?
Ei.
- SQL: 279ms
- SharePoint 251ms
- CDS: 336ms
Tasaista on edelleen, SharePointin pitäessä paalupaikkaa.
Galleria, jonka jokaisella rivillä tehdään kysely
Lisätään lopuksi galleriaan sarake, jossa näytetään montako projektia samalle asiakkaalle on yhteensä.
Joko saataisiin eroja?
Kyllä. Nyt viimeiseksi jää SQL. SharePoint on edelleen nopein, mutta ero muihin on selvä.
- SQL: 1005ms
- SharePoint 401ms
- CDS: 708ms
Tietojen tallentaminen
Entäs miten vikkelää tietojen tallentaminen on eri tietovarastoihin? Lisätään näytölle lomake, jolla tallennetaan yhden projektin tiedot.
Tallennuksen jälkeen PowerApps päivittää automaattisesti samaan tietolähteeseen kytketyn gallerian.
Katsotaan miltä muutaman tallennuksen keskiarvot näyttävät.
SharePoint
- Tallennus 307ms (1675kt)
- Gallerian lataaminen uudelleen 245ms (171534kt)
CDS
- Tallennus 153ms (2233kt)
- Gallerian lataaminen uudelleen 300ms (21433kt)
SQL
- Tallennus 250ms (331kt)
- Gallerian lataaminen uudelleen 122ms (21433kt)
Katsottaessa ainoastaan rivin tallennukseen kuluvaa aikaa, kääntyi järjestys kokonaan. SharePoint oli kolmikon hitain ja CDS nopein.
Yhteenveto
Mitä tämän lyhyen testin perusteella voidaan päätellä? Jos yksinkertainen SharePoint-listan päälle toteutettu PowerApps tuntuu hitaalta, se ei välttämättä nopeudu pätkääkään vaihtamalla SharePoint SQL:ään.
Entä jos käytetään SQL:ssä Basic-tilauksen sijaan tehokkaampaa Standardia?
Kokeilin sitäkin. Ei mitään eroa (yksi käyttäjä, 17000 riviä).
Mutta ei tämä tietenkään ole näin yksinkertaista. SharePoint Onlinen vasteajat saattavat vaihdella hyvinkin paljon päivästä riippuen. SQL ja CDS ovat huomattavasti tasalaatuisempia.
Mikäli PowerAppsia käytetään hitaalla yhteydellä, saattaa SharePointin (ja CDS:n) palauttamat suurempikokoiset paluuviestit kääntää vaakakupin SQL:n puolelle.
Puhumattakaan kaikista muista SQL:n ja CDS:n mukanaan tuomista eduista.
Mutta ei se SharePoint nyt (tälläkään mittarilla) aivan huono ole yksinkertaisten sovellusten tietovarastoksi.
Olisipa mielenkiintoista tietää, miksi tuo lookup-filteröinti on nimenomaan SQL Serverillä hidasta – omilla SQL:n värillisillä laseilla maailmaa katsellessani helposti ajattelisin, että tuohan on juuri sellaista mitä varten SQL Server on viritetty, sen luulisi siis olevan sille helppoa hommaa. Saas nähdä riittäisikö oma uteliaisuus tutkimaan vielä palvelimen päästä, minkälaista kyselyä sinne tulee – olisiko siinä jotain vinkkiä.
TykkääTykkää
Jäi väärä väliotsikko juttuun. Tuosahan ei tehdä siis LookUp:ia vaan Filtteröintiä jonka perusteella vielä PowerAppsin päässä laskentaa (CountRows). Eli supertyhmää touhua.
Käytännössä siinä generoituu vain n kpl select kyselyitä. Täysi mysteeri, miksi se SQL connector ei diggaa tuosta.
TykkääTykkää