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
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 ...)
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.
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
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. –
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
- 1. Sviluppatore Android che si sposta su iOS: cosa devo sapere?
- 2. Che cosa dovrebbe sapere un utente Django quando si passa da MySQL a PostgreSQL?
- 3. Come sviluppatore PHP che pensa di fare del Perl una causa secondaria forte, cosa devo sapere?
- 4. Cosa devo sapere per contribuire a Rails?
- 5. Creazione di un AuthorizeAttribute - cosa devo sapere?
- 6. Cosa devo sapere su Structured Exceptions (SEH) in C++?
- 7. Cosa devo sapere sulle firme XML per far funzionare SAML?
- 8. Passaggio da AndEngine a libgdx - cosa sapere?
- 9. Cosa devo sapere per trasferire Cyanogenmod a telefoni/tablet non supportati?
- 10. Cosa passa il messaggio?
- 11. Cosa devo fare per collegarmi a xlib?
- 12. Che cosa dovrebbero sapere tutti gli sviluppatori web sulla crittografia?
- 13. DbEntityValidationException - Come posso sapere facilmente che cosa ha causato l'errore?
- 14. Mongodb: Cosa sapere prima di utilizzare?
- 15. Sapere C e/o C++ mi rende uno sviluppatore migliore?
- 16. Sapere A che punto l'applicazione si blocca
- 17. Che cosa impedisce a uno sviluppatore di ottenere più chiavi API
- 18. CasperJS che passa dati a PHP
- 19. MSBuild che passa i parametri a CallTarget
- 20. Passa true/false a slideToggle()
- 21. Cosa devo controllare prima che il mio sito web Ruby on Rails venga pubblicato?
- 22. VS2008 come passare da sviluppatore Web a C# Impostazioni sviluppatore
- 23. Sapere cosa trabocca: nascosto nascosto
- 24. Quali sono i cinque concetti JavaScript che devo comprendere per essere un buon sviluppatore di AngularJS?
- 25. Che cosa significa il campo `width` in EXPLAIN di PostgreSQL?
- 26. Come sapere cosa significa "errno"?
- 27. C# - Che cosa equivale a "\ 0"?
- 28. Che cos'è lo sviluppatore nell'app Impostazioni?
- 29. Nome dell'account sviluppatore Apple che cambia
- 30. Conversione di tipo. Cosa devo fare con un valore OID PostgreSQL in libpq in C?
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
@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. –
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