Anda di halaman 1dari 42

TECNOLÓGICO NACIONAL DE MÉXICO

Ingeniería en Sistemas Computacionales


Bases de Datos para Dispositivos Móviles
Unidad III: Sistemas Manejadores de BD Móviles
BASE DE DATOS PARA DISPOSITIVOS MÓVILES

Competencia:

• Conocer los diferentes tipos de manejadores de base de datos


para dispositivos móviles.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES

Forma de Evaluación del Tema

• Reporte de Prácticas 20%


• Prácticas y problemas 50%
• Proyecto por tema 30%
• Asistencia (obligatoria: 5.4.5.6 del manual académico)
Total 100%
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Sistemas Manejadores de Bases de Datos Móviles

• Base de Datos Móviles: Es una Base de datos donde los usuarios pueden acceder
a la información lejos de donde se encuentra almacenada la base de datos, se
hace utilizando una conexión inalámbrica.

Sistemas de Base de datos móviles:


• Es la habilidad de recuperar la información de los sistemas de computación y/o
repositorios de información sobre dispositivos móviles en cualquier momento en
cualquier lugar. Además de introducir o actualizar información en los sistemas
principales de forma remota desde el dispositivo móvil. Esto da toda la libertad al
usuario de manipular toda la información desde lejos.
• Es un sistema distribuido que soporta conectividad móvil, posee todas las
capacidades de un sistema de base de datos y permiten a las unidades móviles,
una completa movilidad espacial por medio de la tecnología inalámbrica
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Procesamiento de Consultas

El único reto en los SMBDM es el procesamiento de


consultas (queries) que dependen de la localización física
de la unidad móvil.

Consultas dependientes de la localización: Son consultas


que involucran la localización física de la unidad móvil en
combinación con otros datos como la localización de
otras unidades móviles o estructuras físicas.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Manejo de transacciones

• Se considera el manejo de transacciones cuando un dispositivo móvil inicia


una transacción hacia la base de datos o hacia un servidor fijo. La transacción
puede ejecutarse en el servidor o en el dispositivo móvil.

Se debe tomar en cuenta:


• Desconexiones, movilidad, errores, fallas en el dispositivo móvil.
• Se debe mantener la autonomía y la consistencia local del SMBD.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
SISTEMAS MANEJADORES DE BASES DE DATOS MÓVILES
IBM: DB2 Everyplace
• Forma parte de la solución de IBM para procesos de informática distribuida.
Mediante DB2 Everyplace, los profesionales que se desplazan con frecuencia
(tales como vendedores, inspectores, auditores, técnicos de mantenimiento,
médicos, agentes inmobiliarios y tasadores de seguros) pueden tener acceso a
datos vitales que necesitan mientras están lejos de su centro de trabajo.
• Las empresas pueden ahora transferir sus datos corporativos DB2 a
dispositivos portátiles o incorporados.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
SYBASE ADAPTIVE SERVER ANYWHERE
• Sybase ha creado una tecnología que permite una
empresa sin cables para sus clientes y socios mediante
soluciones de software de integración y desarrollo,
infraestructura móvil.
• SQL Anywhere Studio contiene la última versión de la
base de datos móvil más vendida, Adaptive Server
Anywhere. Este pequeño, aunque muy potente motor
de bases de datos, puede soportar implementaciones
mono- usuario o multi-usuario y provee completo
procesamiento transaccional de alto rendimiento.
Estas características combinadas, hacen que sea el
ambiente ideal de base de datos para entornos
móviles.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
MICROSOFT SQL SERVER CE

• Microsoft provee una herramienta que consiente


