Bases de datos para móviles (J2ME) Parte I

Para analizar el mercado del software de bases de datos para terminales móviles hemos de
comenzar preguntándonos qué es un terminal móvil. Sin entrar en detalle, la definición más perceptible a día de hoy es la que distingue entre teléfonos móviles y el resto (PDAs, SmartPhones, etc.) La diferencia entre ambos radica principalmente en la limitación de memoria y velocidad del procesador. Si una PDA de gama media cuenta con una memoria RAM de al menos 64 Mbytes y varios cientos de megahertzios, los teléfonos convencionales difícilmente superan los 600 Kbytes de memoria física y los 60 MHz.

De entre todos los modelos de bases de datos que han surgido, son dos tipos los que prácticamente centran toda la atención. Por un lado las bases de datos relacionales (RDMS) como SQL Server, Oracle, MySQL, etc. Y por otro las bases de datos orientadas a objetos (OODBMS). Las grandes bases de datos o que deben ser accedidas concurrentemente por gran cantidad de usuarios, han apostado por el modelo relacional. Sin embargo, el debate sobre su idoneidad en determinados casos se lleva cuestionando desde hace tiempo, debido a que:

  • Casi todas las RDMS usan SQL como lenguaje para peticiones. Este es un lenguaje con más de 30 años de antigüedad, que en su origen no estaba pensado para modelos relacionales, y que apenas ha sufrido mejoras en su vida.
  • SQL, para acelerar el procesado de las peticiones genera archivos de gran tamaño.
  • No todos los modelos de datos requieren un modelo relacional para su almacenamiento. Gran parte de las bases de datos geoespaciales usan el modelo orientado a objetos, como es el caso de PostGis.

Cuando una aplicación (móvil o no) necesita acceder a datos de forma remota, el modelo relacional está plenamente justificado, ya que la carga de trabajo la soporta un servidor tan potente como queramos.

Sin embargo, cuando una aplicación necesita procesar información almacenada de forma local, la base de datos debe estar en el terminal móvil. En este caso, una base de datos relacional no es una solución práctica, por la gran cantidad de recursos que un motor SQL y
su optimizador necesitan. Para el tipo de aplicación común en teléfonos móviles, no es necesario implementar una base de datos relacional, ya que existen mejores opciones.

Las bases de datos orientadas a objetos pueden mejorar el rendimiento en dispositivos móviles y facilitan mucho el desarrollo. La principal ventaja es la integración transparente con lenguajes de programación orientados a objetos, como es el caso de Java. Con una base de datos relacional, la aplicación debería transladar la representación relacional de los datos a la representación en forma de objetos que requiere el lenguaje (en Java todo son objetos). Veámoslo con un ejemplo:

class Persona {
public String nombre;
public String apellido;
public int edad;
public long sueldo;
};

Con una base de datos relacional, la aproximación que seguiríamos para consultar los datos sería algo parecido a esto:


// Aproximación con una RDBMS
Person consultarPorNombre(string apellido){
Statement stmt = con.createStatement();
stmt.setString(1, apellido);
ResultSet cursor = stmt.executeQuery
("SELECT * FROM Persona where apellido like " + apellido + "'%'");
if (!cursor.next()) {
cursor.close();
return null;
}
Persona p = new Persona();
p.nombre = cursor.getString("nombre");
p.apellido = cursor.getString("apellido");
p.edad = cursor.getInt("edad");
p.sueldo = cursor.getLong("sueldo");
return p;
}

Usando el modelo orientado a objetos, la cercanía al propio lenguaje de programación nos
proporciona una integración casi automática:


// Con una base de datos orientada a objetos
Person consultarPorNombre(string apellido){
return personIndex.prefixSearch(apellido);
}

En el siguiente capítulo veremos las soluciones disponibles y se analizarán en cuanto a rendimiento.

Explore posts in the same categories: Base Datos, Gurús, J2ME

One Comment on “Bases de datos para móviles (J2ME) Parte I”

  1. Cristian Says:

    Muy interesante el texto usted si sabe de la materia me podria ayudar si hay como usar sqlite como base de datos en una aplicacion de movil y si lo hay a como usarla, bueno gracias y siga asi siempre hacia adelante.


Comment: