informacion[arroba]academiaandroid.com +34 958084455

Conexión a base de datos externa desde Android: SGDB

Post Series: Conexión a una Base de Datos externa desde Android

En esta serie de tutoriales se tratarán los diferentes gestores de base de datos externas que se pueden conectar con aplicaciones Android y veremos un ejemplo práctico, desarrollando un proyecto que permitirá la sincronización directa con una base de datos integrada en MySQL.

Gestores de Bases de Datos externas

La conexión directa a un Gestor de Base de Datos Externo desde Android es una posibilidad completamente factible.

Si bien es cierto que el propio sistema operativo Android trabaja con SQLite sin un servidor que funcione como capa intermedia entre el S.O. y el Gestor de Base de Datos (no es posible la instalación de un servidor en nuestro dispositivo Android), la opción de poder acceder a una base de datos externa desde el propio dispositivo es una alternativa que no requiere de configuraciones especiales: bastaría con establecer permisos de Internet en la aplicación que se desarrolle, además lógicamente, de un servidor externo para realizar la conexión.

A continuación se revisarán varios SGBD (Sistemas de Gestión de Base de Datos también conocidos por sus siglas en inglés DBMS) que posibilitan la sincronización de una base de datos con una aplicación Android.

CouchDB

Gestor de base de datos de código abierto, desarrollado por Damien Katz, cuya finalidad principal es prestar servicio a aplicaciones web (licencia Apache License y liberada la versión 1.2 en Abril de 2012).

Logo CouchDBSe trata de una base de datos NoSQL, es decir, no usan el lenguaje de consultas estructurado o SQL como principal lenguaje de consultas.

Página Oficial: http://couchdb.apache.org/

Principales características:

  • Almacenamiento de datos como documentos, utilizando los pares campo/valor que proporciona JSON (acrónimo de JavaScript Object Notation, que posibilita el intercambio de datos a través de un formato ligero y accediendo a dicha información con JavaScript).
  • Estructuración por medio de vistas.
  • Permite replicar los datos para posibles pérdidas de conexión, muy útil en dispositivos móviles, actualizando los datos al volver a un estado OnLine.
  • Características de transacción ACID: Atomicity, Consistency, Isolation and Durability (Atomicidad, Consistencia, Aislamiento y Durabilidad).

FireBird

Sistema de administración de base de datos relacional de código abierto, que utiliza el lenguaje de consultas SQL, liberado por Borland en el año 2000 y escrito en C y C++.

Firebird logo

Posibilita modelos sencillos monousuario hasta desarrollos empresariales con varias bases de datos de más de 500 GB y con numerosos clientes de manera simultánea.

Página Oficial: http://www.firebirdsql.org/

Características más destacadas:

  • Soporta numerosas plataformas de hardware y software: Linux, Windows, MAC OX, Solaris etc.
  • Arquitectura multigeneracional, que permite el desarrollo y soporte de aplicaciones híbridas OLTP y OLAP.
  • Soporta procedimientos almacenados, disparadores, eventos y funciones definidas por el usuario.
  • Recomendable para desarrollar aplicaciones interoperables en ambientes homogéneos e híbridos.
  • Alto rendimiento, instalación sencilla, pequeño tamaño que facilita su distribución y buena escalabilidad (capacidad de crecimiento y adaptación a nuevas implementaciones sin perder eficiencia).
  • Arquitectura Cliente/Servidor sobre el protocolo TCP/IP.
  • Seguridad basada en usuarios/roles.
  • Posibilita el almacenamiento de elementos BLOB (Binary Large Objects).

MySQL

Sistema de gestión de base de datos relacional multiusuario y multihilo. Desarrollada inicialmente por Sun Microsystems, actualmente su propietario es Oracle Corporation. Software libre y tipo de licencia GNU GPL para aquellos proyectos que se adapten a este tipo de licencia (permite usar, compartir y modificar el software), con la opción de poder adquirir una de carácter más privativo previo pago(parte del código está bajo copyright).

Página Oficial: http://www.mysql.com/

