Použití PostgreSQL v. P2D Martin Swiech

Podobné dokumenty
Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

FRED & PostgreSQL. CZ.NIC, z.s.p.o. Jaromír Talíř <jaromir.talir@nic.cz>

Synchronní replikace v PostgreSQL 9.1

Instalace a konfigurace

Administrace, Monitoring. Pavel Stěhule P2D2, Praha 2016

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

Databáze II. 1. přednáška. Helena Palovská

KIV/PIA 2013 Jan Tichava

Úvod do Entity Frameworku

TimescaleDB. Pavel Stěhule 2018

IW3 MS SQL SERVER 2014

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

PostgreSQL v prostředí rozsáhlých IPTV platforem

Bi-Direction Replication

Použití databází na Webu

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Databázové a informační systémy

Administrace Oracle - Správa zdrojů

INDEXY JSOU GRUNT. Pavel Stěhule

Databázové systémy I. 1. přednáška

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

manažerského řízení HW a SW požadavky pro sw ATTIS

O Apache Derby detailněji. Hynek Mlnařík

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Databáze v Java aplikacích, JPA Handout

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

4. lekce Přístup k databázi z vyššího programovacího jazyka

P2D Život postgresového serveru bez ručních zásahů. Jakub Jedelský

SW ATTIS nástroje. HW a SW požadavky pro sw ATTIS. manažerského řízení. Verze manuálu: 3.5 Datum:

Systémová administrace portálu Liferay

Operátory ROLLUP a CUBE

Zkušenosti z nasazení PostgreSQL pohledem DBA. Aleš Zelený, Finanční skupina České spořitelny

Integrace prostředí pomocí TDI v praxi

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Vladimír

Tabulka fotbalové ligy

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

PA165: Úvod do Java EE. Petr Adámek

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

CSPUG 2011-květen. GridSQL a pg-pool II. Vratislav Beneš benes@optisolutions.cz

Integrace formou virtualizace

Monitor zátěže serverů

Porovnání rychlosti mapového serveru GeoServer při přístupu k různým datovým skladům

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

JAVA EE ORGANIZÉR - SOFTWAROVÁ ARCHITEKTURA

Materializované pohledy

01. Kdy se začala formovat koncept relačních databází (Vznik relačního modelu, první definice SQL)? a) 1950 b) 1960 c) 1970 d) 1980

PostgreSQL jako platforma pro datové sklady

SSD vs. HDD / WAL, indexy a fsync

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Jazyk SQL databáze SQLite. připravil ing. petr polách

Služba Rychlý výpis umožňuje on-line službám získat elektronický a snadno zpracovatelný výpis z bankovního účtu klienta.

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Verzování a publikace dat na webu za pomoci PostgreSQL

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Praha, Martin Beran

Servery Incad, stav k

Webové programování je CHALENGE! Milan Čapoun, Samuel Šramko

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Patroni. The real life experience and migration path. Jan Tomsa

Sledování sítě pomocí G3

Zerto: Disaster recovery v prostředí VMware a Hyper-V

ŠKOLENÍ PROGRAMOVACÍHO JAZYKA JAVA JAVA - ZÁKLADY

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Řešení ochrany databázových dat

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Migrace CIDUG. Ing. Pavel Krutina

SharePoint 2010 produktové portfolio a licencování

