Trabajo con bases de datos en PHP: PostgreSQL y MongoDB
El desarrollo web moderno en PHP rara vez prescinde de la interacción con bases de datos. La elección entre un sistema relacional (PostgreSQL) y uno orientado a documentos (MongoDB) depende de la estructura de los datos, los requisitos de rendimiento y la escalabilidad del proyecto. En este artículo, analizaremos cómo conectarse a ambos DBMS, realizar operaciones básicas y qué considerar al elegir.
1. Conexión a PostgreSQL mediante PDO
PostgreSQL es un potente DBMS relacional con soporte para transacciones ACID, consultas complejas y tipos de datos extensibles. En PHP, se recomienda usar la extensión PDO (PHP Data Objects) para trabajar con él, ya que proporciona una interfaz unificada para diferentes bases de datos.
Para empezar, asegúrese de que los controladores pdo_pgsql y pgsql estén instalados en su sistema. Puede verificarlo mediante phpinfo().
Ejemplo de conexión e inserción de datos
<?php$host = 'localhost';$dbname = 'my_database';$user = 'my_user';$password = 'my_password';
try { // Creamos el DSN (Data Source Name) $dsn = "pgsql:host=$host;dbname=$dbname"; // Nos conectamos $pdo = new PDO($dsn, $user, $password, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); echo "¡Conexión a PostgreSQL establecida con éxito!<br>"; // Inserción de datos usando sentencias preparadas $sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)"; $stmt = $pdo->prepare($sql); $stmt->execute([ ':name' => 'Iván Petrov', ':email' => 'ivan@example.com', ':age' => 28 ]); echo "Usuario agregado. ID: " . $pdo->lastInsertId(); } catch (PDOException $e) { echo "Error de conexión: " . $e->getMessage(); die();}?>El uso de sentencias preparadas (prepared statements) protege contra la inyección SQL y mejora el rendimiento en consultas repetitivas del mismo tipo.
Selección de datos con filtrado
<?php$minAge = 25;$search = "SELECT id, name, email, age FROM users WHERE age > :minAge ORDER BY age DESC";$stmt = $pdo->prepare($search);$stmt->execute([':minAge' => $minAge]);
$users = $stmt->fetchAll();
foreach ($users as $user) { echo "{$user['name']} ({$user['age']} años) - {$user['email']}<br>";}?>PostgreSQL admite JOIN complejos, subconsultas, funciones de ventana y búsqueda de texto completo, lo que lo convierte en una opción ideal para proyectos con requisitos estrictos de integridad de datos.
2. Conexión a MongoDB mediante el controlador oficial
MongoDB es una base de datos NoSQL que almacena datos en forma de documentos (objetos BSON similares a JSON). Es perfecta para proyectos con esquemas flexibles, prototipado rápido y escalabilidad horizontal.
Para trabajar con MongoDB en PHP, se utiliza la extensión mongodb y la biblioteca mongodb/mongodb (instalable mediante Composer).
Instalación del controlador
# Mediante Composer en la raíz del proyectocomposer require mongodb/mongodbEjemplo de conexión e inserción de un documento
<?phprequire_once 'vendor/autoload.php';
use MongoDB\\Client;use MongoDB\\Driver\\Exception\\Exception;
try { // Conexión al servidor local $client = new Client("mongodb://localhost:27017"); // Selección de la base de datos y la colección $collection = $client->my_database->users; // Inserción de un documento $insertResult = $collection->insertOne([ 'name' => 'Ana Smirnova', 'email' => 'anna@example.com', 'age' => 32, 'interests' => ['programación', 'lectura', 'viajes'],