Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: PHP a PostgreSQL  (Přečteno 4258 krát)

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
PHP a PostgreSQL
« kdy: 14 Září 2009, 12:56:46 »
Zdravím,
zajímalo by mě kolik lidí tady programuje webové aplikace postavené na PgSQL.

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: PHP a PostgreSQL
« Odpověď #1 kdy: 14 Září 2009, 17:42:33 »
MySQL only :) S PostgreSQL jsem zatím osobně nepracoval :) Rád si přečtu názor někoho kdo s tím má zkušenosti případně porovnání s již zmiňovaným MySQLkem...

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: PHP a PostgreSQL
« Odpověď #2 kdy: 14 Září 2009, 18:47:52 »
Promiň, ale ptal jsem se na PgSQL. Ale i tak díky, škrtám si tě v seznamu :-)

jfoot

  • Aktivní člen
  • *
  • Příspěvků: 197
  • ..nemožné ihned, zázraky do tří dnů...
Re: PHP a PostgreSQL
« Odpověď #3 kdy: 14 Září 2009, 20:15:49 »
Zdravím mka,

doufám, že se neurazíte, když použiji jinou formulaci než tuto :
.... webové aplikace postavené na PgSQL....

Já osobně bych aplikaci stavěl spíše na programovacím jazyku (C++, Java, PHP, Python, Assembler 8080  ;D) či technologii jako jsou Struts  než na db stroji, i když, pravda Oracle orientuje i problémy řešené obvykle v rámci business logiky do datábaze pomocí uložených procedur či Oracle Forms..... Je to pravda na diskusi, ale tady by to asi bylo off topic...
Budiž.
 Nicméně si mě připište na svůj seznam , doufám, že to není seznam psanců pronásledovaných zákonem, na které je vypsána odměna  ;D
 Taky si dám tip na další možné postgressisty : wam]Spider007, eXistPierre, petergula...
« Poslední změna: 14 Září 2009, 20:47:57 od jfoot »
Po šesté atomové válce  povrch planety Rogoz nevypadal pěkně...

Dítě nevinné...Co ty můžeš vědět...o sadomasochistické derivaci oidipovského komplexu...(O.Neff, K. Saudek, Arnal & Dva dračí zuby)

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: PHP a PostgreSQL
« Odpověď #4 kdy: 15 Září 2009, 09:43:23 »
Zdravím mka,

doufám, že se neurazíte, když použiji jinou formulaci než tuto :
.... webové aplikace postavené na PgSQL....

Já osobně bych aplikaci stavěl spíše na programovacím jazyku (C++, Java, PHP, Python, Assembler 8080  ;D) či technologii jako jsou Struts  než na db stroji, i když, pravda Oracle orientuje i problémy řešené obvykle v rámci business logiky do datábaze pomocí uložených procedur či Oracle Forms..... Je to pravda na diskusi, ale tady by to asi bylo off topic...
Budiž.
 Nicméně si mě připište na svůj seznam , doufám, že to není seznam psanců pronásledovaných zákonem, na které je vypsána odměna  ;D
 Taky si dám tip na další možné postgressisty : wam]Spider007, eXistPierre, petergula...

Ale kdepak, neurazím.
Přejít (alespoň u některých věcí) z MySQL na PgSQL hodlám právě kvůli mnohem lepší podpoře triggerů a všech možných uložených procedur a funkcí tak, aby se pokud možno všechno, co lze řešit na úrovni databáze také na této úrovni řešilo. A vzhledem k tomu, že jistě dříve či později narazím na něco, s čím si nebudu zpočátku vědět rady, budu asi tu a tam potřebovat poradit. Tak zatím trochu sonduji, jaký je tu "potenciál rádců".

Iljusin

  • Aktivní člen
  • *
  • Příspěvků: 347
