Billingo.hu A Billingo online számlázó blogja. Gyors és élvezetes elektronikus számlázás.
Blog / Egyéb / Mi fán terem az ElasticSearch …
Egyéb - 2016.03.10. - 4 p. olvasás

Mi fán terem az ElasticSearch és miért lett ettől sokkal-sokkal jobb a Billingo?

Február utolsó hetében szépen lassan elkészül az egyik kedvenc fejlesztésünk, és úgy éreztük, hogy eljött az ideje megosztani veletek, hogy mi is az. A Billingo gyorsabb lesz. Sokkal-sokkal gyorsabb!

ElasticSearch

De kezdjük az elején, mi is történt pontosan?

Amikor 2013 végén a Billingot elkezdtük tervezni még a legmerészebb álmainkban sem gondoltuk volna, hogy egyszer ott fogunk tartani ahol ma. Sok ezren használjátok a Billingot nap mint nap, közel 200 ezer számla lett kiállítva több mint 100 ezer ügyfél részére, több mint 300 ezer termékről. Mindez nem egészen két év alatt. Ráadásul a forgalmunk szinte exponenciálisan növekedik napról napra. Azonban tavaly már bizonyos felhasználóknál érezhetően elkezdett lassulni a rendszer. Ezt részben a statisztikák folyamatos számolása okozta, amit ugyan különböző cacheléssel tudtunk puhítani, de a megoldás nem volt tökéletes. Sőt! Két lépcsőben fogalmaztuk meg fejlesztést a sebesség növeléséhez. Elsősorban a régi szervereinket le kellett cserélni új és modern szerverekre. Erre sor került még tavaly év végén. A második lépcsőben pedig a teljes számlalistát, a statisztika számolást és keresést is újra kellett gondolni. A keresés mindezektől függetlenül is egy olyan része a Billingónak, amelynek egy sokkal központibb szerepet és jobb működést szánunk. Mi fán terem az ElasticSearch és miért lett ettől sokkal-sokkal jobb a Billingo? De hogy jön mindehhez az ElasticSearch?

A Billingo és az ElasticSearch

Az ElasticSearch az Apache Lucene nyílt forráskódú projektből kinőtt szintén nyílt forráskódú keresőmotor. Nagyon hasonlít a már meglévő Apache Solr projekthez ami szintén a Lucene-re épül. Sőt, elmondható, hogy hajszál vékony különbség van a kettő között. Több ok is volt, ami miatt az ES mellett döntöttünk:

Dokumentum séma liberális és könnyed kezelése

Könnyebben és jobban lehet skálázni az egész rendszert JSON natív ElasticSearch ökoszisztéma: LogStash és Kibana Az egész művelet tulajdonképpen egészen egyszerű. Megfogunk egy JSON dokumentumot, amit felvezetünk ES-be, ami pedig ebből csinál egy invertált indexet. Nagyon egyszerű példával:

{
    "id": 12345,
    "client.name": "Teszt Elek"
}

A felvitt JSON dokument

Az invertált index azt mondja meg, hogy a "Teszt Elek" név mely azonosítókhoz tartozik. Így nagyon gyorsan lehet keresni a dokumentumokban, hiszen csak megkeressük az invertált indexben, mely azonosítók tartoznak a keresett szóhoz és visszaadjuk a legközelebb eső dokumentumokat. Így elkerülhető, hogy minden dokumentumot egyesével végig kelljen vizsgálni. Természetesen ez egy borzasztóan leegyszerűsített példa volt, a háttérben bonyolult algoritmusok futtatnak analíziseket a felvitt adatokon.

És ez miért is jó?

