Come forse saprai, puoi estendere la funzionalità di PostgreSQL utilizzando le estensioni di PostgreSQL. Puoi utilizzare diverse estensioni per rendere PostgreSQL una versione aziendale e soddisfare esigenze specifiche. In questo blog vedremo alcune delle estensioni open source più popolari in PostgreSQL e come possono essere utilizzate per espandere le sue capacità.
PostgreSQL è il database open source più avanzato. Ogni anno, la community di PostgreSQL rilascia una nuova versione con alcune nuove funzionalità, ma ci sono molte funzionalità sviluppate utilizzando estensioni che possono essere utilizzate per un caso d'uso particolare.
Alcune di queste estensioni sono molto potenti e popolari per creare un ambiente PostgreSQL di livello aziendale.
Pg_stat_statements
Il modulo pg_stat_statements fornisce un mezzo per tenere traccia delle statistiche di esecuzione di tutte le istruzioni SQL eseguite da un server PostgreSQL. Quando il modulo pg_stat_statements viene caricato, tiene traccia delle statistiche su tutti i database del server. Le statistiche raccolte dal modulo pg_stat_statements sono rese disponibili tramite una vista denominata pg_stat_statements. Puoi controllare maggiori dettagli sulle funzioni di pg_stat_statements e sui parametri di configurazione qui.
PostGIS
PostGIS è un'estensione del sistema di database PostgreSQL che consente di archiviare oggetti GIS (Geographic Information Systems) nel database. Include il supporto per gli indici spaziali R-Tree basati su GiST e funzioni per l'analisi e l'elaborazione di oggetti GIS.
PostGIS è utilizzato per oggetti spaziali e geografici per PostgreSQL. PostGIS aggiunge tipi (geometria, geografia, raster ecc.) al database PostgreSQL. PostGIS aggiunge anche funzioni, operatori e miglioramenti dell'indice che si applicano a questi tipi spaziali. Puoi controllare il metodo di installazione qui.
Postgres_fdw
Il modulo postgres_fdw fornisce il wrapper di dati esterni postgres_fdw, che può essere utilizzato per accedere ai dati archiviati in un server di database PostgreSQL esterno. Quando ci sono due database PostgreSQL, postgres_fdw fa riferimento alla tabella dell'altro database da un database. Una volta definita la TABELLA ESTERA, puoi fare SELECT, INSERT, UPDATE, DELETE come un database locale.
La funzionalità fornita dal modulo postgres_fdw si sovrappone sostanzialmente alla funzionalità del modulo dblink precedente. Ma il modulo postgres_fdw fornisce una sintassi più trasparente e conforme agli standard per l'accesso alle tabelle remote e può fornire prestazioni migliori in molti casi.
Il principale caso d'uso delle tabelle esterne è rendere i dati disponibili ai sistemi senza replicarli o duplicarli. Esistono anche semplici implementazioni del partizionamento orizzontale utilizzando FDW, perché i dati negli altri shard possono essere disponibili per le query tramite FDW.
In Oracle, puoi ottenere i dati da tabelle di database remote utilizzando DBLink, ma la differenza principale tra DBLink e FDW è che FDW può mantenere localmente i metadati o la definizione della tabella sulla tabella esterna.
Mysql_fdw
Mysql_fdw è un'estensione PostgreSQL che implementa un Foreign Data Wrapper (FDW) per MySQL. Il modulo Mysql_fdw facilita l'uso del server PostgreSQL come client per MySQL Server, il che significa che può quindi recuperare i dati dal database MySQL come client. Attualmente, EnterpriseDB sta mantenendo questo modulo su github.
La versione precedente di mysql_fdw era supportata solo in sola lettura, ma l'ultima versione fornisce la capacità di scrittura. L'utente può ora emettere istruzioni di inserimento, aggiornamento ed eliminazione per le tabelle esterne utilizzando mysql_fdw. Utilizza il meccanismo di cast del tipo PostgreSQL per fornire un cast di tipi opposto tra i tipi di dati MySQL e PostgreSQL.
Hstore
Il modulo hstore implementa il tipo di dati hstore per la memorizzazione di coppie chiave-valore in un singolo valore in PostgreSQL. Il tipo di dati hstore è molto utile in molti casi d'uso, ad esempio dati semi-strutturati o righe con molti attributi che vengono interrogati raramente. Tieni presente che le chiavi e i valori sono solo stringhe di testo.
Prima di lavorare con il tipo di dati hstore, devi creare l'estensione hstore che carica il modulo contrib nella tua istanza PostgreSQL.
Pgaudi
pgAudit è un'estensione di controllo di PostgreSQL che fornisce una registrazione dettagliata di sessioni e/o di controllo degli oggetti tramite la funzione di registrazione standard di PostgreSQL.
L'obiettivo principale del modulo pgAudit è fornire agli utenti PostgreSQL la capacità di produrre registri di audit spesso richiesti per conformarsi alle certificazioni governative, finanziarie o ISO.
In genere, un audit è un'ispezione ufficiale dei conti di un individuo o di un'organizzazione, in genere da parte di un organismo indipendente. Le informazioni raccolte dal modulo pgAudit sono propriamente chiamate audit trail o audit log.
Il modulo pgAudit è stato sviluppato per supportare PostgreSQL 9.5 e versioni successive.
La registrazione dell'audit della sessione dal modulo pgAudit fornisce registri dettagliati di tutte le istruzioni eseguite da un utente nel back-end. Puoi controllare maggiori dettagli, configurazione e come installarlo e usarlo in PostgreSQL qui.
Oratorio
Orafce è un modulo che implementa funzioni, tipi di dati e pacchetti compatibili con Oracle. Questo è uno strumento open source con licenza BSD, quindi chiunque può utilizzare questo strumento. Questo modulo è molto utile nell'attività di migrazione da Oracle a PostgreSQL, ha molte funzioni Oracle implementate in PostgreSQL.
Le applicazioni di solito usano quelle funzioni con più occorrenze. È possibile ridurre il costo di modifica di SQL utilizzando questo strumento. Puoi controllare come migrare da Oracle al blog PostgreSQL.
Tutte le funzioni e i pacchetti sono implementati correttamente ed è ben testato.
Alcune delle funzioni sono:
- Uscita_dbms
- Dbms_random
- utl_file – funzioni relative al filesystem
- Dbms_pipe e dbms_alert
- PLVdate,PLVstr, PLVchr
- Tipo di dati DATE compatibile con Oracle e funzioni come ADD_MONTHS, LAST_DAY, NEXT_DAY e così via.
- Funzione NVL
- Funzione SUBSTR e SUBSTRB
- Supporto VARCHAR2 e NVARCHAR2
- TO_DATE()
Pg_bulkload
Il modulo Pg_bulkload fornisce capacità di caricamento dati ad alta velocità agli utenti di PostgreSQL. Il modulo pg_bulkload è progettato per caricare un'enorme quantità di dati in un database. Puoi caricare i dati sulla tabella bypassando i buffer condivisi di PostgreSQL. Il modulo pg_bulkload ha anche alcune funzionalità ETL come la convalida dei dati di input e la trasformazione dei dati con funzioni di filtro.
L'obiettivo originale del modulo pg_bulkload era un'alternativa più veloce al comando COPY in PostgreSQL.
Il modulo Pg_bulkload è sviluppato e mantenuto da NTT OSS Center.
NOTA IMPORTANTE:nell'ambiente di replica in streaming in PostgreSQL, il modulo pg_bulkload non funziona correttamente. Vedi qui per maggiori dettagli.
Pgstattuple
Il modulo pgstattuple fornisce varie funzioni per ottenere statistiche a livello di tupla in PostgresQL. La funzione nel modulo pgstattuple restituisce la lunghezza fisica di una relazione, la percentuale di tuple "morte" e altre informazioni. Questo può essere utile agli utenti per determinare se il vuoto è necessario o meno. L'argomento della funzione è il nome della relazione di destinazione (facoltativamente qualificato dallo schema) o l'OID.
Pg_trgm
pg_trgm è un'estensione PostgreSQL che fornisce una semplice corrispondenza di stringhe fuzzy in PostgreSQL. Il suo sovraccarico operativo e concettuale è molto inferiore rispetto alla ricerca full-text di PostgreSQL oa un motore di ricerca separato.
Un trigramma o trigrafo è un gruppo di tre caratteri consecutivi presi da una stringa. Puoi misurare la somiglianza di due stringhe contando il numero di trigrammi che condividono. Questa semplice idea di trigramma si rivela molto efficace per misurare la somiglianza delle parole in molte lingue naturali.
In generale, il modulo pg_trgm può aiutare quando:
- Hai bisogno di una corrispondenza di stringhe fuzzy senza distinzione tra maiuscole e minuscole in PostgreSQL.
- Vuoi accelerare LIKE, ILIKE, ~ o ~* in PostgreSQL.
- Vuoi cercare pattern che non sono ancorati a sinistra (ad es. %john%). Tali modelli non sono supportati dagli indici B-tree in PostgreSQL.
L'elenco sopra di moduli/estensioni è molto utile per espandere le capacità di PostgreSQL. Ci sono altre estensioni che non sono incluse nel blog ma è molto utile per espandere le funzionalità di PostgreSQL. Questi sono i seguenti.
- Estensioni del linguaggio:PL/Python, PL/Perl, PL/R, PL/v8, PL/sh ecc.
- Cstore_fdw
- Mongo_fdw
- HypoPG
- Tds_fdw
- Plprofiler
Conclusione
Ci sono molte estensioni nelle estensioni supportate dalla comunità di PostgreSQL e alcune estensioni di terze parti, tutte utilizzate per un caso d'uso particolare. Puoi espandere la capacità o la funzionalità di PostgreSQL utilizzando quei moduli.