PostgreSQL Novinky (a JSONB) Tomáš Vondra, GoodData (tomas.vondra@gooddata.com) (tomas@pgaddict.

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

IBM Connections pro firmy s Lotus Notes/Domino. Petr Kunc

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Databáze v praxi. RNDr. Ondřej Zýka Principal Consultant

Jak správně na Hibernate. Martin Hlavatý

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

Popis logování v aplikačním serveru

Název prezentace 1. Poskytovatel garantovaných služeb NDC včetně kybernetické bezpečnosti ve státní správě

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Spisová služba a zákon 300/2008 Ladislav Kleman, Petra Benediktová

Nasazení Object Relation Mapping nástrojů nad legacy datovým modelem

Patrol Management System 2.0

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Stěhování aplikací. Michal Tomek, Sales Manager

Integrace dat. RNDr. Ondřej Zýka

Dodatečné informace k zadávacím podmínkám veřejné zakázky č. 6 Informace o prodloužení lhůty pro podání nabídek

DataDomain pod drobnohledem

6. blok část B Vnořené dotazy

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Výkonnostní archeologie

Příloha č.2 - Technická specifikace předmětu veřejné zakázky

Integrace podnikových Open Source aplikací v praxi. RNDr. Petr Novák, Open Source Conference Praha, 19. duben 2011

Transkript:

Použití PostgreSQL v P2D2 15.2.2018 Martin Swiech martin.swiech@zonky.cz

Kdo jsme? Peer-to-peer landing platforma (lidé půjčují lidem) 15.000 aktivních půjček 16.000 investorů 1.500.000 investic BE: Java8 (Spring) + PostgreSQL 9.6 Velikost DB cca 200 GB

Témata prezentace ORM (objektově relační mapování) Integrační testy v Javě nad embedovaným PostgreSQL Provoz postgresu

ORM

ORM Mapování DB relací na doménové objekty Dobrý sluha, zlý pán ORM The Vietnam War of Computer Science ~Ted Neward 2006 Zonky: Hibernate + Spring Data JPA

ORM - motivace Jednoduchost práce s daty JPA standard je součást Java EE Přenositelnost na jinou DB změnou konfigurace =>

ORM obecné rady Vzájemné mapování doménových objektů (nesnažte se propojit vše se vším - buďte si vědomi hranic doménových oblastí) Používejte lazy fetching mapování na mapované objekty, které nepotřebujete vždy Na složitější dotazy a operace používejte native SQL a prostředky, které vám Postgres dává

ORM Lazy mapping Pozor na zpětné one-to-one mapování Hibernate neví, zda objekt Wallet v User je či není null a tak ho loaduje v samostatných dotazech, i když se jedná o Lazy mapování. Řešit se to dá použitím PROXY objektů, ale to nemusí být vždy žádoucí. Nebo otočením vazby.

ORM Lazy mapping Eager loading Lazy mapovaných objektů JPQL Klíčové slovo FETCH SELECT loan FROM Loan loan JOIN FETCH loan.borrower borrower...

ORM Lazy mapping Eager loading Lazy mapovaných objektů CriteriaBuilder metoda fetch(...)

ORM Lazy mapping Eager loading Lazy mapovaných objektů JPA Spring Repository Loading EntityGraph

ORM usecase view Vytvoření další sady doménových objektů pro view konkrétního usecase. Budou to @Immutable objekty nad stejnými tabulkami, jako je primární sada doménových objektů.

ORM - ladění Zobrazení vygenerovaných SQL dotazů. Nastavení hibernate property `hibernate.show_sql` na `true`, případně `hibernate.format_sql` (persistence.xml, persistence.properties, jpaproperties EntityManagerFactoryBean) Nastavení loggeru na DEBUG <logger name="org.hibernate.sql" level="debug"/>

Testy v Javě nad PostgreSQL

Embedded PostgreSQL (for TEST) com.opentable.components:otj-pg-embedded:0.9.0 https://github.com/opentable/otj-pg-embedded Simple example:

Embedded PostgreSQL (for TEST) Flyway pro inicializaci a změnu DB schematu (použiváme i produkčně) Flyway example:

Embedded PostgreSQL (for TEST) Inicializace jinak než pomocí anotace @Rule Empty: Flyway:

Embedded PostgreSQL (for TEST) Zonky knihovna pro použití embedded Postgres se Springem: io.zonky.test:embedded-database-spring-test:1.1.0 https://github.com/zonkyio/embedded-database-spring-test

Provoz Postgresu

Provoz Postgresu zálohování a replikace 2x barman postgresql.conf: wal_level = replica archive_mode = on archive_command = 'rsync -a %p barman@1.1.1.1:/{barman}/zonky_incoming/%f' 2x replika 1 hot-standby (manuální) 1 pro analytické dotazy businessu a risk managementu Repliky nejsou napojeny přes sloty, ale v případě, že nestihnou stáhnout WAL z master, tak si o ně řeknou barmanovi. recovery.conf: recovery_target_timeline = 'latest' restore_command = 'ssh barman@1.1.1.1 barman get-wal zonky %f > %p'

Provoz Postgresu server: CPU RAM 2 x 10 core Xeon 2.4GHz 64GB postgresql.conf: max_connections = 200 shared_buffers = 8192MB work_mem = 64MB maintenance_work_mem = 1GB synchronous_commit=off max_wal_size = 2GB min_wal_size = 640MB random_page_cost = 2.0

Provoz Postgresu Logování dotazů postgresql.conf: log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h ' log_checkpoints = on log_min_duration_statement = 20 log_temp_files = 5 log_lock_waits = on log_autovacuum_min_duration = 20 session_preload_libraries = 'auto_explain' auto_explain.log_min_duration = 20 auto_explain.log_analyze = off A jejich analýza pgbadger

Praktiky

Práce s časem Používáme `timestamp without time zone` a ukládáme záznamy v GMT. date_from timestamp without time zone, Client si je vědom své časové zóny Zápis do tabulky: UPDATE SET date_from=now() AT TIME ZONE 'GMT' Čtení z tabulek: SELECT date_from AT TIME ZONE 'GMT'

Plánujeme Postgres 10 Aplikační nastavování `set work_mem=...;` pro složitější úkoly - dopad: analýza a úprava connection poolu, aby prováděl `RESET ALL;` při vracení connection do poolu Automatické testy obnovitelnosti zálohy z Barmana

Otázky (a odpovědi)

Děkuji za pozornost.

Zdroje a odkazy Prezentace ORM & how not to get crazy by Dominik Mostek https://github.com/opentable/otj-pg-embedded https://github.com/flyway/flyway https://github.com/zonkyio/embedded-database-spring-test Examples: https://github.com/mswiech/pgtestdemo martin.swiech@zonky.cz [or @gmail.com]