Re: PHP a PostgreSQL
« Odpověď #5 kdy: 15 Září 2009, 10:43:29 »
Zdravím,
zajímalo by mě kolik lidí tady programuje webové aplikace postavené na PgSQL.
Já někdy (zrovna teď jednu aplikaci dělám). Na PgSql je dobré, že si člověk může snadno hodně věcí upravit k obrazu svému přímo v db (na webu se třeba dá najít hodně hotových a zajímavých funkcí), na druhou stranu mi tam vadí horší přenositelnost a občas problematická instalace či update (i když to ovšem zas člověk nedělá tak často). Taky je většinou na hostinzích těžké nastavit phppgadmina tak, aby korektně exportoval data, to většinou končí nějakým errorem.

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: PHP a PostgreSQL
« Odpověď #6 kdy: 15 Září 2009, 10:49:06 »
Jo, s instalací (resp. rozchozením - instalace jako taková proběhla v režii Synapticu) jsem se taky trochu vycukal. Export (dump) jsem zatím vydoloval pouze z phpPgAdmina, PgAdminIII to u mě v tuto chvíli nezvládne... :-)

jfoot

  • Aktivní člen
  • *
  • Příspěvků: 197
  • ..nemožné ihned, zázraky do tří dnů...
Re: PHP a PostgreSQL
« Odpověď #7 kdy: 15 Září 2009, 15:16:34 »
Zdravím Vás,

pokud budu vědět v rámci PostgreSql, pokusím se poradit.... K přístupu k datům používám
pgAdminIII a pouze kvůli tomu, že jsem líná konzerva jsem zatím nepoužil Squirell, třeba Vám tam půjdou ty akce, co nejdou v pgAdminIII...ovi lépe   ;)
Po šesté atomové válce  povrch planety Rogoz nevypadal pěkně...

Dítě nevinné...Co ty můžeš vědět...o sadomasochistické derivaci oidipovského komplexu...(O.Neff, K. Saudek, Arnal & Dva dračí zuby)

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: PHP a PostgreSQL
« Odpověď #8 kdy: 15 Září 2009, 15:28:23 »
Zdravím Vás,

pokud budu vědět v rámci PostgreSql, pokusím se poradit.... K přístupu k datům používám
pgAdminIII a pouze kvůli tomu, že jsem líná konzerva jsem zatím nepoužil Squirell, třeba Vám tam půjdou ty akce, co nejdou v pgAdminIII...ovi lépe   ;)
Zřejmě Squirrel SQL. Tyhlety vymšlenosti, co se jmenujou po zvířatech, to je bezvadná věc. Hlavně pak pro hledání na internetu :-)
Ale díky, zatím si snad vystačím s tím, co už mám...

jfoot

  • Aktivní člen
  • *
  • Příspěvků: 197
  • ..nemožné ihned, zázraky do tří dnů...
Re: PHP a PostgreSQL
« Odpověď #9 kdy: 15 Září 2009, 15:39:34 »
OK. Ještě drobná věc, která je ale také k diskusi : já osobně se snažím některé problémy, které by se daly řešit v rámci db, spíše řešit v aplikaci. Zdá se mi to flexibilnější, problémy a jejich řešení mám více "v ruce" mám li je na úrovni aplikace než na úrovni db. Vynikne to v případě, kdy databázi spravuje třetí osoba, když je problém v triggru či proceduře, tak rychlá reakce na chybu je někdy docela pomalá  ;D , často je třeba čekat na uvolnění db zdrojů (zamčené tables), některé procedury a triggery nelze modifikovat okamžitě (až po uvolnění zdrojů) atd... Je to podobné jako s constraints, buď je realizujete v rámci db nebo na úrovni aplikace. Praxe mě vyučila realizovat je na úrovni aplikace, zlikvidovat takový rozsáhlejší constraint na úrovni db je totiž někdy zcela tristní zábava...  ;D
Já na vašem místě bych byl opatrný... :D

Jde i o údržbu, máte li hlavní části na jednom fleku, líp se provádí debug, celý systém (aplikace + db + další sw komponenty) se pak chová synchronně , není nic nepříjemnějšího, než hledat chyby v systému, kde události vznikají asynchronně a čekáte na triggery, které zrovna v době kdy to potřebujete nesplňují podmínky pro spuštění...
« Poslední změna: 15 Září 2009, 15:50:01 od jfoot »
Po šesté atomové válce  povrch planety Rogoz nevypadal pěkně...

