PostgreSQL

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca
PostgreSQL
programari
Logotip
Captura de pantalla d'exemple
Tipus Sistema de gestió de bases de dades
Desenvolupador Grup de desenvolupament global PostgreSQL
Data de la primera versió 1996
Última versió 13 (24 de setembre de 2020 )
Sistema operatiu Multiplataforma
Llenguatge C.
Llicència Llicència BSD
( llicència gratuïta )
Lloc web www.postgresql.org

PostgreSQL (pronunciació en anglès [poʊstɡrɛs ˌkjuːˈɛl] Pronunciació , 5,6 kB MP3) és un SGBD complet orientat a objectes publicat sota una llicència gratuïta (estil BSD License ). Sovint abreujat com a " Postgres ", tot i que es tracta d'un nom antic del mateix projecte, és una alternativa real tant a altres productes gratuïts com MySQL , Firebird SQL i MaxDB com als de codi tancat com Oracle , IBM Informix o DB2 i ofereix funcions únic d’aquest tipus que el situa en alguns aspectes al capdavant del sector de les bases de dades .

Història

Inicialment, el SGBD es deia INGRES i era un projecte de la Universitat de Berkeley . El 1982, el líder del projecte, Michael Stonebraker , va deixar Berkeley per comercialitzar el producte, però més tard va tornar al context acadèmic. El 1985 va tornar a abandonar la universitat per donar vida a un projecte post-Ingres (que prenia el nom de Postgres ) que superava les evidents limitacions dels productes competidors de l'època. Les bases de les fonts Ingres i Postgres eren, i s’han mantingut amb el pas del temps, força diferents.

El nou projecte tenia com a objectiu proporcionar un suport complet per als tipus de dades, en particular la possibilitat de definir nous tipus de dades, UDF (Funció definida per l’usuari), Tipus definits per l’usuari. També hi havia la possibilitat de descriure la relació entre entitats (taules), que fins llavors es deixava completament a l'usuari. Per tant, Postgres no només va preservar la integritat de les dades, sinó que va ser capaç de llegir informació de taules relacionades de manera natural, seguint regles definides per l'usuari.

El 1986, els desenvolupadors van publicar un gran nombre d'articles que descrivien el nou sistema, i el 1988 es va publicar un primer prototip de treball. La versió 1 es va publicar el juny de 1989 per a un nombre limitat d’usuaris. Una versió 2 va seguir el juny de 1990 , en què el sistema de regles es va reescriure completament. A la versió 3, de 1991 , aquest sistema es va tornar a escriure, però també es va afegir suport per a diversos gestors d'emmagatzematge de dades i un motor de consultes millorat. El 1993, ja hi havia un nombre important d’usuaris que inundaven l’equip de desenvolupament amb sol·licituds de suport i noves funcions. Després de llançar la versió 4, que principalment era una neteja de codi, el projecte va acabar.

Tot i que el projecte Postgres es va abandonar oficialment, la llicència BSD va permetre als desenvolupadors de codi obert obtenir una còpia del programari i després millorar-lo al seu criteri. El 1994, dos estudiants de Berkeley, Andrew Yu i Jolly Chen, van afegir un intèrpret SQL a Postgres per substituir el vell QUEL del dia Ingres. El nou programari es va llançar al web sota el nom de Postgres95 . El 1996 va canviar de nom de nou: per ressaltar el suport al llenguatge SQL, es va dir PostgreSQL .

La primera versió de PostgreSQL va ser la versió 6. Des de llavors, una comunitat de desenvolupadors voluntaris de tot el món que es coordinava a través d'Internet ha estat la responsable del projecte. La versió 6 va anar seguida d'altres, cadascuna de les quals va aportar noves millores. Al gener de 2005 , es va llançar 8, el primer natiu de Windows.

Tot i que la llicència permet comercialitzar el programari, el codi Postgres no es va desenvolupar comercialment tan ràpidament com Ingres. En algun moment, però, Paula Hawthorn (membre original de l’equip d’Ingres) i Michael Stonebraker van formar una empresa anomenada Illustra Information Technologies per comercialitzar-la.

Descripció

Una revisió ràpida de PostgreSQL pot suggerir que és similar a altres bases de dades. PostgreSQL utilitza el llenguatge SQL per consultar dades. S’emmagatzemen com una sèrie de taules amb claus externes que serveixen per enllaçar dades relacionades. La programabilitat de PostgreSQL és el seu principal punt fort i el principal avantatge sobre els seus competidors: PostgreSQL facilita la creació d'aplicacions per al món real, utilitzant les dades extretes de la base de dades.

Les bases de dades SQL contenen dades senzilles en " taules planes ", que requereixen que l'usuari obtingui i agrupi informació relacionada mitjançant consultes. Això contrasta amb la forma en què les aplicacions i els usuaris fan servir les dades: com ara en un llenguatge d'alt nivell amb tipus de dades complexes, on totes les dades relacionades funcionen com a elements complets, normalment anomenats objectes o registres (segons l'idioma).

La conversió d’informació del món SQL a la programació orientada a objectes presenta dificultats principalment pel fet que els dos mons utilitzen models diferents d’organització de dades. La indústria anomena aquest problema com a " desajustament de la impedància ": assignar dades d'un model a un altre pot ocupar fins al 40% del temps de desenvolupament d'un projecte. Una sèrie de solucions de mapatge, conegudes habitualment com a " mapatge relacional d'objectes ", poden resoldre el problema, però solen ser costoses i tenen els seus propis problemes, provocant un rendiment deficient o obligant a tenir accés a totes les dades a través del llenguatge compatible el mapatge en si.

PostgreSQL pot resoldre molts d’aquests problemes directament a la base de dades. PostgreSQL permet als usuaris definir nous tipus basats en tipus de dades SQL normals, cosa que permet a la pròpia base de dades entendre dades complexes. Per exemple, podeu definir una adreça com un conjunt de cadenes de text diferents per representar el número de la casa, la ciutat, etc. A partir d’aquí podeu crear fàcilment taules que continguin tots els camps necessaris per emmagatzemar una adreça amb una sola línia de codi.

PostgreSQL també permet l’herència de tipus, un dels conceptes principals de la programació orientada a objectes . Per exemple, podeu definir un tipus de codi postal i, a continuació, crear un tipus de límit (codi postal) o un tipus us_zip_code basat en ell. Per tant, les adreces de la base de dades podrien acceptar tots dos tipus i regles específiques podrien validar les dades en ambdós casos. En les primeres versions de PostgreSQL, la implementació de nous tipus requeria escriure extensions en C i compilar-les al servidor de bases de dades. Des de la versió 7.4 s'ha tornat molt més fàcil crear i utilitzar tipus personalitzats mitjançant l'ordre "CREA DOMINI".

Programar la pròpia base de dades pot obtenir grans avantatges de l’ús de funcions. La majoria dels sistemes SQL permeten als usuaris escriure un procediment, un bloc de codi SQL que poden invocar altres sentències SQL. Tot i això, el propi SQL continua sent inadequat com a llenguatge de programació, de manera que els usuaris poden experimentar grans dificultats per construir una lògica complexa. Encara pitjor, el propi SQL no admet molts dels principals operadors bàsics dels llenguatges de programació, com ara el bucle i les estructures de control condicional . Per tant, cada proveïdor ha escrit les seves pròpies extensions de llenguatge SQL per afegir aquestes funcions i, per tant, aquestes extensions no necessàriament funcionen en plataformes de bases de dades diferents.

A PostgreSQL, els programadors poden implementar la lògica en un dels molts llenguatges compatibles.

  • Un llenguatge natiu anomenat PL / pgSQL similar al llenguatge de procediment PL / SQL d’Oracle, que ofereix avantatges particulars en procediments intensius en consultes.
  • Embalatges per a llenguatges de seqüència d’ordres populars com Perl , Python , Tcl i Ruby que us permeten utilitzar la seva potència en la manipulació de cadenes i en enllaços a extenses biblioteques de funcions externes.
  • Els procediments que requereixen un rendiment més alt i una lògica de programació complexa poden utilitzar C i C ++ .
  • A més, també hi ha disponible una interfície per al llenguatge R , rica en funcions estadístiques i per al càlcul de matrius .

El programador pot col·locar el codi al servidor com a funcions , que fan que el codi es pugui reutilitzar com a procediment emmagatzemat , de manera que el codi SQL pugui cridar a funcions escrites en altres idiomes (com ara C o Perl).

Punts forts de la programabilitat PostgreSQL:

  • Augment del rendiment, ja que el servidor de base de dades aplica directament la lògica, reduint el flux d'informació entre el client i el servidor.
  • Increment de la fiabilitat, a causa de la centralització del codi de control al servidor, al no haver de gestionar la sincronització de la lògica entre múltiples clients i les dades emmagatzemades al servidor.
  • Si col·loqueu capes d'abstracció de dades directament al servidor, el codi de client pot ser més senzill i senzill.

Aquests avantatges fan que PostgreSQL sigui, sens dubte, el sistema de bases de dades més avançat des del punt de vista de la programabilitat, cosa que ajuda a explicar el seu èxit. L’ús de PostgreSQL pot reduir el temps total de programació de molts projectes, amb els avantatges esmentats creixent amb la complexitat del projecte, òbviament si s’utilitzen usuaris experimentats en el seu ús.

Índexs

Admet els índexs GiST i GIN ( índex generalitzat invertit ) que utilitzen arbre B + , hash. Podeu crear índexs d’expressions amb un índex del resultat d’una expressió o funció en lloc del valor simple d’una columna, índexs parcials on indexeu part d’una taula amb l’expressió SQL: CREATE INDEX. També és capaç d’utilitzar múltiples índexs junts per realitzar consultes complexes.

Esquemes

A PostgreSQL, tots els objectes (a excepció de rols i espais de taula ) es troben en un esquema. Funciona efectivament com a espai de noms , permetent que objectes amb el mateix nom puguin conviure a la mateixa base de dades. Els esquemes són anàlegs a les carpetes del sistema de fitxers , excepte que no es poden trobar l'un dins de l'altre, i no és possible crear enllaços simbòlics que apuntin a un altre esquema o objecte.

Les bases de dades es creen de manera predeterminada amb l'esquema "públic" (comú), però es pot afegir qualsevol altre esquema addicional i no es requereix públic.

Un "camí de cerca" determina l'ordre en què es comproven els esquemes d'objectes no qualificats (aquells sense un esquema predeterminat) que es poden configurar a la base de dades o al nivell de rol. El "camí de cerca" conté per defecte el nom d'esquema especial de "$ usuari" que primer cerca un esquema amb el nom de l'usuari connectat a la base de dades. Si no es troba, es busca el patró següent.

Tipus de dades

S'inclouen de forma nativa una gran varietat de tipus de dades:

  • Booleans
  • nombres amb una precisió arbitrària
  • Caràcters (text, varchar, char)
  • Pistes
  • Data / hora (marca de temps / hora amb o sense zones horàries, data, interval)
  • Diners
  • Enum
  • Cadenes de bits
  • Tipus de cerca de text
  • Compost
  • Matrius (longitud variable i qualsevol tipus de dades, inclosos els tipus de text i compostos) de fins a 1 GB.
  • Primitius geomètrics
  • Adreces IPv4 i IPv6
  • Blocs CIDR i adreces MAC
  • XML que admet consultes XPath (des del 8.3)
  • UUID (des del 8.3)
  • JSON (des del 9.2)

MVCC

PostgreSQL gestiona la simultaneïtat mitjançant un sistema conegut com a control de simultaneïtat multiversió (MVCC) que proporciona a cada transacció una "imatge" de la base de dades, permetent canvis que no siguin visibles per a altres transaccions fins que no s'executin. Gairebé sempre s’elimina la necessitat d’utilitzar panys de lectura i s’assegura el manteniment dels principis ACID de manera eficient.

Programes de gestió d’interfícies gràfiques

  • phpPgAdmin : és una aplicació PHP gratuïta que us permet administrar de manera simplificada, amb una interfície gràfica basada en web, la base de dades PostgreSQL
  • pgAdmin : és una aplicació multiplataforma, escrita en C ++ , que us permet gestionar de manera simplificada, amb una interfície gràfica, la base de dades PostgreSQL.

Altres projectes

Enllaços externs

Control de l'autoritat GND ( DE ) 4690455-4
Programari lliure Portal de programari lliure : accediu a les entrades de Viquipèdia relacionades amb programari lliure