Guies

Què és Postgres? La base de dades darrere de moltes apps, explicada

Postgres (oficialment PostgreSQL) és una base de dades relacional lliure i de codi obert: un programa que guarda les dades d'una app en taules de files i columnes, enllaça aquestes taules entre elles i respon preguntes sobre elles en un llenguatge anomenat SQL. És conegut per ser fiable, estricte en mantenir les dades correctes i prou flexible per gestionar des d'una llista d'inscripcions fins als registres d'una gran empresa. Moltes apps web, i molts dels serveis que les allotgen, estan construïts sobre ell.

Per què importa quan construeixes amb IA

Quan un constructor d'apps amb IA afegeix « una base de dades » al teu projecte, és probable que sigui Postgres. No cal que escriguis SQL per utilitzar-lo, però una mica de comprensió ajuda molt:

  • Pots descriure les dades en la forma que necessita la base de dades. « Els clients tenen moltes comandes; cada comanda té molts articles » es tradueix directament en taules.
  • Pots demanar les proteccions adequades. Postgres pot rebutjar dades incorrectes per si mateix —un correu duplicat, una comanda per a un client que no existeix— si la IA configura les regles.
  • Pots llegir el que ha fet la IA. Els noms de les taules, les columnes i les relacions són fàcils de comprovar en un visor de taules, encara que mai no toquis el codi.

Una analogia quotidiana: una oficina de fitxes molt estricta

Imagina una oficina de fitxers amb un armari per a cada tipus de cosa: un per als clients, un per a les comandes, un per als productes. Cada fitxa d'un calaix té les mateixes caselles impreses per omplir. Cada fitxa té un número únic, i una fitxa de comanda no repeteix les dades del client; només diu « client #214 », apuntant al calaix de clients.

L'empleat és estricte. No arxivarà una comanda que apunti a un client que no existeix. No acceptarà una fitxa amb la casella de data en blanc si és obligatòria. I si li demanes que mogui diners d'una fitxa de compte a una altra, o fa les dues meitats o no fa cap, mai només una.

Aquest empleat és Postgres. Els calaixos són les taules, les caselles impreses són les columnes, cada fitxa és una fila, i l'enllaç « client #214 » és una clau forana.

Què se li dona bé a Postgres

FuncióQuè vol dir en termes senzills
Taules i relacionsLes dades viuen en taules que apunten les unes a les altres, de manera que res no es copia en cinc llocs
SQLUn llenguatge estàndard per fer preguntes: « totes les comandes pendents del mes passat, les més noves primer »
Transaccions (ACID)Un grup de canvis o es fa tot o no es fa res, encara que el servidor caigui a mig camí
RestriccionsRegles que la base de dades aplica per si mateixa: camps obligatoris, correus únics, enllaços vàlids entre taules
ÍndexsDreceres de cerca perquè les búsquedes siguin ràpides a mesura que creixen les taules
JSONBGuarda dades flexibles, com a documents, en una columna quan una estructura fixa no encaixa
Cerca de text completCerca paraules en camps de text sense un servei de cerca separat, per a casos senzills
ExtensionsComplements com PostGIS per a mapes i ubicacions, o pgvector per guardar embeddings d'IA
Seguretat a nivell de filaRegles dins de la base de dades sobre quines files pot veure un usuari concret

Postgres va començar com un projecte de recerca a la Universitat de Califòrnia, a Berkeley, als anys 80, i des dels anys 90 l'ha desenvolupat obertament una comunitat global. Aquesta llarga trajectòria és la raó per la qual sovint és l'opció per defecte: està ben documentat, té molt suport i tots els grans proveïdors de núvol ofereixen una versió gestionada.

Un exemple pas a pas: convertir un full de càlcul en taules

Digues que gestiones un petit negoci de càtering i ho portes tot en un sol full de càlcul: cada fila és un esdeveniment, amb el nom del client, el telèfon i el correu, la data, els articles del menú i el preu.

Els problemes apareixen ràpidament. El mateix client apareix en sis files amb dos números de telèfon diferents. Els articles del menú estan escrits en una cel·la com « canapès x40, amanida x2 », de manera que no pots sumar quants canapès has fet aquest mes.

A Postgres, la mateixa informació es converteix en quatre taules:

TaulaColumnesNotes
clientsid, name, phone, emailEl correu ha de ser únic
esdevenimentsid, client_id, date, venue, statusclient_id ha de correspondre a un client real
articles_menuid, name, unit_priceUna fila per plat
articles_esdevenimentevent_id, menu_item_id, quantityEnllaça esdeveniments amb plats, amb una quantitat

Ara el número de telèfon d'un client viu en un sol lloc. « Quants canapès vam fer al març? » és una sola consulta SQL. I quan registres un esdeveniment nou amb els seus articles, una transacció s'assegura que mai no acabis amb un esdeveniment que té la meitat dels articles desats.

Aquest és el pas que molta gent se salta quan demana a una IA que « faci una app amb el meu full de càlcul ». La guia per convertir un full de càlcul en una app va més enllà.