extender las aplicaciones empresariales de un
organización, a los dispositivos móviles.
• SQL Server CE es ideal para aplicaciones móviles,
ya que permite implementar la funcionalidad de
una base de datos relacional y tiene la capacidad
de brindar acceso a los datos de una manera
flexible y similar a SQL Server, al mismo tiempo
que permite conectarse a un servidor SQL Server
central y mantener actualizada la información.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
SQLite
• Es un sistema de gestión de bases de datos relacional compatible con ACID
(En bases de datos se denomina ACID a un conjunto de características
necesarias para que una serie de instrucciones puedan ser consideradas
como una transacción.
• Así pues, si un sistema de gestión de bases de datos es ACID compliant quiere
decir que el mismo cuenta con las funcionalidades necesarias para que sus
transacciones tengan las características ACID.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
SQLite

En concreto ACID es un acrónimo de Atomicity, Consistency,


Isolation and Durability: Atomicidad, Consistencia, Aislamiento y
Durabilidad), contenida en una relativamente pequeña biblioteca
escrita en C. SQLite es un proyecto de dominio público creado por
D. Richard Hipp.

A diferencia de los sistemas de gestión de bases de datos cliente-


servidor, el motor de SQLite no es un proceso independiente con
el que el programa principal se comunica. En lugar de eso, la
biblioteca SQLite se enlaza con el programa pasando a ser parte
integral del mismo.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
ESoftware que utiliza SQLite: Es utilizado en una gran variedad de
aplicaciones, destacando las siguientes:

• Adobe Photoshop Elements


• Mozilla Firefox
• Apple Mail
• El navegador web Ópera
• Skype
• XBMC Media Center: (antes conocido como “XBox Media Center”)
• NiconPersonal: Agenda personal de contactos escrita en JAVA
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Debido a su pequeño tamaño, SQLite es muy adecuado para los sistemas
integrados, y también está incluido en:
• Android
• BlackBerry
• Google Chrome
• iOS
• Maemo
• MeeGo
• Symbian OS
• webOS
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Generación y lectura de archivos de texto en un dispositivo móvil

• Una de las formas más básicas para guardar la información son los archivos
de texto.
• Muchas veces debemos guardar la información que tenemos en pantalla, sin
que esta información esté relacionada con una base de datos en particular, lo
correcto en estos casos es generar un archivo de datos y guardar allí la
información para consultarla posteriormente.
• Por medio de Java es posible crear archivos de texto en Android y también
consultarlos.
• A continuación veremos las instrucciones necesarias para el manejo de
archivos de texto básicos en Android.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Instrucciones para escritura en archivos de texto

• FileOutputStream varX = openFileOutput("textFile.txt", MODE_PRIVATE);


La clase FileOutputStream permite tener acceso al fichero para escribir
información, es decir, abre el archivo en modo escritura.
• OutputStreamWriter varY = new OutputStreamWriter(varX); Sirve para
convertir los caracteres en bytes al momento de escribir en el archivo.
• varY.write(cadena); Escribe los datos en el archivo.
• varY.flush(); Libera los recursos utilizados al momento de escribir.
• varY.close(); Cierra el archivo que se estaba utilizando.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Instrucciones para Lectura en archivos de texto

• FileInputStream fis = openFileInput("textFile.txt"); La clase FileInputStream


permite tener acceso al archivo para leer información, es decir, abre el
archivo en modo lectura.
• InputStreamReader isr = new InputStreamReader(fis); Sirve para convertir
los bytes en caracteres al momento de leer el archivo.
• char[] varZ = new char[READ_BLOCK_SIZE]; Permite leer bloques de texto
(se utiliza un bucle para leer tantos bloques contenga el archivo).
• Adicionalmente se requieren variables tipo String y tipo int para completar la
lectura.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Práctica 10
Archivos de Texto

• A continuación encontrarás el ícono correspondiente a la práctica con un


Archivos de Texto, en este caso el archivo de texto viene propuesto para
guardarse en la unidad externa SD del dispositivo móvil, por lo que si se
prueba físicamente debe ser en un dispositivo que cuente con entrada y
tarjeta SD.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
GPS en dispositivos móviles
• El GPS fue diseñado inicialmente con fines militares pero hoy en día es
ampliamente utilizado para uso civil. Gracias al desfase temporal de las
señales recibidas por varios de los 31 satélites desplegados, este sistema es
capaz de posicionarnos en cualquier parte del planeta con una precisión de
15 metros.