Dítě nevinné...Co ty můžeš vědět...o sadomasochistické derivaci oidipovského komplexu...(O.Neff, K. Saudek, Arnal & Dva dračí zuby)

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: PHP a PostgreSQL
« Odpověď #10 kdy: 15 Září 2009, 15:57:43 »
Mohl bych poprosit o příklad nějakého "rozsáhlejšího constraint-u"?
Nicméně, na PgSQL se mi líbí právě to, že si některé věci řeší databáze. Např. ověřovat před vložením záznamu, zda existují příslušné záznamy i v dalších tabulkách a pokud ne, tak je nejprve založit, je z mého pohlůedu trochu pruda. Totéž s rušením záznamů. Ale to je jistě věc názoru.

jfoot

  • Aktivní člen
  • *
  • Příspěvků: 197
  • ..nemožné ihned, zázraky do tří dnů...
Re: PHP a PostgreSQL
« Odpověď #11 kdy: 15 Září 2009, 16:23:33 »
Zdravím Vás,

Mohl bych poprosit o příklad nějakého "rozsáhlejšího constraint-u"?

Jasně, akorát jsem svůj příspěvek v tomto ohledu blbě zformuloval. Složitější constraint je každý, který "jde" přes více tabulek současně. Když takový constraint chcete shodit, musíte si zajistit exkluzivní přístup ke všem tables, přes které tento constraint jde. Což bývá zpravidla v době, kdy se většina uživatelů doma v klidu dívá na večerní zprávy.. .. Vy si v té době kupujete pár litrů kafe, domluvíte se před touto modifikací se správci aby odpojili db (tisíce děkovných dopisů.. ;D) a jdete na to... Pakliže nemáte constrainty na úrovni db, ale v aplikaci, tak výše popsané odpadá, ovšem aplikace je pak pracnější , musíte práci, kterou by za Vás odvedly constrainty v db udělat sám. To je pracné, to jo... ;D
 Tím nezatracuji vytváření triggerů, procedur constraintů atp. na úrovni db, spíš bych jimi šetřil než mrhal....
Hodně závisí na povaze aplikace spolupracující s danou db (počty uživatelů současně přistupujících do takové db velikost a frekvence modifikací v jednotlivých tables, konkrétních selectech atd...)

Nicméně, na PgSQL se mi líbí právě to, že si některé věci řeší databáze. Např. ověřovat před vložením záznamu, zda existují příslušné záznamy i v dalších tabulkách a pokud ne, tak je nejprve založit, je z mého pohlůedu trochu pruda. Totéž s rušením záznamů. Ale to je jistě věc názoru.

Proč ne, nezavrhuji to, když ale vkládáte kritická data, tak se vyplatí udělat to v programu ,
v programu otestovat, jestli nevkládáte duplicitu a pokud ano , tvrdě zapsat do logu  ;D
Jenom programátor si dokáže zformulovat zápis událostí  a jejich souběhu do logu, trigger
/ procedura ne, protože jí prostě chybí inteligence programátora.
Trigger / procedure zápis buď realizuje či ne a šumí si vesele dále, ale detailnější popis zapsaný do logu (to nejcennější) nezformuluje. Když Vám pak volá uživatel, který ani není schopen občas vyblekotat k čemu došlo, je log z Vámi naprogramovanými hlášeními neocenitelný.
Po šesté atomové válce  povrch planety Rogoz nevypadal pěkně...

Dítě nevinné...Co ty můžeš vědět...o sadomasochistické derivaci oidipovského komplexu...(O.Neff, K. Saudek, Arnal & Dva dračí zuby)

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: PHP a PostgreSQL
« Odpověď #12 kdy: 15 Září 2009, 17:54:23 »
Jasně, jasně, jasně.
Nicméně test čehokoliv před query - má-li být spolehlivý - znamená
1. uzamknout všechny dotčené objekty (přinejmenším pro zápis)
2. provést test
3. provést (či neprovést) query v závislosti na výsledku tesu
4. odemknout všechny dotčené objekty
5. neustále na to myslet
6. doufat, že jsem to udělal opravdu všude, kde to bylo nutné.
Fakt nevím, nechci se hádat, ale přesně kvůli tomu, aby se tohle nedělalo v aplikaci, byly snad triggery vynalezeny, ne? A přesně to je důvod, proč mi nevyhovuje MySQL, i když jinak má nesporné klady (minimálně to, že je automaticky k dispozici na 11-ti hostnizích z 10-ti).

wam]Spider007

  • Host
