1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O...
Transcript of 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O...
![Page 1: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/1.jpg)
1. Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi
![Page 2: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/2.jpg)
Jak jsme si vybrali Apache Derby Lukáš Petrlík
![Page 3: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/3.jpg)
Agenda
1. Kontext – produkt a jeho po�žadavky 2. Proces a kritéria výběru databáze 3. Iterace 1 a 2: eliminace kandidátů jednoduchými kritérii 4. Iterace 3 a 4: základní testy výkonnosti 5. Iterace 5: ověření výběru – testy výkonnosti a robustnosti 6. Závěr
![Page 4: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/4.jpg)
Kontext výběru databáze (produkt)
Kerio Technologies – ústředí v USA, vývoj v ČR (Plzeň)
• jeden z produktů Kerio Connect, dříve Kerio MailServer – e-mailový a groupwarový server pro malé a střední firmy – platformová neutralita – nyní Windows, Linux a Mac OS X – neutralita vůči klientským aplikacím (webové prohlížeče,
Microsoft Outlook, Entourage, IMAP klienti, Apple iCal a Address Book, mobilní telefony…)
![Page 5: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/5.jpg)
Kerio Connect (ukázka webového rozhraní)
![Page 6: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/6.jpg)
Kerio Connect (architektura a nový modul)
User Database Configuration
XML Files External LDAP Server
IMAP, ...
LDAP
ActiveSync
Embedded HTTP Server
SMTP server
Message Queue Store (Mail and Groupware Items)
WebMail API
Blacklists Caller ID
Sieve Filters
Antivirus
Antispam Backup Searching Quota
Messages Folders ACL
WebAdmin API WebDAV atd.
New Module
![Page 7: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/7.jpg)
Nový modul a výběr databáze
• vlastní databázi s replikovanými částmi e-mailů a groupwarových dat
• nemá vlastnosti typické obchodní aplikace
Základní po�žadavky: • běh na všech podporovaných platformách • relativně jednoduché DB schema (slo�žky a zprávy) • soubě�žný přístup více klientů • přístup převá�žně pro čtení
![Page 8: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/8.jpg)
Plán výběru databáze • najít velkou mno�žinu kandidátů • rychle (= levně) eliminovat nevhodné kandidáty u�žitím
jednoduchých kritérií • podrobnější průzkum např. 5 z nich • pro konečné rozhodnutí testy výkonnosti a spolehlivosti
Poznámky: • abychom si byli 100% jisti správností volby, museli bychom
MS2 implementovat a nasadit se všemi kandidáty! • snaha vybrat dostatečně pravděpodobně dobré řešení
![Page 9: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/9.jpg)
Kritéria výběru databáze
• Výkonnost a robustnost • Cena a licence – musí být přijatelná • Aktivita vývoje – nesmí být mrtvý produkt • Podpora platforem – Windows, Mac, Linux • Kód (pokud je open source) – kvalita kódu • Dokumentace a podpora • Transakce, multithreading a zamykání, indexy... • Limity, např. maximální počet tabulek, záznamů...
![Page 10: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/10.jpg)
1. kolo výběru (shrnutí) Kritéria výběru: • status vývoje (nechceme alfa nebo mrtvý software) • podporované platformy • licence (např. GPL-only knihovny nemů�žeme pou�žít)
Shrnutí: • nalezeno 97 kandidátů • 72 kandidátů odmítnuto
z toho: 38 status vývoje, 29 platformy, 5 licence • 25 vstoupilo do druhého kola
Nejznámější odmítnutá: Oracle Database • 10g r2 byla podporována na Mac OS X - Intel x86-64 • 11g u�ž není na Mac OS X podporována • Oracle zmenšuje počet podporovaných platforem od verze 9i
(2001)
![Page 11: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/11.jpg)
2. kolo výběru (25 vstupních kandidátů)
SQL and relační • Apache Derby (SQL) • Cache (object oriented with SQL) • H2 Database Engine (SQL) • HSQLDB and HyperXtremeSQL
(SQL) • Informix (SQL) • Ingres (SQL) • Mnesia DBMS (relační, Erlang) • MonetDB (SQL) • MySQL (SQL) • One$DB/Daffodil DB (SQL) • PostgreSQL (SQL) • RDM Server (SQL) • SQL Anywhere (SQL) • SQLite (SQL)
nerelační • Apache CouchDB (schema-less) • Apache Hadoop HBase
(bigtable-like) • Apache Jackrabbit (hierarchické
úlo�žiště s verzováním) • Berkeley DB – C (flatfile) • Berkeley DB – Java (flatfile) • Berkeley DB XML (XML) • eXist (XML) • hamsterdb (flatfile) • NeoDatis ODB (objektově or.) • Perst (objektově orientovaná) • Sedna (XML)
![Page 12: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/12.jpg)
2. kolo výběru (shrnutí) Kritéria výběru: • podpora transakcí • úroveň paralelismu (musí podporovat soubě�žné čtení a
zápis) • limity (např. počet záznamů v tabulce)
Shrnutí: • vstupem 25 kandidátů • 16 kandidátů odmítnuto, 9 vstoupilo do třetího kola
Nejznámější odmítnutá: PostgreSQL • zatím není vícevláknová, potí�že se škálovatelností
(paralelní update)
![Page 13: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/13.jpg)
3. kolo výběru (9 vstupních kandidátů)
SQL and relační
• Apache Derby (SQL) • Informix (SQL) • Ingres (SQL) • MySQL (SQL) • RDM Server (SQL) • SQL Anywhere (SQL)
nerelační
• Berkeley DB – C (flatfile) • Berkeley DB – Java (flatfile) • Perst (objektově orientovaná)
Kritérium výběru: • základní výkonnostní test s nativním API
Shrnutí: • vstupem 9 kandidátů • 4 kandidáti odmítnuti, 5 vstoupilo do čtvrtého kola
![Page 14: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/14.jpg)
3. kolo výběru (výstup) SQL and relační
• Apache Derby (SQL) • Informix (SQL) • Ingres (SQL) • MySQL (SQL) • RDM Server (SQL) • SQL Anywhere (SQL)
nerelační
• Berkeley DB – C (flatfile) • Berkeley DB – Java (flatfile) • Perst (object oriented)
Nejznámější odmítnutá: Berkeley DB (C i Java verze) • v TDS (transakčním) modu nejsou výkonnější ne�ž SQL
databáze • transakční čtení zabírá příliš paměti
![Page 15: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/15.jpg)
4. kolo výběru (základní výkonnostní test)
insert ix
num
insert ix str
query ix
num
query ix str
sread ix
num
sread ix str
upd ix
num
upd ix str
... del ix str
Derby embedded
207 347 100 151 9 7 91 117 ... 255
Derby network
543 626 374 417 11 8 110 125 ... 277
MySQL 1131 1168 9325
14338
15 20 1789
1947
... 2294
DB 1 456 484 7410
11585
134 137 526 735 ... 1182
DB 2 2275
2397
2043
2426 13 10 115 135 ... 226
DB 3 362 406 329 405 9 6 180 117 ... 229
![Page 16: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/16.jpg)
4. kolo výběru (shrnutí) Kritérium výběru: • základní výkonnostní test (s JDBC)
Shrnutí: • vstupem 5 kandidátů • vybráni 2 kandidáti
– Apache Derby – pravděpodobný nejlepší kandidát – DB 3 – druhá nejlepší v jednoduchém testu, použita jako reference
Nejznámější odmítnutá: MySQL s InnoDB • výkonnost (select) • nespolehlivost při větší zátě�ži • crashe v InnoDB při porušené DB
![Page 17: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/17.jpg)
4. kolo výběru (omezení platnosti)
caveat |ˈkavēˌät; ˈkäv-| noun nabádání k obezřetnosti
Cílem bylo získání základní představy o chování databáze.
• porovnáváme systémy s velmi rozdílnými vlastnostmi • zvoleno "out of the box" nastavení • bez ladění výkonu kromě 50 MB cache (kde to bylo mo�žné) • mikro-benchmark, není skutečný benchmark • nekopíruje přesně očekávané pou�žití MS2
Proto ještě ověření výkonnosti podrobnějšími testy.
![Page 18: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/18.jpg)
5. kolo – testy výkonnosti: čtení
Select • proměnná velikost DB • spojení (join) 2 a�ž 8 tabulek • degradace při fragmentaci DB • GROUP BY • testy s předpokládaným skutečným DB schematem
![Page 19: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/19.jpg)
5. kolo – testy výkonnosti: čtení Závislost na počtu čtenářů
• s MySQL test nedokončen, JDBC driver alokuje příliš paměti
![Page 20: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/20.jpg)
5. kolo – testy výkonnosti: čtení Jednoduché dotazy, závislost na velikosti databáze
![Page 21: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/21.jpg)
5. kolo – testy výkonnosti: vkládání Insert • proměnné mno�žství řádků v transakci • proměnná velikost DB • přítomnost/nepřítomnost indexů • typ dat – náhodná/nenáhodná data • proměnný počet čtenářů nebo písařů
![Page 22: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/22.jpg)
5. kolo – testy výkonnosti: vkládání Závislost na velikosti databáze
![Page 23: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/23.jpg)
5. kolo – testy výkonnosti: vkládání Derby – vkládání za přítomnosti čtenářů, serializovatelné
transakce
![Page 24: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/24.jpg)
5. kolo – testy robustnosti
Uvíznutí (deadlock) • čas detekce a zotavení z uvíznutí
Zotavení po havárii • zrušení procesu v průběhu vkládání nebo změn • vypnutí napájení v průběhu vkládání nebo změn • kontroly čtením celé DB
![Page 25: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/25.jpg)
5. kolo – testy robustnosti Čas zotavení po uvíznutí (deadlock recovery)
![Page 26: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/26.jpg)
5. kolo – testy robustnosti
• po zrušení procesu/vypnutí napájení se DB v�ždy zotavila • doba zotavení závisí na operacích prováděných při/před
havárií • v testech zotavení proběhlo do 40 sekund
• objeveno mo�žné uvíznutí v proceduře pro kontrolu konzistence tabulky SYSCS_CHECK_TABLE, pokud byla vyvolána po zotavení
![Page 27: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/27.jpg)
5. kolo – shrnutí Testy výkonnosti • insert • select • bloby • spouště (triggers)
Testy robustnosti • detekce a zotavení z uvíznutí (deadlocks) • zotavení po havárii
Shrnutí • v podrobných testech vychází DB 3 lépe pro velké DB a slo�žité
dotazy • nicméně výkonnost Apache Derby je překvapivě dobrá • nezjistili jsme potí�že se spolehlivostí zotavení Apache Derby
![Page 28: 1. Jak jsme si vybrali Apache Derby ěji 3. Hibernate ... · Jak jsme si vybrali Apache Derby 2. O Apache Derby podrobněji 3. Hibernate Search v praxi. Jak jsme si vybrali Apache](https://reader035.fdocuments.us/reader035/viewer/2022071106/5fe078a1d827f76803055ab9/html5/thumbnails/28.jpg)
Závěr a poučení
• pou�žití DB 3 by zvýšilo cenu produktu o 50%, proto jí nemů�žeme pou�žít
Apache Derby/Java DB • open source licence dovoluje zdarma integrovat s naší
aplikací • dobrá kvalita kódu • poměrně dobrá výkonnost
Poučení: • věřte pouze tomu, co si sami změříte