• El uso de la tecnología GPS en dispositivos móviles se ha vuelto muy popular,


especialmente en las aplicaciones relacionadas con redes sociales y
comunicación personal o chat.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Android dispone de un interesante sistema de posicionamiento que combina
varias tecnologías:

• Sistema de localización global basado en GPS: Este sistema solo funciona si


disponemos de visibilidad directa de los satélites.
• Sistema de localización basado en la información recibida de las torres de
telefonía celular y de puntos de acceso Wi-Fi: Funciona en el interior de los
edificios.

Estos servicios se encuentran totalmente integrados en el sistema y son


usados por gran variedad de aplicaciones.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
• El GPS presenta un inconveniente; solo funciona cuando tenemos visión
directa de los satélites. Para solventar este problema, Android combina esta
información con la recibida de las torres de telefonía celular y de puntos de
acceso Wi-Fi.

• Además, por razones de privacidad acceder a la información de localización


está en principio prohibido a las aplicaciones. Si estas desean hacer uso de
este servicio deben de solicitar el permiso adecuado.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
• La tecnología GPS puede relacionarse directamente con las BD móviles, por
ejemplo;

 Si deseamos buscar cual es el hotel más barato en la ciudad donde nos


encontramos, debemos primero proporcionar nuestras coordenadas al
sistema, esto es por medio del servicio GPS, una vez que se sabe cual
es nuestra ubicación actual las aplicaciones relacionadas podrán
realizar la búsqueda de opciones de hospedaje cercanas a nosotros.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Práctica 11
Uso del GPS

• A continuación encontrarás el ícono correspondiente a la práctica con un Uso


del GPS.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Uso de SQLite
¿Qué Es SQLite?

• Es un ligero motor de bases de datos de código abierto, que se caracteriza


por mantener el almacenamiento de información persistente de forma
sencilla.

• A diferencia de otros Sistemas gestores de bases de datos como MySQL, SQL


Server y Oracle DB, SQLite tiene las siguientes ventajas:
BASE DE DATOS PARA DISPOSITIVOS MÓVILES

No requiere el soporte de un servidor: SQLite no ejecuta un


proceso para administrar la información, si no que
implementa un conjunto de librerías encargadas de la gestión.

No necesita configuración: Libera al programador de todo


tipo de configuraciones de puertos, tamaños, ubicaciones,
etc.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES

Usa un archivo para el esquema: Crea un archivo para el


esquema completo de una base de datos, lo que permite
ahorrarse preocupaciones de seguridad, ya que los datos de
las aplicaciones Android no pueden ser accedidos por
contextos externos.

Es de Código Abierto: Esta disponible al dominio público de


los desarrolladores al igual que sus archivos de compilación e
instrucciones de escalabilidad.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Clase heredada SQLiteOpenHelper()
• La creación, actualización y conexión de la base de datos se realiza desde la
aplicación a través de una clase que hereda de SqliteOpenHelper().

• Esta clase gestiona la creación de la base de datos la primera vez que se


accede a la misma con el método onCreate() y la actualización de la base de
datos cuando se detecte un cambio de versión de la misma con el método
onUpgrade().

• En esta clase es donde debemos tener todas las subrutinas que controlan
nuestra BD, es decir, consultas, inserción y borrado de registros.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Sentencias en SQLite
• sqLiteDatabase.execSQL(“query”): Este método ejecuta una sola sentencia
SQL que no retorne en filas. Por lo que el comando SELECT no es posible
usarlo dentro de él.
• SQLiteDatabase.insert(tabla, null, values): Es el método cuya funcionalidad
es añadir tuplas a nuestras tablas. Para usarlo hay que apoyarse previamente
con otras instrucciones.
 ContentValues var = new ContentValues(): crea un contendor de