Versiones MySQL (Fuente: http://es.wikipedia.org/wiki/Mysql):

Versiones MySQL

Características más destacadas:

  • Escrito en C y C++.
  • Sistemas de almacenamiento transaccional y no transaccional.
  • Tablas hash en memoria como tablas temporales.
  • Servidor disponible como software externo para un entorno cliente/servidor.
  • Usa GNU Automake, Autoconf, y Libtool para portabilidad.
  • Registros de longitud fija y longitud variable.
  • Diversos tipos de columnas: FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET y ENUM.
  • Soporta numerosos Sistemas Operativos: http://dev.mysql.com/doc/refman/5.0/es/which-os.html
  • Reserva de memoria basada en threads.

PostgreSQL

Es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD y con disponibilidad completa sobre el código fuente. Utiliza el modelo cliente/servidor, y usa multiprocesos en lugar de multihilos, para garantizar que el fallo en un proceso no afecte al resto de procesos en ejecución.

Página Oficial: http://www.postgresql.org/

Portal en Español: http://www.postgresql.org.es/

Características principales:

  • Alta concurrencia con el modelo MVCC (Acceso Concurrente Multiversión) que permite el acceso a una tabla en la que se están realizando tareas de escrituras sin bloquearla para el resto de procesos.
  • Base de Datos ACID.
  • Funciones y procedimientos almacenados en varios lenguajes de programación, entre los que se encuentran PL/pgSQL, PL/Perl, PL/Python y PL/Tcl.
  • Acceso encriptado vía SSL.
  • Integridad referencial(es aquella que garantiza que un registro o fila existente se relaciona con otras entidades válidas existentes en la base de datos).
  • Soporta copias de seguridad en caliente.
  • Límites de tamaño de la estructura de Base de Datos:
    • Base de Datos: Sin límite
    • Tabla: 32 TB
    • Fila: 1,6 TB.
    • Campo: 1 GB
    • Filas por Tabla: Ilimitado
    • Nº Columnas por Tabla: Entre 250 y 1600 dependiendo del tipo de dato.
    • Nº de índices por Tabla: Ilimitado.

Esquema PostgreSQL

*Imagen que muestra el Sistema General PostgreSQL (autor: http://www.postgresql.org.es/sobre_postgresql  Licencia CC BY-NC-SA 2.5))


Autor:  Academia Android – Jose Antonio Gázquez

This Post Has 8 Comments

  1. Hola trabajo desde mi smartphone y me es imposible instalar mysql en android vamos no existe, y lo que tengo es una aplicacion que me permite crear bases de datos sqlite y guardarlas en la SD ,no recuerdo su nombre. Y lo que pretendo realizar es crear una aplicacion que al abrirla haga una conexion a mi base que tengo en la SD para que pueda iniciar el usuario al pinchar un boton. Vamos un login, y e visto metodos donde se crean las bases de datos en una clase dentro de mi aplicacion pero no me sitve ami esi, necesito conectarme con un driver en java es el jdbc pero para android no se si exista para una version de SQlite. Cres que exista tal driver para sqlite localhost o es imposible y soli hay para mysql. Gracias

  2. Hola José, en primer lugar agradecerte tu interés.
    Hasta donde yo sé no tiene mucho sentido instalar una base de datos pensada para funcionar en un servidor dentro de un dispositivo Android. Más aún cuando este sistema operativo ya incorpora un API de acceso a base de datos capaz de almacenar datos al nivel de cualquier base de datos relacional .
    Con ella podrás hacer lo que pretendes: conectar tu aplicación con la base de datos y recuperar los contenidos. La conexión se realiza por medio de un API específico de Android no via JDBC como se hace en Java.
    Me permito recomendarte que revises nuestros tutoriales sobre Sqlite (https://academiaandroid.com/tag/sqlite/) así como nuestro curso sobre esta base de datos (https://academiaandroid.com/curso-aplicaciones-android-con-base-de-datos-sqlite/)
    Gracias por tu interés

  3. Hola, quisiera saber como puedo conectar una app en android que estoy haciendo en qt a un servidor que tengo en una pc en postgresql, y que se pueda conectar desde cualquier lugar del mundo, gracias

  4. Hola, quiero saber si puedo conectar una aplicación con una pagina de la cual no soy propietario. Es decir usar su base de datos para que mi app funcione correctamente

    1. Hola Federico, no estamos seguros de entender del todo tu pregunta.
      Aunque una página web se puede crear dinámicamente (PHP, Python,…) extrayendo información de una base de datos del servidor web, si esa página no es tuya, no puedes acceder a dicha base de datos. Tu solo ves el ‘resultado’, que es básicamente una página HTML.
      Otra cosa es que hubiera un servicio web o API al que te pudieras conectar, que sería la capa intermedia entre tu app y la bbdd externa.
      Puedes ver sobre ésto en nuestra serie sobre Servicios Web: https://academiaandroid.com/servicios-web-arquitectura-rest/
      También tratamos un ejemplo de conexión con un servicio web de prueba en nuestro curso de Programación de Apps con Android Studio: http://www.digitallearning.es/curso-android-desarrollo-aplicaciones.html
      Saludos

  5. Hola, estoy viendo los tutoriales de conexión a MySQL y me parecen muy interesantes. Me gustaria saber si han probado a realizar una conexión con la base de datos FIREBIRD, que tambien dispone de drivers JDBC (Jaybird2_2_4)? Yo lo he probado pero me da un error extraño en tiempo de ejecución. Si lo han probado tienen algun ejemplo?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Para evitar robots, por favor completa esta sencilla operación *