Re: PHP a PostgreSQL
« Odpověď #13 kdy: 15 Září 2009, 19:03:38 »
priznam sa, ze postgre nepouzivam, venujem sa inym databazovym rieseniam, ale dost by ma zaujimalo, v com su triggery v postgre lepsie ako tie v MySQL.

Mne osobne v MySQL chybaju uz len 2 veci. Check constrainty a moznost cez string spustit command, ktory vytvori objekt (proceduru, funkciu), zatial sa daju cez string spustit len bezne prikazy.

jfoot

  • Aktivní člen
  • *
  • Příspěvků: 197
  • ..nemožné ihned, zázraky do tří dnů...
Re: PHP a PostgreSQL
« Odpověď #14 kdy: 15 Září 2009, 21:20:18 »
Zdravím kolegy postižené vývojem aplikací komunikujících s databázemi všeho druhu :D,

Fakt nevím, nechci se hádat,

Naopak, jsem rád, že přistupuje k těmto záležitostem věcně, od toho je diskusní fórum , aby se diskutovalo, i když nám může někdo oprávněně zatnout tipec, alébrž se tato diskuse netýká přímo Linux Ubuntu... A také je důležité nenechat si nakukat nějaké nesmysly :D

Nicméně test čehokoliv před query - má-li být spolehlivý - znamená
1. uzamknout všechny dotčené objekty (přinejmenším pro zápis)
2. provést test
3. provést (či neprovést) query v závislosti na výsledku tesu
4. odemknout všechny dotčené objekty
5. neustále na to myslet
6. doufat, že jsem to udělal opravdu všude, kde to bylo nutné.
Fakt nevím, nechci se hádat, ale přesně kvůli tomu, aby se tohle nedělalo v aplikaci, byly snad triggery vynalezeny, ne? A přesně to je důvod, proč mi nevyhovuje MySQL, i když jinak má nesporné klady (minimálně to, že je automaticky k dispozici na 11-ti hostnizích z 10-ti).

Teď jste uhodil hřebíček na hlavičku, pokusím se vyjádřit...

Trigger je mj. možnost na úrovni databáze, generovat  události či na ně reagovat. Pokud  např. vložím řádek do nějaké db a mám na této insert operaci zavěšen trigger,  pak samotné vložení řádku zapřičiní spuštění tohoto triggeru, tedy dalšího  následného procesu s definovaným obsahem. Vložení řádku  do table tady zapřičiní,
že se vykoná navíc něco dalšího. Obsahem triggeru mohou být operace kontrolující integritu dat tedy body 1 až 6. Proč ne .  To v praxi ale znamená, že budete muset pro každou table definovat trigger a fyzicky jej realizovat : připojit se k dané db, dostat se do exclusive mode, trigger definovat či jej i někdy změnit - Vaše aplikace se bude totiž pravděpodobně vyvíjet v čase podle požadavku zákazníka, což povede pravděpodobně k nutnosti změny struktury určité table (či více tables)  a tím i k nutnosti změny triggeru. Teď si vynásobte počet triggerů  (co table to trigger na kontrolu konzistence dat dané table) počtem databází u zákazníků. .. Budete ztrácet pravděpodobně hodně drahocenného času pracemi okolo maitenance triggerů, který byste mohl věnovat vývoji aplikace...

Pokud kontrolu integrity dat přesunute do aplikace, lapálie výše popsaného typu odpadají.
Samozřejmě i na úrovni db můžete kotrolovat integritu dat a nemusí to být v triggeru.
Zapisujete do sloupců obdařených klauzulemi UNIQUE či DISTINCT znemožňující zápis duplicitních dat. Nic nezamykáte, jen zkontrolujete chybový code vrácený při modifikaci dat.
Pokud nenastala chyba, je vše OK,, jinak nějak zareagujete. Db stroj vše odemkne ať se stala chyba či ne (nebudu tady probírat situaci, kdy se navzájem lockne víc procesů, to můžeme probrat někde u piva... :D, to se mně fakt nechce vypisovat, jsem sorry).