valores para apoyo a la instrucción insert.
 var.put(campo, “valor”): pone en memoria el valor que será asignado al
campo correspondiente (SQLite no revisa si hay correspondencia de
valores).
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
• Otra forma de insertar es hacerlo con execSQL(“query”) por ejemplo:
db.execSQL("INSERT INTO BANCOS VALUES (1,'Santander')");

Manejo de CURSORES en SQLite


• Para abrir un curso en Android por medio de SQLite debemos importar en la
clase correspondiente la librería import android.database.Cursor; que nos
proporciona las herramientas para realizar esta tarea.

• El uso de un cursor puede ser complicado al inicio, sin embargo es muy


efectivo ya que retrae una gran cantidad de registros de la DB y los almacena
en un objeto que podemos analizar registro por registro.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Procedimiento para usar cursores en Android y SQLite
• Primero debemos declarar un arreglo tipo String que contendrá los campos
que vamos a solicitar a SQLite:
String[] campos = new String[] {“bc_nombre"};
• Debemos también declarar un segundo arreglo tipo String que contendrá los
parámetros de entrada de la consulta:
String id=“15”;
String[] argumento = new String[] {id};

Notas: en este caso se esta solicitando extraer el contenido del campo


“nombre” y el parámetro de entrada es el valor que contenga la variable id.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
• Una vez que tenemos los datos de entrada realizamos la consulta
declarando el cursor por medio de una variable la cual se ejecuta
relacionándola a un query de la BD actual, dicho query contiene como
parámetros principales: el nombre de la tabla, los campos que asignamos
al arreglo correspondiente, la condición, y el argumento de entrada, los
demás campos se declaran null:

Cursor c = db.query(“BANCOS", campos, “bc_id=?",


argumento, null, null, null);
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
• El query se ejecuta de inmediato asignando a la variable el conjunto de
registros, que en este caso es solo uno, por lo que podemos utilizar la
instrucción moveToFirst para leer ese registro y extraer su contenido por
medio de la instrucción getString(i).

Ejemplo con un cursor que regresa un único registro:


if (c.moveToFirst())
nombre = c.getString(0);
• En caso de que el cursor retraiga más de un registro para continuar
recorriéndolo se debe utilizar la instrucción moveToNext().
Ejemplo:
if (c.moveToNext())
nombre = c.getString(0);
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Recorrer un cursor con N cantidad de registros

• En este caso utilizamos las mismas instrucciones, y adicionalmente


requerimos un ciclo para recorrer la totalidad de registros del cursor, por
ejemplo:

if (c.moveToFirst()) {
do {
nombre = c.getString(0);
} while (c.moveToNext());
}
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Práctica 12

• En el ícono que se encuentra abajo está el archivo que contiene una


aplicación ejemplo para el uso de SQLite, la misma, genera una base de
datos, inserta una serie de registros y después despliega un Activity que
permite consultar el contenido de los registros.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Modificar y eliminar información con SQLite

• El procedimiento modificar y eliminar información de nuestras BD en SQLite


puede realizarse con la instrucción excelSQL(); que ya hemos visto en la
práctica anterior.
• En la clase que hereda SQLiteOpenHelper debemos crear las rutinas para
modificar y eliminar y llamarlas desde el activity correspondiente por código
Java.
• A continuación veremos ejemplos de rutinas para eliminar y modificar
información por medio de SQLite.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Modificar información con SQLite

• El Siguiente procedimiento recibe como parámetros la base de datos y un arreglo


que contiene los valores de cada campo a modificar, es muy importante que los
valores tengan siempre el mismo orden para evitar que SQLite intente colocarlos
en un campo que no corresponda.

public void cambiar(SQLiteDatabase db, String [] datos) {


String cadena ="update Bancos set "+
“bc_nom=‘”+datos[1]+”’”+ • Nótese el uso de los apóstrofes para acotar
“where bc_id =“+datos[0]; los valores que son tipo String o Text, de lo
contrario SQLite marcará un error.
db.execSQL(cadena);
}
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Eliminar información con SQLite

• El Siguiente procedimiento recibe como parámetros la base de datos y un


dato tipo String que contiene el ID que se va a eliminar, en este caso
cualquier validación previa (sobre si el dato existe o no) debe realizarse en
los segmentos de código Java donde se llama la rutina eliminar().

public void eliminar(SQLiteDatabase db, String ID) {


String cadena =“delete from Bancos "+
“where bc_id =“+ID;
db.execSQL(cadena);
}
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Práctica 13
• Desarrollar una app donde se capture un número de cuenta bancaria y un
monto a depositar, se debe generar la siguiente información en una BD:
• Transacción: insertar un registro en una tabla llamada movimientos, que
contenga, numero de cuenta, fecha, monto, y numero de transacción.
• Debe existir una segunda tabla llamada cuentas, que contenga el número de
cuenta y el saldo total, por lo que cada vez que se actualice la tabla
movimientos la tabla cuentas debe actualizar el saldo de la cuenta
correspondiente y mostrar su saldo final por medio de una notificación
Toast.
• Cuando se realiza una transacción en caso de no existir la cuenta debe ser
creada en la tabla correspondiente.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Uso de triggers en SQLite

• SQLite cuenta con soporte a trigges por lo que es importante tener claro
como se crean y se ejecutan dichos instrumentos en una BD.

Sintaxis para crear un trigger:


create [temp|temporary] trigger name
[before|after] [insert|delete|update|update of columns] on table
action
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
• Cuando usamos triggers es importante tener en cuenta que los datos que
insertamos, modificamos o borramos pueden ser referenciados para mejorar
nuestro query, en estos casos podemos utilizar las instrucciones new y old:
• INSERT solo acepta NEW
• UPDATE acepta NEW y OLD
• DELETE solo acepta OLD

Ejemplo:
CREATE TRIGGER sumaStock AFTER INSERT ON compras
BEGIN
UPDATE stock SET st_cant = st_cant + NEW.cp_cant
WHERE st_producto = NEW.cp_producto;
END;
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Proyecto integrador

• Realice una app en Android utilizando las instrucciones


de consultar, insertar, eliminar y modificar de SQLite, en
una base de datos llamada AlumnosDB. La app debe
capturar la pantalla de un proceso de alumnos que
contiene Matrícula, Nombre, Apellidos, y Carrera en
una tabla llamada Alumnos.
• La carrera debe ser seleccionada de una lista por lo que
debes utilizar el componente adecuado para generarla.

Continua sig. diapositiva…


BASE DE DATOS PARA DISPOSITIVOS MÓVILES
• La app debe contar con una tabla que contabilice la
cantidad de estudiantes por carrera por medio de
triggers; cada vez que un estudiante es agregado debe
incrementarse el contador por carrera, de igual forma,
cuando un estudiante es eliminado debe reducirse el
contador de la carrera correspondiente.
• También debe contar con un segundo activity, el cual
contendrá un reporte por carrera indicando cuantos
estudiantes hay activos en cada una de las mismas.
• Debes cuidar que cuando se pretenda modificar o
eliminar un dato que no exista enviar a pantalla el
mensaje apropiado.
BASE DE DATOS PARA DISPOSITIVOS MÓVILES
Bibliografía

• Grant Allen, Mike Owens. 2010. The Definitive Guide to SQLite, Second
Edition. EE. UU., New York. Apress. ISBN-13 (electronic): 978-1-4302-3226-1.
• José E. Amaro. 2013. El gran libro de programación avanzada con Android.
Primera Edición. España. Barcelona. Alfaomega. ISBN: 978-607-707-551-6.

Anda mungkin juga menyukai