BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

38
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 Material de clase desarrollado para la asignatura de Bases de Datos para Dispositivos Móviles para Ingeniería en Sistemas Computacionales Bases de Datos para Dispositivos Móviles

Transcript of BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

Page 1: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

TECNOLÓGICO NACIONAL DE MÉXICOIngeniería en Sistemas Computacionales

Bases de Datos para Dispositivos MóvilesUnidad III: Sistemas Manejadores de BD

MóvilesMaterial de clase desarrollado para la asignatura de Bases de Datos para Dispositivos Móviles

para Ingeniería en Sistemas Computacionales

Bases de Datos para Dispositivos Móviles

Page 2: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

Competencia:• Conocer los diferentes tipos de manejadores de base de

datos para dispositivos móviles.

BASE DE DATOS PARA DISPOSITIVOS MÓVILES

Page 3: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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

Page 4: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 5: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 6: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

BASE DE DATOS PARA DISPOSITIVOS 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.

SISTEMAS MANEJADORES DE BASES DE DATOS MÓVILES

Page 7: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

BASE DE DATOS PARA DISPOSITIVOS MÓVILES

• 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.

SYBASE ADAPTIVE SERVER ANYWHERE

Page 8: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

BASE DE DATOS PARA DISPOSITIVOS MÓVILES

• 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.

MICROSOFT SQL SERVER CE

Page 9: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

BASE DE DATOS PARA DISPOSITIVOS MÓVILESSQLite

• 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.

Page 10: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 11: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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

Page 12: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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

Page 13: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 14: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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 info.• 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.

Page 15: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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 info.• 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.

Page 16: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

BASE DE DATOS PARA DISPOSITIVOS MÓVILES

Práctica 9Archivos 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 SD.

Microsoft Word 97 - 2003 Document

Page 17: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

BASE DE DATOS PARA DISPOSITIVOS MÓVILESGPS 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.

Page 18: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 19: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 20: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 21: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

BASE DE DATOS PARA DISPOSITIVOS MÓVILES

Práctica 10Uso del GPS

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

Microsoft Word 97 - 2003 Document

Page 22: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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:

Page 23: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 24: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 25: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 26: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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).

Page 27: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 28: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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[] 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.

Page 29: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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);

• 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 c.moveToFirst para leer ese registro y extraer su contenido por medio de la instrucción c.getString(i).

if (c.moveToFirst())  nombre = c.getString(0);

Page 30: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

BASE DE DATOS PARA DISPOSITIVOS MÓVILES

Práctica 11

• 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.

Microsoft Word 97 - 2003 Document

Page 31: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Page 32: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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]+”’”+

“where bc_id =“+datos[0]; db.execSQL(cadena);}

• Nótese el uso de los apóstrofes para acotar los valores que son tipo String o Text, de lo contrario SQLite marcará un error.• En este caso el orden de los campos del

arreglo es primero el ID y después el Nombre del banco.

Page 33: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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);}

Page 34: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.

Como crear un trigger:create [temp|temporary] trigger name[before|after] [insert|delete|update|update of columns] on tableaction

Page 35: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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 comprasBEGIN UPDATE stock SET st_cant = st_cant + NEW.cp_cant WHERE st_producto = NEW.cp_producto;END;

Page 36: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

BASE DE DATOS PARA DISPOSITIVOS MÓVILESProyecto 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…

Page 37: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

BASE DE DATOS PARA DISPOSITIVOS MÓVILES• La app debe contar con una tabla que

contabilice la cantidad de estudiantes por carrera, cada vez que un estudiante es agregado debe incrementarse el contador por carrera, de igual forma cuando una estudiante es eliminado debe reducirse el contador de la carrera correspondiente.• También debe contar con un segundo activity, el cual contendrá un reporte (diseño libre) por carrera indicando cuantos estudiantes hay en cada una de ellas.• Debes cuidar que cuando se pretenda

modificar o eliminar un dato que no exista enviar a pantalla el mensaje apropiado.

Page 38: BD para Dispositivos Moviles - Unidad 3 SMBD Moviles

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.