37
Databáze s tisíci uložených procedur Pavel Bláhovec, DiS www. blahovec.cz [email protected]

Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Databáze s tisíci uložených procedur

Pavel Bláhovec, DiSwww.blahovec.cz

[email protected]

Page 2: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Kdo jsem 1/2• Vývojem software se zabývám přes 15 let

• Mobilní aplikace pro obchodníky Wella• PageMaker plug­in pro AutoCont• Dispečerský systém pro DeltaLines

• Od roku 1999 pak výhradní zaměření na software pro pracovní agentury Bláhovec.NET

2

Page 3: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Kdo jsem 2/2• Ředitel obchodu a podpory v IFS Czech

• IFS – globální dodavatel ERP• Konkurence SAPu a Oracle• 2700 zaměstnanců v 54 pobočkách• zaměřeno na výrobu, projekty, služby a řízení 

dodavatelských řetězců• Určeno pro středně a velké podniky• www.ifsworld.com/cz

3

Page 4: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

4

Bláhovec.NET• Bláhovec.NET je software pro 

pracovní agentury, které mají:– velké množství pracovníků– velké množství zákazníků– vysokou fluktuaci pracovníků– pobočky na různých místech

Page 5: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Pracovní vs Personální• Pracovní agentury = Agentury práce

• Dočasné přidělení (zapůjčení)• Outsourcing formou vedení mzdové agendy• Typicky manuální a nekvalifikované práce

• Personální agentury• Zprostředkování práce (seznamka)• Outsourcing formou zaměstnávání• Spíše kvalifikovanější práce

5

Page 6: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

6

Naši zákazníci• Agentura STUDENT• NaBrigádu.cz• PraceIhned• A­Z Servis• PPM, FACTUM INVENIO• Axial• E2E Partner

Page 7: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

7

Pár čísel za poslední 4 roky• 97.000 mezd • 28.000  pracovníků• 262.000 uchazečů • 489.000 SMS • > 1 mil. e­mailů

• Počet zaměstnanců ČEZu k 2010Q1 bylo 32.707

Page 8: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů
Page 9: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Statistika databáze• 12 schémat• 10825 funkcí• 485 tabulek• 794 pohledů

Page 10: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

10

Historie• 1999 – 2000

– Briga 1.0• 2001 – 2005

– Briga 2.0 eXPerience• 2006 – do současnosti

– Bláhovec.NET

Page 11: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Briga 1.0• 1999 – 2000

• MySQL – netransakční MyISAM• Delphi• 2 vrstvá aplikace• Pouze lokální provoz

• Jednoduchý to byl svět

11

Page 12: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Briga 2.0 eXPerience• 2000 – 2003

• MySQL – netransakční MyISAM• Delphi• 2 vrstvá aplikace• Pouze lokální provoz• Simulace transakcí• Propojení s webem formou replikací• Nepropojené pobočky• Problém s licencemi pro vývoj

12

Nestabilita MySQL

Page 13: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Požadavky na nové technologie

1. Transakční databáze2. Podpora uložených procedur, 

pohledy3. Open Source

• Pro databázi• Pro klientské rozhranní

13

Page 14: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Volba nové technologie DB• MySQL (InnoDb)

• Špatná zkušenost, absence uložených procedur• FireBird

• „neobvykle“ řešené uložené procedury• Microsoft SQL

• Komerční, komerční vývojové nástroje• Oracle

• Komerční• PostgreSQL

• Nejlepší volba!

14

Page 15: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Volba nové technologie klienta

15

Page 16: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů
Page 17: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Způsob provozování• Aplikaci poskytujeme formou služby

• Využíváme serverhosting FORPSI• Umístění SITEL (NIX)• Špička 50 uživatelů, trafic <100GB/měs.

• Fyzický hardware• 2x CPU XEON E5335 2Ghz (8 jader)• 8GM RAM, OS Windows x64• RAID, SSD disky INTEL (původně SAS disky)

