PostgreSQL en la Actualidad
PostgreSQL, conocido popularmente como Postgres, es una base de datos relacional de objetos de código abierto que ha ido evolucionando desde sus inicios, ganando una comunidad cada vez más amplia, activa, entusiasta y comprometida que garantiza diligentemente que este, cumpla con los estándares SQL establecidos por ANSI e ISO.
Por lo anterior, este ofrece una gran portabilidad de aplicaciones, permitiendo a los desarrolladores una migración más fácil entre diferentes motores de base de datos.
Además, destaca por una serie de características que lo hacen tan atractivo a la hora de su evaluación entre las cuales se pueden mencionar:
ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad), lo que garantiza que las operaciones se hagan de forma segura y confiable en entornos de alta e intensa carga de trabajo y concurrencia. Esto, lo complementa con un mecanismo de control de concurrencia multiversión denominada (MVCC) que garantiza que las transacciones se ejecuten de manera eficiente y sin bloqueos innecesarios, lo que permite mejorar significativamente la performance y escalabilidad del sistema.
ACID, también pone a disposición funcionalidades avanzadas en relación a la seguridad, gestion y acceso a los datos, como son las políticas de seguridad a nivel de filas y columnas; así como también la integración de mecanismos de encriptación de datos, auditorias y autenticación externa como LDAP y KERBEROS.
Algo de Historia
Su génesis remonta al año 1986 cuando inició como proyecto universitario (Berkeley), liderado por Michael Stonebraker con gran inspiración en Oracle, al cúal se denominó INGRES. Luego de 8 años de trabajo en el proyecto en la cual se implementaron muchas funcionalidades procedurales y su propio lenguaje de consultas (PostQuel).
Durante del año 1994, Ingress incorporó el “interprete de lenguaje SQL” dando paso a una nueva version del motor denominada PostgreSQL95. En 1996 se decide nuevamente cambiar el nombre para que refleje la característica del lenguaje SQL, a lo que hoy conocemos como PostgreSQL.
La primera versión formal de PostgreSQL 6.0 fue liberada en 1997. Desde entonces muchos desarrolladores se han unido a la comunidad para incoporar muchas características al motor.
A mediados del 2005, se anunciaron planes de comercialización de PostgreSQL. Una de ellas y que hasta hoy en día resulta ser una de las mas grandes es EnterpriseDB, la cual de forma constante ha ido incorporando diversas funcionalidades que permitan y faciliten la integración de aplicaciones escritas para trabajar con Oracle, ser más fáciles de ejecutar con PostgreSQL; así como la integración de servicios entre varios motores y CLOUD.
En la actualidad, su popularidad, atractivo y reconocimiento han ido creciendo por sus características y funcionalidades técnicas que lo hacen uno de los motores mas potentes y robustos del mercado.
PostgreSQL vs Oracle
Key Features | PostgreSQL | Oracle |
Uso Primario Motor | RDBMS (Open Source) | RDBMS |
Uso Segundario Motor | •Document store •Graph DBMS (Oracle Spatial & Graph) •RDF store (Oracle Spatial & Graph) •Spatial DBMS (Oracle Spatial & Graph) •Vector DBMS (Oracle 23c) | •Document store •Graph DBMS (Apache Age) •Spatial DBMS •Vector DBMS (extensión pgvector) |
Ranking Actual | #4 | #1 |
Website | www.postgresql.org | www.oracle.com/database |
Documentación Técnica | www.postgresql.org/docs | docs.oracle.com/en/database |
Release Actual | 16.3, Mayo 2024 | 23c |
S.O soportados | AIX HP-UX Linux OS X Solaris Windows z/OS | FreeBSD HP-UX Linux NetBSD OpenBSD OS X Solaris Unix Windows |
Lenguajes de Programación Sopotados | .Net, C, C++, Delphi, Java JDBC, JavaScript (Node.js) Perl, PHP, Python, Tcl | C, C#, C++, Clojure, Cobol, Delphi, Eiffel, Erlang, Fortran Groovy, Haskell, Java, JavaScript, Lisp, Objective C, OCaml Perl, PHP, Python, R, Ruby, Scala, Tcl, Visual Basic |
Key Features | PostgreSQL | Oracle |
Lenguaje Propietario | Pl/SQL | PL/pgSQL |
Uso Segundario Motor | •Document store •Graph DBMS (Oracle Spatial & Graph) •RDF store (Oracle Spatial & Graph) •Spatial DBMS (Oracle Spatial & Graph) •Vector DBMS (Oracle 23c) | •Document store •Graph DBMS (Apache Age) •Spatial DBMS •Vector DBMS (extensión pgvector) |
Métodos de Partición | •Hash partitioning •Range partitioning •List partitioning •Reference Partitioning • •Adicionalmente provee “List Combined With Range Partition” que permite LIST partition y sub-partition con RANGE. • • • | •Hash partitioning •Range partitioning •List partitioning •Hybrid Partitioning •Features asociadas al manejo de particiones, desde lo compuesto a nivel de partición como subpartición; así como el “automatic List Patitioning” • •Adicionalmente provee estrategias de particionamientos como compuestas, list-range, list-list & range-hash & Partitions Extensión como el “Referencial Partitioning” e “Interval partitioning” |
Métodos de Replicación | •WAL (Write- Ahead Log Shipping) •Shared disk Failover •File System (block Device) Replication •Logical Replication •Trigger-Based Primary Standby Replication •SQL Based Replication Middleware •Asynchronous Multimaster Replication •Synchronous Multimaster Replication • Ofrece capacidades de replicación integradas que permiten una fácil redundancia de datos y alta disponibilidad para aplicaciones críticas. | •Data Guard & Active Data Guard •Logical Standby Database •Snapshot Replication •Materialized View Replication •Oracle Golden Gate •Oracle Streams Estos métodos ofrecen soporte con varias topologías de replicación incluidos los multi-source & Source-Replica. |
Key Features | PostgreSQL | Oracle |
In-memory | NO | YES |
High Availability & Disaster Recovery | •No tiene HA nativa •Manual Switchover & Failover •HA Cluster •Usa Heartbeat a nivel de S.O •Uso de Virtual / Floating IP Address para Failover •Replication (sync or not sync) •Logical / Binaria •Streaming •Filesystem •Disk/LUN •Backup •Online / Offline •Full / Incremental •Physical / Logical •Data Files / Wal Files •Vía Database Tools / Disk Array Snapshots •Soluciones de terceros, que son open sources, pero algunos de ellos implementados en ambientes productivos requieren de licencias. •Geo HA-Cluster (> a 50 kilómetros) •Entre otras • • | •Oracle Real Application Clusters •Oracle Active Dataguard •Oracle Globally Distributed Database •Oracle Recovery Manager •Oracle Database Flashback Technologies •Edition Based Redifinition •Oracle GoldenGate • •Cada una de estas tecnologías tienen asociadas features con soluciones y beneficios muy potentes, algunas de ellas son: • •Application Continuity •Oracle Sharding •Rac ONE Node •ClusterWare •ASM •ACFS •AHF •Global Data Services •Asociadas a Oracle Golden Gate •Online Reorganization •Zero Data Loss •Entre otras • •Link relacionado: https://www.oracle.com/database/technologies/high-availability.html • • |
Key Features | PostgreSQL | Oracle |
Soporte Técnico | •Comunidad PostgreSQL •Tutoriales y Recursos en línea •Servicios de soporte por terceros •Equipo PostgreSQL •Canales de comunicación declarados en la web de PostgreSQL | •Atención personalizada al cliente con foco en las necesidades del cliente. •Recursos integrales de soporte en línea, tutorials, documentación, etc. •Contratos de soporte técnico •Consejos de expertos en foros y blogs Oracle •Acceso a la base de conocimientos de las soluciones Oracle. (Oracle support). |
Licencia | •Base de Datos Open Source de uso y distribución libre. •Dado la ausencia de “derechos de licencia” se reducen significativamente los costos favoreciendo especialmente a pequeñas y medianas empresas y/o proyectos con presupuestos limitados. •Fundamental considerar posibles gastos de soporte, mantenimiento y uso de herramientas o extensiones de tercero como es el caso de PostgreSQL EDB. • | •Oracle es un producto comercial y tiene un modelo de licenciamiento según las necesidades de la empresa. •Existen varias ediciones, opciones y modelos de licencia basados en el usuario o en el procesador. •Muchas soluciones y/o features avanzadas que exigen las empresas presentan un costo a considerar. •Soluciones robustas, funciones avanzadas, integraciones complejas y un soporte sólido justifican las tarifas de licencia y costos relacionados, pero deben ser analizados cuidadosamente. |
PostgreSQL Architecture
Architecture (Memory Allocation)
Shared Memory (usado por postgres server) | Local Memory (backend process for query processing) |
•Shared buffers •Wal buffers – Wal buffer written to WAL Files -Backup and PITR these are important – Archiving ensures recoverability and helps a slave catch-up during replication lag •Background Process. •Locks •Entre otros. | •Work_mem, used for internal sor operations like ORDER BY, DISTINCT, MERGE, entre otras •Maintenance_work_mem, maintenance operations like VACUUM, REINDEX, CREATE INDEX •Temp_buffer, used for temporary tables |
PostgreSQL Architecture (Logical Structure)
Extensiones
Las extensions de PostgreSQL son definidas como módulos, usadas para proporcionar operadores y funciones adicionales. Resultan ser esenciales para robustecer a PostgreSQL y poder tener mayor visibilidad, métricas y control sobre lo que está sucediendo en la base de datos por ejemplo, temas relacionados con auditorias, monitor de los statements, etc. Muchas de estas exigen configuraciones adicionales para poder trabajar correctamente.
Estas se deben crear mediante el comando “create extension pg_stat_statements;”. Este cargará la extensión en el actual esquema o bien en el de interés. Para poder llevar a cabo la creación de una extensión se requieren privilegios del owner o bien del super user.
A continuación un ejemplo:
Ecosistema de PostgreSQL
Conclusión
Tanto PostgreSQL como Oracle nos ofrecen fortalezas y debilidades únicas. Estas serán claves para evaluar y tomar la mejor decisión en función de las necesidades que el negocio demanda.
PostgreSQL, aparece como una solución flexible, opensource y respaldado por la comunidad en potencia. Al ser de Código Libre lo hace atractivo desde la rentabilidad del negocio. Resulta ser ideal para pequeñas y medianas empresas y/o bases de datos de tamaño medio que poseen aplicaciones que exigen un perfil de “read intensive workload”.
Oracle, se muestra como una fortaleza sólida, robusta, confiable, de gran rendimiento, escalabilidad y seguridad, lo cual lo promueve como una opción ideal para grandes empresas que poseen aplicaciones de misión crítica que exigen un perfil de “data intensive workload” (high throughput). Adicionalmente ofrece amplias soluciones y funcionalidades en diferentes áreas de negocio; asi como también opciones de soporte avanzado que satisfacen las nececidades de las organizaciones con alta demanda de performance y exigentes estándares de seguridad.
Certificaciones
Realizado por Patricio silva Aedo
- Relator Oracle University desde 2018
- Oracle Database Administrator Certified Professional
- Oracle OCI Autonomous Database Specialist
- Oracle OCI Foundations Associate
- PostgreSQL Database Administrator Certified Professional