bases de datos avanzadas - universidad … · ejemplo base de datos móviles: aplicación ......
Embed Size (px)
TRANSCRIPT

Facultad de Estadística e Informática
BASES DE DATOS AVANZADAS

Clase 24

Agenda
➢ Ejemplo base de datos móviles: Aplicación Android SQLite

Aplicación Android SQLiteEjemplo

Aplicación Android SQLite
• Se desarrollará una pequeña aplicación que validará la existencia y registrará un usuario.
• Sistema operativo cliente: Android.• Plataforma de desarrollo: Xamarin, implementación
libre de la plataforma de desarrollo .NET para dispositivos Android, iOS y GNU/Linux.
• Base de datos: SQLite

Aplicación Android SQLite

Aplicación Android SQLite
Puesto que no se instalará el emulador de Android, se depurará en un dispositivo móvil. Para ello se debe habilitar la “depuración por usb” en el aparato.
En Configuracion Acerca del teléfono Versión de compilación (Hacer clic varias veces)
Programador/Developer Depuracion por usb

Aplicación Android SQLite
• Paso 1. Crear el proyecto

Aplicación Android SQLite
• Paso 2. Agregar la vista para usuario nuevo.
• En la carpeta Resources
layout

Aplicación Android SQLite
Newuser

Aplicación Android SQLite
• Código para archivo Newuser.axml
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/txtUserName"android:hint="Nombre de usuario" /><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/txtPassword"android:hint="Contraseña" /><Buttonandroid:text="Crear"android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/btnCrear" /></LinearLayout>

Aplicación Android SQLite
• Código para archivo Main.axml
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><EditText
android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/txtUserName"android:hint="Nombre de usuario" />
<EditTextandroid:inputType="textPassword"android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/txtPassword"android:hint="Contraseña" />
<Buttonandroid:text="Entrar"android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/btnLogin" />
<Buttonandroid:text="Registrar"android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/btnRegistrar" />
</LinearLayout>

Aplicación Android SQLite
• Paso 3: Agregar la Actividad RegisterActivityen la raíz del proyecto
RegisterActivity

