2011-02-02 13 views
8

Ho sviluppato la maggior parte delle mie applicazioni in PHP-MySQL, perché era semplice e veloce. Ora, con applicazioni più complesse e mi chiedo se MySQL è una buona scelta. Creerò la mia ultima applicazione con PostgreSQL. Quali sono le cose di cui ho bisogno di essere a conoscenza? Cosa mi mancava quando si utilizza MySQL?Sviluppatore PHP-MySQL che passa a PostgreSQL. Cosa devo sapere?

risposta

5

questa pagina Wiki è un buon inizio:
http://wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL#MySQL

Edit: per rispondere alla seconda parte (cose che sono scomparsi):

  • generate_series()
  • vincoli differibili
  • vincoli di controllo
  • query ricorsive
  • funzioni del tavolo
  • tavolo comune espressioni
  • funzioni di windowing
  • basato funzione indice
  • indici parziali
  • ricerca a testo sulle tabelle transazionali
  • funzionalità GIS sulle tabelle transazionali
  • MENO o INTERSECT operatore

Edit2: cose si potrebbe trovare problematico

  • PostgreSQL è molto più severa in termini di tipi di dati corrispondenti (dove character_column = 1 genera un errore)
  • nessuna query tra database, se avete bisogno di qualcosa di simile, i database di mappatura MySQL per Gli schemi PostgreSQL sono probabilmente più semplici
  • Nessuna variabile nelle normali istruzioni SQL (set @nr = 1; selezionare @nr + 1 ...)
+0

Non sono un utente PG, quindi potrei sbagliarmi, ma se ricordo male, le sequenze in PG vengono aggiornate anche se la query 'insert' non riesce (ad esempio, se il valore NULL viene aggiunto nel campo non NULL) . Questo è diverso da "auto_increment" di MySQL, che viene aggiornato solo in caso di inserimento riuscito. – binaryLV

+0

@binaryLV: innoDB utilizza i blocchi su auto_increment, che può essere un problema. Il reset di auto_increment sul valore più alto corrente dopo il riavvio del server può essere un altro problema. Non puoi semplicemente confrontare auto_increment in MySQL e una sequenza in PostgreSQL o in qualsiasi altro database. Cose differenti. –

+0

Certo, sono cose diverse, ma le persone che sono abituate a "auto_increment" di MySQL tendono a usare sequenze in altri DBMS per simulare "auto_increment". Poiché l'autore è abituato a MySQL, ho pensato che valesse la pena notare che i risultati con le sequenze potrebbero essere diversi da quelli con 'auto_increment'. – binaryLV

1

Leggere la multa manual, i capitoli 2 - 9 sono i più importanti da cui partire.

Assicurati di eseguire correttamente la gestione degli errori in PHP e leggi attentamente tutti i messaggi di errore: nella maggior parte dei casi ti dice esattamente cosa è andato storto e come risolverlo. L'Appendice A ha tutti i messaggi e i codici di errore, ne hai bisogno. PostgreSQL non accetta input o query errate, è corretto o si verifica un errore per avviare il debug. E questo è buono, meno bug e meno tempo da dedicare allo scripting.

pg_query_params() e pg_fetch_all() sono alcune grandi funzioni in PHP per interagire con PostgreSQL, controllare il PHP manual.

+0

Informazioni su 'pg_query_params()' e 'pg_fetch_all()' - è una questione di gusti, ovviamente, ma vorrei usare PDO - è abbastanza utile quando devi cambiare DBMS di volta in volta. – binaryLV

+0

Il PDO è bello, ma non otterrai le migliori prestazioni possibili: la COPY non funzionerà, l'inserimento molto veloce sarà fuori questione usando PDO. Il codice PHP sarà anche più complesso usando PDO. –

+0

Le prestazioni potrebbero essere inferiori, ma sarebbe opportuno testare se ciò potesse costituire un collo di bottiglia. Personalmente non ho avuto problemi con le prestazioni a causa della PDO. A proposito di codice più complesso - potresti spiegare? – binaryLV

Problemi correlati