Összetett JIRA adatbázis lekérdezések

Hasonló dokumentumok
CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Osztályok. 4. gyakorlat

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

ANDROID ALKALMAZÁSFEJLESZTÉS

Valós idejű megoldások: Realtime ODS és Database In-Memory tapasztalatok

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Programozás II. ATM példa Dr. Iványi Péter

Web-fejlesztés NGM_IN002_1

NAGY TELJESÍTM. Szerzők Dévai. István Automatizálási. és s Alkalmazott Informatikai Tanszék

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Microsoft SQL Server telepítése

Testreszabott alkalmazások fejlesztése Notes és Quickr környezetben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Abstract osztályok és interface-ek. 7-dik gyakorlat

SQLServer. SQLServer konfigurációk

Tudásalapú információ integráció

JavaServer Pages (JSP) (folytatás)

BIG DATA ÉS GÉPI TANULÁS KÖRNYEZET AZ MTA CLOUD-ON KACSUK PÉTER, NAGY ENIKŐ, PINTYE ISTVÁN, HAJNAL ÁKOS, LOVAS RÓBERT

Java és web programozás

Programozás II gyakorlat. 4. Öröklődés

A roma közösségekben dolgozó védőnők munkafeltételeinek javítása című projekt OKTATÁSI ANYAG

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)

Fényvezető hálózatok tervezését és kivitelezését támogató eszköz. NETPlanners Portal

Deep Learning a gyakorlatban Python és LUA alapon Felhasználói viselkedés modellezés

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

USB adatgyűjtő eszközök és programozásuk Mérő- és adatgyűjtő rendszerek

Java programozási nyelv 5. rész Osztályok III.

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Elemi alkalmazások fejlesztése IV.

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

MySql elindítása. Elemi alkalmazások fejlesztése IV. Feladat. Az alkalmazás adatbázisa

Adatbázisok webalkalmazásokban

Collections. Összetett adatstruktúrák

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Java Programozás 11. Ea: MVC modell

Nem klaszterezett index. Beágyazott oszlopok. Klaszterezett index. Indexek tulajdonságai. Index kitöltési faktor

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Mobil Informatikai Rendszerek

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Programozási nyelvek és módszerek Java Thread-ek

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Gráfok mindenhol. x $ SZENDI-VARGA JÁNOS IOT SOCIAL NETWORKS FRAUD DETECTION MASTER DATA MANAGEMENT RECOMMENDATION ENGINES. Internet of Things

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Weblog elemzés Hadoopon 1/39

SAP Business One. Áttekintés, gyakorlati ismertetı. Mosaic Business System Kft.; Support:

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Virtuális Obszervatórium. Gombos Gergő

OOP: Java 8.Gy: Abstract osztályok, interfészek

Tananyagfejlesztési módszer platformfüggetlen tananyagcsomagok elıállítására

Bevezetés: az SQL-be

Modern unit és integrációs tesztelés

Programozási technológia

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

Analitikai megoldások IBM Power és FlashSystem alapokon. Mosolygó Ferenc - Avnet

Szoftvertechnológia alapjai Java előadások

FÉNYVEZETŐ HÁLÓZATOK TERVEZÉSÉT ÉS KIVITELEZÉSÉT TÁMOGATÓ ESZKÖZ

NETinv. Új generációs informatikai és kommunikációs megoldások

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

PHP5 Új generáció (2. rész)

Személyügyi nyilvántartás szoftver

Algoritmusok és adatszerkezetek II.

Függőség injekció Konstantinusz Kft 2010

ivir vezetői információs rendszer

Mobil Informatikai Rendszerek

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Feladatok cím szerint

Amazon Web Services. Géhberger Dániel Szolgáltatások és alkalmazások március 28.

C++ fejlesztés az ECLIPSE környezetben

BME MOGI Gépészeti informatika 8.

Hello, EJB! Egy egyszerű példa

Bruttó ár: 0 Ft. Háttértár mérete: Háttértár típusa: Lemez meghajtó: Kijelző méret: LED háttérvilágítás, 16:9 képarány

Csináljunk az adatból információt! A Lone-Soft listázó keretrendszerrel

Nem klaszterezett index. Klaszterezett index. Beágyazott oszlopok. Index kitöltési faktor. Indexek tulajdonságai

Adatbázis rendszerek I

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Programozási nyelvek Java

JAVA PROGRAMOZÁS 2.ELŐADÁS

Entity Framework alapú adatbáziselérés

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

ADATBÁZIS VERZIÓKÖVETÉSE: LIQUIBASE

A többképernyős médiafogyasztás - Változó médiafogyasztási szokások, közösségi média

