Obsah
- Úvod
- Co to je WinStrom?
- Proč PostgreSQL
- Zkušenosti s nasazením
- Další rozvoj
- Shrnutí

.
Co to je WinStrom?

- Moderní ekonomický systém
- Účetnictví a další evidence
- Malé a střední podniky
- Windows, Linux, Mac OS X
- Tradice od roku 1991
.
- Je to i účetnictví
- WinStrom 10 - je kompletní přepis (my to dokázali a Netscape ne)
- Více platforem
- Tradice - i mně to překvapuje
- Nejdříve PC-Strom pro DOS, pak Win-Strom, teď LinStrom, MacStrom
Požadavky?

- Windows, Linux, Mac OS X
- Dvě varianty:
- základní bezplatná varianta Start
- jednouživatelská
- síťová instalace
.
- Platformy
- Uživatel neví co to je databáze
- Instaluje si WinStrom, nikoliv databázi
- Start - když selže instalace, produkt nezkusím
- snadný přechod z jedné varianty na druhou
- Vše musí být bezobslužné
- Odinstalace - nic nezbyde (MSSQL)
- nízké licenční poplatky (Sybase 3000,-)
Proč PostgreSQL (úsměvně)
- Vy byste nasadili něco jiného?
Proč PostgreSQL

- Zkušenosti ze zakázkového vývoje
- Potřebujeme:
- uložené procedury
- vysokou spolehlivost
- nízké nároky u malých instalací
- vysoký výkon u velkých instalací
- alternativy: FireBird, MySQL, Apache Derby, Oracle, Sybase, ...
.
- PostgreSQL používáme mnoho let na různých instalacích (jedna instalace 30GiB)
- problémy s virtuálním strojem - vždy přežil výpadky
- jednou jsem rollbackoval žurnál
- problémy s konfigurací při růstu dat - temp_buffers, max_stack_depth, max_fsm_pages
- MySQL a rozbité indexy
- DBF a rozbité indexy
- potřebujeme žurnál (UPS je doporučená, ale málokdo ji používá)
- výborná podpora v Linuxu
- mám rád optimalizátor dotazů u PostgreSQL a explain
- oproti Sybase nám scházel ROW_NUMBER
- nepoužili jsme firebird, málo zkušeností, PostgreSQL dobrá podpora operačních systémů
- Nelze zkopírovat databázi - musím použít dump
- Proč ne Oracle - expres je docela dobrý
- nechápeme PostgreSQL jako Oracle - kdy musím mít extra správce jen pro DB
Pokus s Apache Derby

- Pro menší instalace jsme chtěli použít embedded databázi
- Zkusili jsme Apache Derby
- Odlišnosti SQL:
- limit v subselectu
- uložené procedury v Javě
- Kvůli problémům a nákladům jsme se rozhodli jen pro podporu jednoho SQL serveru.
Architektura

- Dvou-vrstvá až tří-vrstvá architektura:
- klient přistupuje přes SQL do databáze
- restriktivní operace přes server (HTTP)
- bezpečnost na úrovni databáze
- některé operace přes uložené procedury
.
- nároky na počet dotazů přes internet
- omezení na úrovni databáze
- konzistence dat přes úložné procedury (množství dotazů - našeptávač)
- server vytváří databáze a uživatele pro PostgreSQL
- Máme HTTP, RMI a PostgreSQL přes jeden port
- šifrujeme a komprimujeme data - 1/3 dat
- Automatické hledání serveru v okolí přes broadcasty
- Vtip: zákazník a bezpečnost přístupu při únosu
Instalátory
- Nativní instalátory pro různé systémy
- Vše musí být snadné a transparentní
- Fixopia – hlášení problémů (i s instalací)

.
- Uživatel instaluje balíček pro svůj systém (to je jeho podpora - ne TGZ pro všechny systémy)
- všechno automatické
- nativní podpora znamená - balíček a dobrou integraci v systému
- Fixopia - při selhání možnost odeslat
Instalátory pro Windows

- Instalační balíček EXE
- PostgreSQL se instaluje s aplikací
- Základem je ZIP distribuce PSQL
- vytváření systémového uživatele pro PostgreSQL
- vytvoření úložiště (i FAT32)
- běh na zvláštním portu jako služba
- Odinstalace po dotazu smaže i databázi
.
- zeptáme se na typ instalace
- nainstalujeme Javu (tichá instalace)
- rozbalíme PostgreSQL
- Založíme uživatele pro službu PostgreSQL (nemůže běžet pod aktuálním uživatelem)
- na tento uživatelský účet se nesmí jít přihlásit, heslo nesmí vypršet
- datové úložiště:
- generujeme pod aktuálním uživatelem, a až následně na datové úložiště přidělujeme práva pomocí ACL
- uživatel může umístění dat zvolit, ale ne všude lze úložiště vygenerovat.
- Příklad: UNC cesta (a že uživatelé zkouší zajímavé cesty :-) , root disku (např. Flash)
- nespolehlivé generování datového úložiště na FAT32. Občas se dat. úložiště vygeneruje, občas ne. Uživatele varujeme před instalací na tento FS a taháme si s sebou předgenerované dat. úložiště
- celý proces je před uživatelem skryt (náš číl)
- běh PostgreSQL
- běžíme na separátním portu (nechceme kolizi se standardním PostgreSQL)
- je pro nás snazší mít vlastní instalaci pod kontrolou
- potřebné DLL knihovny Visual Studia Runtime máme přímo u PostgreSQL
- běh PostgreSQL stabilní až na jednu uživatelku
Instalátory Linux DEB

- Podpora Linuxu Debian a Ubuntu
- Závislost na PostgreSQL 8.3 a Java z distribuce
- Používáme clustery (pg_lscluster, ..)
- Při odinstalaci mažeme celý cluster (dotaz)
.
- Podporujeme i RPM
- z distribuce má výhodu, že neřešíme 32 a 64 bitů či různé systémy
- pg_cluster nám umožňuje mít oddělenou instalaci
- nevýhodou je, že běží 2x PostgreSQL i u lidí co jej nepoužívají
- automatické aktualizace
Instalátory Linux RPM

- Podpora Linuxu Fedora, Mandriva, OpenSUSE a RedHat
- Závislost na PostgreSQL 8.3 a Java z distribuce
- Použijeme existující instalaci
- Při odinstalaci nemažeme nic
.
- z distribuce má výhodu, že neřešíme 32 a 64 bitů či různé systémy
Instalátory Mac OS X

- Nativní balíček pro DMG
- Instaluje se součástí aplikace
Instalátory: závěr

- Výsledek je dobrý :-)
- ... ale drahý
- Zálohování z aplikace pomocí pg_dump a pg_restore.
.
- instalátory jsme dělali 3 člověko-měsíce (s testováním)
- přes knihovnu JNA lepší napojení na operační systém - děláme např. SETUID pro démona
- Java a multiplatformnost: posílání mailů s přílohou, ...
Zkušenosti
- PostgreSQL je dobrá volba
- Máme problémy na Windows s antivirem (NOD32).
- Výkon i spolehlivost jsou v pořádku
- Dobrá kvalita podpůrných nástrojů: PgAdmin, JDBC, ...
- Možnost interaktivního ladění uložených procedur a triggerů (plDebugger)
- Náročnější instalátory
- Uvidíme chování při růstu dat zákazníků

.
- instalátory jsme dělali 4 člověko měsíce
Další rozvoj WinStromu

- Příprava serveru pro WinStrom (již za 14 dnů)
- Průchod přes firewall
- REST API pro programátory
- Daňová evidence za babku