Azon kívül, hogy a keresés sokkal gyorsabb lesz, van egy másik nagyon fontos és jó funkciója az ElasticSearch-nek. A csoportosításokkal (aggregations) tulajdonképpen a dokumentumok mezőin (értékein) különböző számolásokat tudunk végezni valamint a szűrőkkel (filter) tudjunk pontosítani az értékek számolását. Az egész nagyjából úgy működik, hogy először szűrőkkel meghatározunk egy vödröt (bucket). Például legyen az egyik ilyen vödör a nem piszkozat számlák halmaza, amelyeket január 1. és január 31. között állítottak ki. Ezután ezen a vödrön különböző számításokat (metrics) tudunk végezni, például összeadni a számlák végösszegeit, hogy megkapjuk a január hónap teljes bevételét. Természetesen a szőrökön kívül a keresést (query) is használhatjuk, hogy tovább finomítsuk a lekérdezésünket. Azonban összehasonlítva a régi relációs adatbázisban történő lekérdezésekkel, ez elképesztő sebességgel történik.

Jó, jó, de mennyivel lett gyorsabb a Billingo?

Hát nem akarjuk elszólni, és mindenkinél másképp fog jelentkezni a sebesség növekedés, de a mi egyik teszt fiókunkban (ami direkt burn-in tesztre van kihegyezve) a 22-30 másodperces betöltést sikerült leszorítanunk egy tized (!!) másodperc alá.

Csak az ElasticSearch-nek köszönhetően?

Nem. Rengeteget dolgoztunk további cache megoldásokon, de azért ennek a javulásnak az oroszlán részét az ElasticSearch bevezetésének köszönhetjük. :)

Szuper! Hogyan tovább?

Már most sokkal jobb a keresőnk, mint eddig bármikor, és a célunk az, hogy még tovább fejlesszük ezt a részét is a programnak, hogy még kényelmesebb legyen a Billingo használata azok számára is, akik sok-sok ezer számlával használják. Már most lehet keresni partnerre, email címre, termék nevekre, megjegyzésekre és ezeket tovább szeretnénk bővíteni, valamint önmagában a kereső használatát is szeretnénk még egyszerűbbé tenni. Nem hiszed? Kattints ide és próbáld ki milyen gyors lett a Billingo »

Címkék

Blog cikk értesítő

Blog cikk értesítő

Iratkozz fel, ha szeretnél tudni a számlázással kapcsolatos legfrissebb hírekről és érdekelnek az akciók.

Back to Top
online számlázás Tudástár vállalkozás fejlesztés NAV Törvény KATA hasznos tippek új funkció e-számla adózás webáruház online számlaadat szolgáltatás kata 2020 nav-bekötés könyvelés kéziszámla adatszolgáltatás katás vállalkozás kata adózás marketing bejelentési kötelezettség számlasablon koronavírus biztonság felhő digitális archiválás e-kereskedelem adatszolgáltatási kötelezettség online számlázó nav online számla számlatömb online számla és billingo összekötés tévhitek kata adatszolgáltatás nav online számla regisztráció online adatszolgáltatási kötelezettség ügyfélszolgálat áfa e-számlázás katás számlázás pénztárgép billingo NAV bekötés számlázó program váltás katás vállalkozás bejelentése online számla regisztráció kata szüneteltetése nav adatszolgáltatás startup fintech számla adó katás vállalkozás adatszolgáltatása egyéni vállalkozás kata megszűnése kata megszüntetése kata vállalkozás megszűnése szakértői cikk online számla koronvírus nav online számla összekötés fenntarthatóság Billingo előfizetés Ingyenes Billingo társadalmi felelősségvállalás támogatás Bonácz Zsolt Webshippy webáruház logisztika integráció előlegszámla előlegszámla készítése GDPR kata bejelentés kata keret könyveléstámogatás egyéni vállalkozás indítása API könyvelői fiók egyéni vállalkozás szüneteltetése 2020 könyvelői összekötés koronajárvány nav online adatszolgáltatás Díjbekérő Proforma e-számlák díjak elismerés adatvédelmi tájékoztató adatvédelem egyéni vállalkozás szüneteltetése számlázó program választás PSD2 nyílt bankolás számlainformációs szolgáltatás számlaadatok jogszabályváltozás banki összekötés összekötés