Android Pie újdonságai

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Java és web programozás

JEE tutorial. Zsíros Levente, 2012

Az emelt szintű. informatika érettségi. programozási feladatainak. megoldása Java nyelven. NetBeans IDE 8.1 környezetben

Újdonságok a Google műhelyéből. Péter Ekler

SAMSUNG SSM-8000 szoftvercsomag

Átírás:

Összetett JIRA adatbázis lekérdezések Hatékonyan és egyszerűen programozva Kicsák Ádám adam.kicsak@everit.biz

JIRA jelentősége az EverIT Kft.-nél Agilis fejlesztési módszer támogatása Time tracking Fejlesztők és menedzserek közötti kommunikáció Testreszabhatóság, bővíthetőség Remek támogatás az Atlassian felől A termék folyamatosan fejlődik

Motiváció saját plugin fejlesztésre Megoldás keresése kényelmes munkanapló készítésére Nem találtunk kielégítő plugint Igények kielégítése saját JIRA plugin formájában A belső fejlesztések publikálása az Atlassian Marketplacen Saját fejlesztések termékké váltak A JIRA plugin fejlesztés világában való elmélyülés JIRA pluginokban a bevált technológiák kipróbálása, mint pl. Querydsl

EverIT plugin-ok RESTful Worklog Query Timetracker Holidaychecker Fillchecker

Timetracker Könnyen átlátható munkanapló, és jelentések

Felmerült problémák plugin fejlesztés közben A beépített eszközökkel nem sikerült kellő hatékonysággal adatokat lekérni A lekérdezések nehezen átláthatóak Nézetek és feltételek külön helyen Natív SQL parancs összeállítása kézzel Nagy mennyiségű adatoknál jelentősen lassulnak Megoldást kell találni hatékony lekérdezésre

Querydsl jelentősége Régebben JPA vagy natív lekérdezések voltak használatban JPA robosztusabb, többet tud, de sok probléma adódott használata közben Natív kérések Adatbázis vendor-lock Jelenleg a Querydsl preferált keretrendszer Egyszerűen programozható Átlátható lekérdezések Csak lekérdezések, semmi magic gyors Sok adatbázist támogat

Querydsl jelentősége Miért fontos, hogy egy jó keretrendszer dolgozzon a háttérben? Gyors kiszolgálás Megfelelő felhasználói élmény Átlátható kód Hatékony munkaórák Ismert keretrendszer Könnyen csatlakozhat új fejlesztő Jó keretrendszer támogatás Hatékony bug javítás

JIRA plugin-ok és Querydsl Az igény a komolyabb JIRA jelentésekkel szemben, és a Querydsl használata során szerzett jó tapasztalatok alapján: Két út is lehetséges: Querydsl kipróbálása JIRA plugin-ban Atlassian Pocketknife Querydsl Saját Querydsl plugin komponens Querydsl bevezetésétől várt eredmény: Hatékony, és átlátható lekérdezések.

Querydsl példa lekérdezés /* Queries the worklogs this week. */ private static final class WorklogsThisWeekQuery implements QuerydslCallable<List<WorklogDTO>> { @Override public List<WorklogDTO> call(final Connection connection, final Configuration configuration) throws SQLException { QWorklog worklog = new QWorklog("wl"); Canledar from = getmidnightatfirstdayofweek(); Calendar to = getmidnightatfirstdayofnextweek(); } return new SQLQuery<WorklogDTO>(connection, configuration).select( Projections.fields(WorklogDTO.class, worklog.author, worklog.created, worklog.worklogbody)).from(worklog).where(worklog.created.between( new Timestamp(from.getTimeInMillis()), new Timestamp(to.getTimeInMillis()))).fetch(); [...] }

Benchmark körülmények Adatbázis 15 projekt Több ezer regisztrált issue Megközelítőleg 100E munkanapló bejegyzés Tesztgép JIRA és adatbázis kiszolgáló ugyanazon a gépen Intel Core i5, 4 mag, 8 szál 8GB memória SSD háttértár

Chart report benchmark

Table report benchmark

Worklog Query benchmark

Konklúzió Nagy mennyiségű adat lekérdezésekor elengedhetetlen, hogy a lekérdezések megfelelő mértékben optimalizáltak legyenek. A Querydsl keretrendszer SQL közeli, de adatbázis független lekérdezések létrehozására képes, melyek jól olvashatók, könnyen paraméterezhetőek. A Benchmark-ok igazolják, hogy a Querydsl használatával sikerült a JIRA pluginjeink lekérdezéseit nagy mértékben optimalizálni.

Köszönöm a figyelmet!