17

Page 18: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Bezpečnostní koncept• Bezpečnost už od návrhu na úrovni databáze• Práva se nastavují pouze k pohledům

• Pohledy jsou read­only• Tabulky jsou nepřístupné

• Data jsou přístupné přes pohledy a Get_ funkce• Pohledy obsahují logiku pro datové práva• Společnosti, střediska, bankovní účty, …

• Data se vkládají, mění a mažou přes funkce• _Ins, _Upd, _Del• Referenční kontroly na úrovni funkcí PL/pgSQL

18

Page 19: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Klient• Vlastní framework

• přehledová okna, master­detail, dialogy• tiskový aparát pro MS Office sestavy

• Knihovny 3­tích stran:• JFormDesigner pro rozvržení formulářů• Jyloo Syntetica pro desing• Jasper Reports pro tiskové sestavy (iReport)• GSM komunikace

19

Page 20: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Aplikační server• Úlohy na pozadí

• Tisk sestav přes tiskový server• Odesílání mailů a SMS• Zpracování dlouhých úloh (fakturace)

• Serverové procesy• Plánované odesílání reportů obsazenosti• Urgence žádostí

• 2 typy úloh – Java a SQL

20

Page 21: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Architektura vývoje

Case nástroj KDE Umbrello

Bláhovec.NETAplikační generátor

Server

.cre

.ins

.sql

Java Klient

*.java*.properties

*.jfd

Web Klient

*.php

PSPad Eclipse PSPad

21

Dokumentace

*.html

Page 22: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Správa programového kódu• Zdrojové kódy uloženy 

mimo databázi• Kompilace pomocí psql

• Ukládání všech zdrojových kódů do CVS

• Přístup přes Eclipse

Page 23: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

KDE Umbrello UML Modeller• Třídy, atributy, vazby mezi třídami• Rozdělení do modulů• Diagramy

23

Page 24: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů
Page 25: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Aplikační generátor• 1 modul = 1 schéma• 1 třída = 

• 1 tabulka• 1 pohled• Sada funkcí INS, UPD a DEL• Sada funkcí GET (pro každý atribut)

25

Page 26: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Praktická ukázka jak to funguje

26

Klepnutím lze upravit styly předlohy textu.Druhá úroveňTřetí úroveňČtvrtá úroveňPátá úroveň

Page 27: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů
Page 28: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů
Page 29: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Překlady• Vývoj probíhá v angličtině• Překládá se do češtiny• Skenuje se zdrojový kód

29

Page 30: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Podpora aplikace• Interní TTS• Vkládáno přímo uživateli• Přidělování řešitelům• Reportování času• Akceptace od zákazníka

30

Page 31: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Kontrola kvality• Regresivní testy

Page 32: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Známé problémy• „Typ pracovní den neexistuje“• „překladový text již existuje“• „třída WaWorkStmt neexistuje“• …

• Dlouhé transakce• Spuštění testovací scénáře• Importy objednávek• Hledání překladů • Rebuild cache přístupových práv• Plnění reportů daty

32

Page 33: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů
Page 34: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Co by bylo dobré• Integrita PL/pgSQL kódu• Zapouzdření, package• Zrychlení dblinků

34

Page 35: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Přínosy PostgreSQL• Stabilita, spolehlivost• Konzistence dat• Rychlost zpracování• Bezpečnost SSL

35

Page 36: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

Dotazy?

Klepnutím lze upravit styly předlohy textu.Druhá úroveňTřetí úroveňČtvrtá úroveňPátá úroveň

36

Page 37: Databáze s tis ci uložených procedur · KDE Umbrello UML Modeller • Třídy, atributy, vazby mezi třídami • Rozdělení do modulů

37

Děkuji za pozornost

V případě dotazů se neváhejte kdykoliv na mě obrátit:

[email protected]+420 602 832 359