Termes clau

  • Taula, fila, columna: un tipus de cosa, una instància concreta, una informació sobre aquesta cosa.
  • Clau primària: l'ID únic de cada fila, normalment id.
  • Clau forana: una columna que apunta a una fila d'una altra taula, com client_id.
  • Esquema: el disseny de totes les teves taules i columnes.
  • Migració: un canvi desat i repetible a l'esquema, com « afegeix una columna venue a esdeveniments ».
  • Consulta: una pregunta o instrucció escrita en SQL.
  • Cadena de connexió: l'adreça i la contrasenya que fa servir el teu backend per arribar a la base de dades. És un secret; consulta variables d'entorn i secrets.
  • Postgres gestionat: un servei que executa, fa còpies de seguretat i actualitza Postgres per a tu.

Per a les operacions del dia a dia que fa qualsevol app sobre aquestes taules —crear, llegir, actualitzar, esborrar—, consulta què vol dir CRUD.

Errors habituals i idees errònies

  • Una taula gegant. Copiar el full de càlcul columna per columna porta als mateixos problemes de duplicació. Separa les coses que es repeteixen en les seves pròpies taules.
  • Guardar llistes en un sol camp de text. « canapès x40, amanida x2 » en una sola columna no es pot comptar ni cercar bé. Fes servir una taula d'enllaç.
  • Sense restriccions. Sense « el correu ha de ser únic » o « cada esdeveniment necessita un client », les dades incorrectes entren silenciosament i apareixen mesos després.
  • Canviar la base de dades a mà en producció. Demana els canvis d'esquema com a migracions, de manera que el canvi quedi registrat i es pugui repetir.
  • Deixar que el navegador parli directament amb la base de dades. El frontend hauria d'anar a través del backend, que comprova els permisos. La contrasenya de la base de dades mai no pertany al codi de la pàgina.
  • « Postgres només és per a grans empreses.» Funciona igual de bé per a una llista d'espera de 50 files, i no caldrà canviar-ne a mesura que creixes.
  • Suposar que una base de dades és una còpia de seguretat. Guarda dades; no et protegeix automàticament de l'esborrat. Revisa quines còpies de seguretat ofereix el teu allotjament.

Què demanar al teu constructor d'IA

  • « Guarda [coses] en una base de dades. Taules: … amb aquests camps: … Enllaça cada [comanda] a un [client]. »
  • « Fes que el correu sigui únic als clients. Fes obligatoris aquests camps. No permetis una comanda sense client. »
  • « Fes servir migracions per a cada canvi d'esquema. »
  • « Afegeix índexs per a les cerques que fem més: comandes per client i per data. »
  • « Tot l'accés a la base de dades passa pel servidor. Guarda la cadena de connexió en variables d'entorn. »

Si no tens cap idea de què és una base de dades, comença per què és una base de dades i després torna aquí. Una app full-stack mostra on es posa la base de dades al costat del frontend i del backend.

Postgres a Mythex

Mythex dona a cada projecte que el necessita la seva pròpia base de dades Postgres dedicada. No la has de configurar: ho demanes al xat («guarda els correus de la llista d'espera en una base de dades») o fas servir l'ordre /database, i Mythex l'adjunta, injecta els detalls de connexió a la teva app i pot crear les taules per a tu. La base de dades d'una app publicada s'adorm després de cinc minuts d'inactivitat i es desperta amb la següent petició, i només et cobren el temps que ha estat realment activa, del mateix saldo de crèdits que la construcció. Els detalls són a la documentació de bases de dades, i les plantilles de tauler són un bon lloc per veure apps amb dades.

Preguntes

Postgres és el mateix que PostgreSQL?

Sí. PostgreSQL és el nom oficial i Postgres és el nom curt habitual; tots dos es refereixen a la mateixa base de dades relacional de codi obert.

Postgres és gratuït?

Sí. PostgreSQL és de codi obert sota la llicència permissiva de PostgreSQL, de manera que el pots utilitzar gratis, també en productes comercials. Només pagues pels servidors o pel servei gestionat que l'executa.

Quina diferència hi ha entre Postgres i MySQL?

Tots dos són bases de dades SQL relacionals i gratuïtes, i tots dos són adequats per a la majoria d'apps. Postgres és conegut per la seva integritat de dades estricta, tipus de dades rics com JSONB i matrius, i un ampli ecosistema d'extensions; MySQL és conegut per la seva simplicitat i una llarga trajectòria en allotjament web.

Postgres és bo per a una app petita?

Sí. Funciona bé per a una llista d'espera d'una sola taula i també per a sistemes de producció grans, de manera que no caldrà canviar de base de dades a mesura que creix l'app. Els serveis gestionats fan fàcil executar-lo sense un administrador de bases de dades.

Mythex · Pricing · Crea qualsevol cosa amb IA · Plantilles de llocs web i aplicacions · Mythex comparat · Glossari de creació d’aplicacions amb IA · Eines gratuïtes per crear aplicacions amb IA · English

English አማርኛ العربية Български বাংলা Bosanski Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)