Aplicación Android SQLite
• Añadir el código correspondiente a RegisterActivity.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;
using Android.App;using Android.Content;using Android.OS;using Android.Runtime;using Android.Views;using Android.Widget;using System.IO;using SQLite;
namespace SQLite{[Activity(Label = "RegisterActivity")]public class RegisterActivity : Activity{EditText txtusername;EditText txtPassword;Button btncreate;protected override void OnCreate(Bundle savedInstanceState){base.OnCreate(savedInstanceState);// Set our view from the "main" layout resourceSetContentView(Resource.Layout.Newuser);
// Create your application herebtncreate = FindViewById<Button>(Resource.Id.btnCrear);txtusername = FindViewById<EditText>(Resource.Id.txtUserName);txtPassword = FindViewById<EditText>(Resource.Id.txtPassword);btncreate.Click += Btncreate_Click;}private void Btncreate_Click(object sender, EventArgs e){try{string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "user.db3");var db = new SQLiteConnection(dpPath);db.CreateTable<LoginTable>();LoginTable tbl = new LoginTable();tbl.username = txtusername.Text;tbl.password = txtPassword.Text;db.Insert(tbl);Toast.MakeText(this, "Record Added Successfully...,", ToastLength.Short).Show();}catch (Exception ex){Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();}}}}

Aplicación Android SQLite
• Paso 4. Agregar la clase LoginTable.cs, en la raíz del proyecto
LoginTable

Aplicación Android SQLiteusing System;using System.Collections.Generic;using System.Linq;using System.Text;
using Android.App;using Android.Content;using Android.OS;using Android.Runtime;using Android.Views;using Android.Widget;
namespace SQLite{class LoginTable{[PrimaryKey, AutoIncrement, Column("_Id")]public int id { get; set; }
[MaxLength(25)]public string username { get; set; }
[MaxLength(15)]public string password { get; set; }
}}
• Añadir código a la clase LoginTable.cs

Aplicación Android SQLite
• Paso 5. Agregar la referencia SQLite

Aplicación Android SQLite
sqlite-net-pcl

Aplicación Android SQLite
• Paso 6. Agregar el código correspondiente a la clase MainActivity.cs
using Android.App;using Android.Widget;using Android.OS;using System;using System.IO;using SQLite;
namespace SQLite{[Activity(Label = "SQLite", MainLauncher = true, Icon = "@drawable/icon")]public class MainActivity : Activity{EditText txtusername;EditText txtPassword;Button btncreate;Button btnsign;protected override void OnCreate(Bundle bundle){base.OnCreate(bundle);
// Set our view from the "main" layout resourceSetContentView(Resource.Layout.Main);
// Get our button from the layout resource, // and attach an event to itbtnsign = FindViewById<Button>(Resource.Id.btnLogin);btncreate = FindViewById<Button>(Resource.Id.btnRegistrar);txtusername = FindViewById<EditText>(Resource.Id.txtUserName);txtPassword = FindViewById<EditText>(Resource.Id.txtPassword);btnsign.Click += Btnsign_Click;btncreate.Click += Btncreate_Click;CreateDB();}
private void Btncreate_Click(object sender, EventArgs e){StartActivity(typeof(RegisterActivity));}
private void Btnsign_Click(object sender, EventArgs e){try{string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "user.db3"); //Call Databasevar db = new SQLiteConnection(dpPath);var data = db.Table<LoginTable>(); //Call Tablevar data1 = data.Where(x => x.username == txtusername.Text && x.password == txtPassword.Text).FirstOrDefault(); //Linq Queryif (data1 != null){Toast.MakeText(this, "Login Success", ToastLength.Short).Show();}else{Toast.MakeText(this, "Username or Password invalid", ToastLength.Short).Show();}}catch (Exception ex){Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();}}public string CreateDB(){var output = "";output += "Creating Databse if it doesnt exists";string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "user.db3"); //Create New Databasevar db = new SQLiteConnection(dpPath);output += "\n Database Created....";return output;}}}

Aplicación Android SQLite
• Paso 7. Compila la aplicación y ejecútala.

Bases de datos en la nubeCÓMPUTO EN LA NUBE

Facultad de Estadística e Informática
IntroducciónGeneralmente las bases de datos empresariales siempre han sido la respuesta para almacenar los datos en las empresas.
Pero la demanda de mayores capacidades de almacenamiento y necesidad de mayor velocidad de implementación, así como los costos de mantenimiento, han ocasionado que las soluciones locales, ya no sean la mejor solución.
“Se necesitan semanas para configurar una nueva base de datos. ¡La necesito ahora!”
“¿Necesito comprar un servidor completo para nuestra pequeña base de datos?”
“Es muy costoso el mantenimiento (conectividad, respaldos, licencias) de nuestra base de datos”

Facultad de Estadística e Informática
Cómputo en la nubeLa computación en nube se refiere a una categoría de soluciones de tecnología que permite a los usuarios acceder a recursos informáticos (en este caso, a recursos de datos) on-demand, según sea necesario, así los recursos sean físicos o virtuales, dedicados o compartidos, y sin importar la forma en que se acceda a ellos (mediante conexión directa, red de área local [LAN], red de área amplia [WAN] o Internet).
Los usuarios no necesitan ni el conocimiento, ni el control de la tecnología, ni la infraestructura subyacente que dan soporte al conjunto de servicios.

Facultad de Estadística e Informática
Ventajas de Cómputo en la nube➢Escalabilidad.
➢Rapidez de implementación.
➢Costos variables.
➢Seguridad y fiabilidad.◦ P.ej. Microsoft garantiza un 99,99 % de tiempo de actividad para
los niveles Básico, Estándar y Premium de SQL Database.

Facultad de Estadística e Informática
Desventajas de Cómputo en la nube•Falta de control sobre los datos físicos.
•Confidencialidad en la transmisión de los datos.
•Falta de control físico sobre la arquitectura de software y hardware.
•Dependencia de terceros e incremento de posibles puntos críticos (fallo en las comunicaciones).

Bases de datos en la nubeBASES DE DATOS EN LA NUBE

Facultad de Estadística e Informática
Bases de datos en la nube (DaaS)Consiste en auto-solicitar un espacio de almacenamiento en Internet (la nube), con características (capacidad, velocidad, costo) de acuerdo a las necesidades. Todo esto de forma inmediata y listo para explotarse.
Es un intento por minimizar los costos y tiempos de implementación de servidores de bases de datos, las organizaciones se están moviendo hacia un modelo de Base de Datos Como Servicio (Database as a Service o DaaS).
Evita la compra/instalación de licencias de sistemas operativos de servidor y sistemas manejadores de bases de datos.
Simplemente se “renta” (normalmente a un bajo costo) el servicio de base de datos, se utiliza y si cuando ya no se necesite, se desecha.

Facultad de Estadística e Informática
Tipos de nubesPúblicas. Recursos proporcionados por un proveedor externo y que accedemos por medio de Internet.
Privadas. Recursos propios de la empresa. Algunos beneficios del cómputo en la nube eliminando algunos inconvenientes.
Híbridas. Uso combinado. ◦ Ofrece varias opciones.
◦ Contingencias
◦ Mayor control.

Facultad de Estadística e Informática
CaracterísticasParámetros preconfigurados:
◦ Las bases de datos en la nube suelen estar preconfigurados con un razonable conjunto de parámetros y valores adecuados para la clase de instancia que vaya a utilizar.
Supervisión y métricas:
◦ Las bases de datos en la nube poseen herramientas para ver métricas operativas clave de las instancias que se encuentran en ejecución, incluido el uso de la capacidad de CPU, memoria, almacenamiento, operaciones de entrada y salida, y conexiones.
Parches de software automáticos:
◦ Las bases de datos en la nube suelen garantizar que el software de la base de datos permanezca actualizado con los últimos parches disponibles en el mercado.

Facultad de Estadística e Informática
CaracterísticasCopia de seguridad automatizadas:◦ Las bases de datos en la nube tienen de forma predeterminada la función de
copia de base de datos y transacciones reteniéndolas según especifique el usuario, permitiéndole restaurar la instancia de base de datos en cualquier segundo de lo retenido.
Escalamiento automático:◦ Las bases de datos en la nube poseen la capacidad de escalar rápidamente en
minutos recursos como capacidad de proceso, memoria y almacenamiento.

Facultad de Estadística e Informática
CaracterísticasAislamiento y seguridad◦ Las bases de datos en la nube brindan el aislamiento de las
instancias de la base de datos mediante conexiones seguras, como IPsec (Internet Security Protocol que asegura las comunicaciones sobre el Protocolo de Internet) mediante la encriptación de las comunicaciones.

Facultad de Estadística e Informática
Bases de datos comercialesRelacionales NoSQL
Amazon Web Services2002
MySQLOracleMSSQL
SimpleDBDynamoDB
Windows Azure2009
SQL DatabaseMySQLPostgres
Azure BlobsAzure TablesAzure Files
Google API2006
Google Cloud SQL Persistent DiskCloud Bigtable

Facultad de Estadística e Informática
BD locales Vs BD en la nube
BD Locales BD en la nube
Recuperación de fallos manual Rápida recuperación de fallos
Configuraciones avanzadas Configuración sencilla, interfaz para cualquier usuario
Respaldo y restauración de manera manual Respaldos y restauración de forma automática mediante consola Web
Requiere de herramientas externas para comprobar disponibilidad
Monitoreo automático incluido
Requiere de conocimiento de sistemas operativos
No es necesario ningún conocimiento del sistema operativo
Escalado y reconfiguración manual Proceso automatizado de escalamiento definiendo las reglas de escalabilidad
Costo por el lugar físico, el hardware, licencias de software y especialistas en mantenimiento
Costo solo por el uso de la base de datos

Gracias por su atención

Facultad de Estadística e Informática
ReferenciasEvolución de las Bases de Datos: de Fijas a Móviles (2009).Paola Delgado, Luis Gama. Universidad Autónoma de Baja California. Obtenido de: http://campusv.uaem.mx/cicos/imagenes/memorias/7mocicos2009/Articulos/Evolucion%20de%20las%20Bases%20de%20Datos.pdf
Mobile Databases (2012). Niloofar Banivaheb. Lassonde School of Engineering. Obtenido de: http://www.cse.yorku.ca/~jarek/courses/6421/F12/presentations/Mobile-Databases_%20Presentation.pdf
Mobile Database Systems (2006). Vijal Kumar. Computer Science and Informatics. University of Missouri-Kansas City. Wiley Press. Obtenido de: https://www.cs.uic.edu/~boxu/mp2p/mobile-databases.pdf
Aplicación Android SQLite
http://www.c-sharpcorner.com/article/xamarin-android-create-login-using-sqlite-database/