Tipus de Connexions a Bases de Dades


Les bases de dades són bàsiques en el desenvolupament d’aplicacions, ja que permeten emmagatzemar, gestionar i recuperar dades de manera eficient.
La connexió entre una aplicació i una base de dades es realitza a través de diversos mètodes i tecnologies.

A continuació es mostren els tipus generals de connexió a una base de dades, independentment del llenguatge de programació utilitzat.


Tipus de Connexions a Bases de Dades

1.- Connexió Directa (Connectors)

És el tipus més bàsic i tradicional de connexió. L’aplicació interactua directament amb la base de dades utilitzant un controlador (driver).

  • Context: Desenvolupament d’aplicacions petites o monousuari.
  • Característiques:
    • Requereix un driver compatible amb el sistema de base de dades.
    • Utilitza credencials i URLs de connexió específiques (per exemple, jdbc:mysql://localhost:3306/mi_base en Java).
  • Avantatges:
    • Simple d’implementar.
    • Baix nivell d’abstracció, ideal per a aprenentatge.
  • Desavantatges:
    • Difícil d’escalar.
    • No gestiona la concurrència de manera eficient. (multiples usuaris i processos)

2.- Pool de Connexions

Un pool de connexions és un mecanisme que permet reutilitzar connexions prèviament establertes en lloc de crear i tancar noves connexions per a cada sol·licitud.

  • Context: Aplicacions web d’alt rendiment.
  • Llibreries populars:
    • HikariCP (Java): Alta velocitat i eficiència.
    • Apache DBCP: Molt usada en projectes legacy (software que ha quedat obsolet però que encara s’utilitza).
    • C3P0: Senzill i àmpliament conegut.
  • Avantatges:
    • Millora el rendiment al reduir la càrrega de crear i destruir connexions.
    • Escalable per a aplicacions amb molt de tràfic.
  • Desavantatges:
    • Més complexitat en la configuració inicial.
    • Depèn de llibreries externes.

3.- Connexió Basada en ORM (Object-Relational Mapping)

L’ORM és una tècnica que mapeja classes i objectes del llenguatge de programació amb taules i registres d’una base de dades.

  • Context: Aplicacions de mitjana o gran escala.
  • Eines més populars:
    • Hibernate (Java).
    • Entity Framework (.NET).
    • SQLAlchemy (Python).
  • Avantatges:
    • Redueix la necessitat d’escriure SQL explícit.
    • Simplifica la programació utilitzant objectes en lloc de taules.
  • Desavantatges:
    • Corba d’aprenentatge alta.
    • Pot introduir una càrrega addicional de rendiment,per la traducció d’objectes a consultes SQL.

4.- Connexió a través d’APIs REST

Moltes bases de dades modernes proporcionen APIs per a interactuar amb els seus serveis. Aquestes APIs solen ser RESTful o basades en gRPC.

  • Context: Bases de dades al núvol o distribuïdes.
  • Plataformes populars:
    • Firebase Realtime Database i Firestore (Google).
    • AWS DynamoDB.
  • Avantatges:
    • Ofereixen** alta disponibilitat i escalabilitat automàtica**.
    • Fàcil d’integrar en aplicacions web i mòbils.
  • Desavantatges:
    • Latència més alta a causa de la comunicació per xarxa. (entenem per latencia el temps que tarda una acció o sol·licitud a obtenir una resposta o completar-se, es a dir, el temps de retard entre una entrada i la seua resposta)
    • Requereix un maneig addicional d’autenticació i permisos.

5.- Model Client-Servidor

Model que implica una comunicació directa entre un client (l’aplicació) i un servidor de base de dades.

  • Context: Aplicacions empresarials o software legacy.
  • Bases de dades comunes:
    • Oracle Database.
    • Microsoft SQL Server.
  • Avantatges:
    • Permet una administració centralitzada de la base de dades.
    • Adequat per a entorns multiusuari.
  • Desavantatges:
    • Depèn d’una xarxa estable.
    • Pot ser lent en xarxes de baixa qualitat.

6.- Bases de Dades Distribuïdes

Les bases de dades distribuïdes permeten connexions a través de múltiples nodes per aconseguir alta disponibilitat i escalabilitat.

  • Context: Sistemes globals i aplicacions modernes amb gran volum de dades.
  • Bases de dades comunes:
    • Apache Cassandra.
    • MongoDB.
    • Google Spanner.
  • Avantatges:
    • Escalabilitat horitzontal i tolerància a fallades.
    • Compatibilitat amb llenguatges moderns com Python, JavaScript, i Java.
  • Desavantatges:
    • Major complexitat en la configuració i manteniment.

Taula Comparativa

Tipus de Connexió Avantatges Desavantatges Casos d’Ús
Connexió Directa Fàcil d’implementar Difícil d’escalar Aplicacions petites o prototips
Pool de Connexions Rendiment optimitzat Configuració inicial complexa Aplicacions web amb alt tràfic
ORM Reducció del codi SQL, més productivitat Sobrecàrrega de rendiment Aplicacions empresarials
APIs REST Ideal per a bases de dades al núvol Latència més alta Aplicacions mòbils/web al núvol
Client-Servidor Administració centralitzada Depèn d’una xarxa estable Sistemes empresarials
Bases Distribuïdes Alta disponibilitat i escalabilitat Complexitat elevada Bases de dades globals o distribuïdes

Taula comparativa llenguatges de programació


Tipus de Connexió i Eines Més Usades per Llenguatge de Programació

Llenguatge Connexió Directa Pool de Connexions ORM APIs REST Bases Distribuïdes Middleware
Java JDBC HikariCP, Apache DBCP, C3P0 Hibernate, JPA HttpClient, OkHttp Cassandra Driver, MongoDB Driver Spring Framework, JBoss Middleware
Python sqlite3, psycopg2, MySQL Connector SQLAlchemy, aiomysql, asyncpg SQLAlchemy, Django ORM Requests, httpx pymongo, cassandra-driver FastAPI, Django Middleware
C# ADO.NET Entity Framework Entity Framework HttpClient MongoDB.Driver, CassandraSharp ASP.NET Middleware
PHP PDO, MySQLi Laravel Database Eloquent (Laravel) Guzzle MongoDB Driver, Cassandra PHP Driver Laravel Middleware
Node.js mysql2, pg pg-pool, generic-pool Sequelize, TypeORM Axios, Fetch, node-fetch Mongoose, Cassandra Driver Express Middleware
Ruby pg, mysql2 Active Record Active Record Faraday, HTTParty mongo, cassandra-driver Rack Middleware
Go database/sql pgx GORM net/http, resty mongo-go-driver, gocql Middleware personalitzat
C/C++ ODBC, MySQL C API Gestió manual No és habitual Llibreries HTTP natives MongoDB C Driver Middleware específic

  • Connexió Directa: Llibreries i eines per establir connexions directes amb la base de dades.
  • Pool de Connexions: Llibreries que milloren el rendiment reutilitzant connexions.
  • ORM: Llibreries per al mapatge objecte-relacional.
  • APIs REST: Eines per interactuar amb bases de dades a través de serveis web.
  • Bases Distribuïdes: Llibreries per treballar amb bases de dades escalables i distribuïdes.
  • Middleware: Frameworks o eines per a la gestió d’intermediaris en aplicacions.