300 likes | 499 Views
PostgreSQL. Vypracoval: Standa Bršlica 50820 @ mail.muni.cz. Historie. vývoj PostgreSQL začal roku 1986 na univerzitě v Berkeley první demoverze byla představena v roce 1988 na konferenci ACM-SIGMOD
E N D
PostgreSQL Vypracoval:Standa Bršlica 50820@mail.muni.cz
Historie • vývoj PostgreSQL začal roku 1986 na univerzitě v Berkeley • první demoverze byla představena v roce 1988 na konferenci ACM-SIGMOD • v r. 1992 byl kód PostgreSQL zkomercializován společností Illustra Information Technologies • v r. 1995 byl PostgreSQL uvolněn na web jako open-source(autoři Andrew Yu a Jolly Chen)
Okolnosti vzniku • PostgreSQL se vyslovuje Post-Gres-Q-L • PostgreSQLvychází z databáze POSTGRES - výzkumného prototypu DBMS nové generace • zPOSTGESbyl převzat silný datový model a bohatý soubor datových typů a jeho dotazovací jazyk PostQuel byl nahrazen rozšířenou podmnožinou jazyka SQL • poslední verzí jePostgreSQL 7.4.
Hlavní rysy 1/5 • PostgreSQL je open-source šířený pod BSD licencí umožňující vlastní úpravy a jejich další šíření • jeobjektově-relační SQL server • z SQL podporuje cizí klíče, JOIN tabulek, pohledy, TRIGGER, vnořené příkazy SELECT, příkazy CASE, COALESCE a NULLIF
Hlavní rysy 2/5 • umožňuje uživatelem definované funkce • uživatelem definované funkce lze využít k návrhu vlastních datových typů, konverzních a agregačních funkcí • je podporován většinou programovacích jazyků, popř. skriptovacími jazyky : PHP, Perl, Python, Embeded SQL pro C/C++, Java (JDBC) a další
Hlavní rysy 3/5 • na rozdíl od jiných open-source databázových serverů (např. MySQL) podporuje zamykání dat na úrovni záznamu a nikoli na úrovni celé tabulky, tzn., že záznamy je možno číst i při jejich současné aktualizaci, aniž by došlo k již zmiňovanému uzamčení celé tabulky i pro čtení • umožňuje ukládání velkých objektů, včetně obrázků, zvuků a videa. Tyto objekty mohou být vybírány celé nebo po částech client aplikací.
Hlavní rysy 4/5 • podporuje SELECT DISTINCT and SELECT DISTINCT ON ( column ), k zobrazení pouze unikátních řádků. • plně podporuje GROUP BY a agregační funkce jako COUNT, SUM, AVG, MIN, MAX, STDDEV, and VARIANCE. Navíc mohou být agregační funkce vytvářeny v C nebo jiném procedurálním jazyku podporovaným PostgreSQL.
Hlavní rysy 5/5 • obsahuje více jak 100 vestavěných funkcí(matematické, časové a práci s řetězci), ODBC funkce (kompatibilní s Oracle) a podporuje funkce pro full-text indexování • Obsahuje indexování: B-tree, R-tree, Hash a uživatelsky-definované indexační metody. • podporuje rollback
PostgreSQL client/server 1/2 • používá client/server model. • PostgreSQL session se skládá z následujících spolupracujících procesů (programů): - server procesy, které řídí databázové soubory, přijímají připojení do databáze z client aplikací a vykonávají akce na databázi za klienty
PostgreSQL client/server 2/2 - uživatelé client aplikací, kteří chtějí vykonávat databázové operace. Client -aplikace mohou byt různého druhu: • text-oriented nástroje, • grafické aplikace, • web server, které zpřístupňují databáze přes webové stránky nebo • speciální nářadí na údržbu. Některé client aplikace jsou vybaveny PostgreSQL distribucí, většina je však vyvinutá uživateli.
Klient • Klienta lze provozovat na MS Windows (a jiných), ten prostřednictvím TCP/IP protokolu komunikuje se serverem běžícím na některé z podporovaných Unixových platforem. K databázi PostgerSQL lze přistupovat skrze rozhraní ODBC.
Server • Server může být na WindowsNT a Win2k provozován pouze s knihovnou Cygwin, Cygnus Unix/NT porting library. Existuje port pro Novell Netware 6 více na http://forge.novell.com.
Ovladače PostgreSQL Pro PostgreSQL existuje ODBC driver: - ADO.NET provider, - komerční dbExpress Driver, - OpenOffice postgresql-sdbc-driver
Rozhraní v PostgreSQL Distribuce PostgreSQL obsahuje tato rozhraní: • C (libpq) • Embbedded C (ecpg) • Java (jdbc) • Python (PyGreSQL) • TCL (libpgtcl) • další na (http://gborg.postgresql.org)
Schémata • dovolují více uživatelům používat databázi bez rušení druhého uživatele • umožňují organizovat databáze do logických skupin, které jsou lehčeji ovladatelné • v různých schématech mohou být použita stejná jména objektů bez toho, aniž by vznikl konflikt • schémata mohou obsahovat tabulky, funkce a operátory
Datové typy • PostgreSQL podporuje obvyklé datové typy jako int, smallint, real, double, precision, chat(N), varchar(N), date, time, timestamp, interval a bohatou sadu geometrických typů • lze definovat datové typy, proto jména typů nejsou syntakticky klíčová, kromě případů v SQL standardu.
Zajímavé datové typy • Point – bod (x, y) • Line – úsečku ((x1, y1), (x2, y2)) • Path – open path [(x1,y1),...] • polygon – polygon ((x1,y1),...) • circle – kruh <(x,y),r> • cidr –IPv4 nebo IPv6 adresa • Macaddr – MAC adresa
Grafické rozhraní Pro PostgreSQL existuje několik grafickýchrozhraní: - PgAccess (http://www.php.net) - PgAdmin • RHDB Admin (http://source.redhat.com/rhdb/) • PHPPgAdmin - rozhraní založené na web technologii (htttp://phppgadmin.souceforge.net/)
CASE nástroj • CASE Studio 2, které podporuje PostGreSQL 7.4. dále také mimo jiné podporuje MySQL a Firebird. Vyvinuto společností CHARONWARE. • více na (http://www.casestudio.com)
Srovnání s MySQL • v porovnání s MySQL a podobnými databázovými systémy je PostgreSQL rychlejší při víceuživatelském přístupu, složitějších dotazech a zatížení read/write dotazy. • MySQL je rychlejší v jednodušších dotazech s malým počtem uživatelů
Celkové srovnání 1/2 • PostgreSQL má hodně společných vlastností s velkými komečními DBMS, např. transakce, vnořené dotazy, trigger, pohledy, kontrolu referenční integrity a sofistikované zamykání. • podporuje některé vlastnosti, které tyto systémy nemají, uživatelem definované typy, dědičnost, pravidla, MVCC redukující zamykání.
Celkové srovnání 2/2 • podpora mailových konferencí FAQ • velké množství kvalitních manuálů a přístupný zdrojový kód • PostgreSQL lze volně používat pro nekomerční i komerční použití. • možnost do svých produktů přidat kód PostgreSQL bez omezení
MVCC Multi-Version Concurrency Control (MVCC) pro vysoce přizpůsobivé souběžné aplikace: • readersneblokujíwritersa writersneblokují readers. • „lepší než zamykání řádků" • rozmanité řádkové a tabulkové zamykání jsou také dostupné.
1. příklad • Příklad na vytvoření a zrušení tabulky: CREATE TABLE weather ( cityvarchar(80), temp_loint,--low temperature temp_hiint, -- high temperature prcpreal, -- precipitation datedate ); DROP TABLEweather;
2. příklady • Příklad select SELECT city, max(temp_lo) FROM weather WHERE city LIKE 'S%' GROUP BY city HAVING max(temp_lo) < 40;
3. příklady • Příklad na primarní a cizí klíč: CREATE TABLE cities ( cityvarchar(80) primary key, location point); CREATE TABLE weather ( cityvarchar(80) referencescities, temp_loint, temp_hiint, prcpreal, datedate);
4. příklady • Dědičnost je převzata z object-oriented databází. CREATE TABLE cities ( nametext, populationreal, altitudeint -- (in ft)); CREATE TABLE capitals ( statechar(2) ) INHERITS (cities); • Řádek tabulky capitals zdědí všechny sloupce (name, population, and altitude) z rodičovské tabulky cities
5. Příklady 1/2 • Příklad na mazání řádku v jedné tabulce spojené se druhou many-to-many.Jestliže chce někdo smazat produkt, na který se někdo odkazuje není to dovoleno.
5. příklad 2/2 CREATE TABLE products ( product_nointeger PRIMARY KEY, nametext, price numeric); CREATE TABLE orders ( order_idinteger PRIMARY KEY, shipping_addresstext, ...); CREATE TABLE order_items ( product_no integer REFERENCES products ON DELETE RESTRICT, order_id integer REFERENCES orders ON DELETE CASCADE, quantityinteger, PRIMARY KEY (product_no, order_id));
Odkazy • Aktuální verze PostgreSQL7.4.2. lze stáhnout na adrese (http://www.postgresql.org/mirrors-ftp.html) nebo (ftp://ftp2.cz.postgresql.org/pub/postgresql/latest/postgresql-7.4.2.tar.gz) • oficiální stránky (http://www.postgresql.org)