Pokud si to vše dáte do nějaké funkce či metody, která bude realizovat body body 1 až 6,
a která bude provádět fyzicky kontrolu integrity dat a DŮSLEDNĚ NEBUDETE  volat "raw"
db příkazy pro modifikaci dat (update/ insert) kdekoliv v programu, ale pouze a jedině tyto funkce, tak na to nebudete ani muset myslet. A to nejlepší nakonec, budete to mít vše na jednom místě, v programu , v jediné metodě (pro každou table jednu metodu např.), kterou prostě kdykoliv upravíte, při změně jí odpovídající tabulky. Její volání rozesejete na oněch 1000 míst ve Vaší aplikaci, ale modifikační místo bude jediné. Takže žádná cesta nocí k databázi zákazníka... :P (to je mírná nadsázka  v mezích zákona...;D)

priznam sa, ze postgre nepouzivam, venujem sa inym databazovym rieseniam, ale dost by ma zaujimalo, v com su triggery v postgre lepsie ako tie v MySQL.

Mne osobne v MySQL chybaju uz len 2 veci. Check constrainty a moznost cez string spustit command, ktory vytvori objekt (proceduru, funkciu), zatial sa daju cez string spustit len bezne prikazy.

Abych pravdu řekl, jestli jsou triggery v PostgreSql lepší než v MySQL, nevím, to jsem nestudoval.
Pokud tady takové srovnání z mých příspěvků zaznívá, tak se omlouvám, neměl jsem je na mysli.
Pokud s tím máte ale někdo zkušenost, tak to sem mrskněte, rád se poučím...
« Poslední změna: 15 Září 2009, 23:13:46 od jfoot »
Po šesté atomové válce  povrch planety Rogoz nevypadal pěkně...

Dítě nevinné...Co ty můžeš vědět...o sadomasochistické derivaci oidipovského komplexu...(O.Neff, K. Saudek, Arnal & Dva dračí zuby)

Dr.Silenec

  • Návštěvník
  • Příspěvků: 14
    • Airspeedfiles.com -- Uploadni si svůj soubor
Re: PHP a PostgreSQL
« Odpověď #15 kdy: 16 Září 2009, 00:29:53 »
Přidám také svojí trošku do mlýna.

Do určité doby jsem používal pouze MySQL, nicméně na některé projekty byla poněkud nedostačující... hledal jsem něco free a co znám.. Přišla mi do oka PostgreSQL... a od té doby nepoužívám nic jiného... pokud člověk nepotřebuje přímo Oracle, je to výborná volba. Sice ze začátku jsem s PgSQL měl trošku problémy, protože zvyklý z dosti zajímavě vykládájících si SQL příkazů z MySQL, náhle PgSQL nechtěla brát, poté jsem zjistil, že problém nebude v databázi, ale spíše ve mě samém. PgSQL je výborná aplikace, která dodržuje standarty SQL jazyka, tak jak mají být. Rozhodně doporučuji používat, protože je s ní daleko více možností, ale zase se nehodí pro úplné začátečníky mezi databázemi.

jfoot

  • Aktivní člen
  • *
  • Příspěvků: 197
  • ..nemožné ihned, zázraky do tří dnů...
Re: PHP a PostgreSQL
« Odpověď #16 kdy: 16 Září 2009, 10:48:55 »
Zdravím všechny zde,

PgSQL je výborná aplikace, která dodržuje standarty SQL jazyka, tak jak mají být.

To je jedna z velmi důležitých vlastností obecně pro přístup do jakékoliv databáze,
Implementace standardu SQL-92 (obecně, jakéhokoliv standardu, i když není implementace standardu jako implementace, co dokáží udělat implementátoři s takovým standardem ASTM E 1394-91 je občas hrůzné... :'() , Vám umožní přistupovat  k databázím od různých vendors pomocí stejných příkazů.
   I zde ale platí ono "..zelený je strom života.." : byť vendoři deklarují u svých databází conformace s sql standardem SQL-92, v praxi ta conformance není na 100 % (zločinci !!  ;D).
S tím se dá ale žít.... ;D
« Poslední změna: 27 Září 2009, 09:22:51 od jfoot »
Po šesté atomové válce  povrch planety Rogoz nevypadal pěkně...

Dítě nevinné...Co ty můžeš vědět...o sadomasochistické derivaci oidipovského komplexu...(O.Neff, K. Saudek, Arnal & Dva dračí zuby)

 

Provoz zaštiťuje spolek OpenAlt.