Personal tools

FrameworkWebAccess-Methodology

From hpcwiki

Jump to: navigation, search

Contents

Diseñar e implementar una representación heterogénea de la información multimodal, sobre el caso de estudio propuesto (colecciones de imágenes naturales de plantas) en un sistema de gestión de bases de datos tipo NoSQL

NoSQL Databases

La base de datos escogida para el desarrollo de proyecto fue Hbase[1]. Para su instalación se deben seguir los siguientes pasos:

  • Descargar de la pagina oficial
  • Extraer en el lugar de su elección
  • Editar el archivo ubicado en HBASE_HOME$/conf/HBase-site.xml, añadiendo siguientes lienas dentro de la etiqueta <configuration>:
<property>
  <name>hbase.rootdir</name>
  <value>file:///home/hbase-user/hbase_data</value>
</property>
  • Para iniciar el servicio HBase se debe ejecutar $HBASE_HOME/bin/sh start-hbase.sh.

Nota: Usted puede comprobar el estado de Hbase en http://localhost:60010/master-status

Sentencias

Para la creacion y almacenamiento de los datos en la base de datos se utilizaron las siguientes sentencias de hbase:

Creación de tabla y columnfamily
create 'nombre_tabla', 'primer_cf', 'segundo_cf' ......
create 'anota', 'kw', 'ant'
Inserción de datos en tabla
put 'nombre_tabla', 'nombre_fila', 'primer_cf:variable', 'value1'
put 'anota', 'img_7415.jpg', 'kw:mildeo polvoso', 'http://hpclab.ucentral.edu.co/~jmolina/dataset/Imagenes/Fotos_Seleccionado/Hojasconareadetierra/IMG_7415.JPG'
put 'anota', 'img_7415.jpg', 'ant:mildeo polvoso', 'presenta mildeo polvoso en esta area'

Implementar una API orientada a servicios web para el acceso y navegación remota de la colección multimodal por parte de usuarios finales

Web Services for Distributed Storage Data Access

Para el desarrollo del servicio web se a tenido las siguientes consideraciones.

  • El entorno de desarrollo que escogido para realizar el proyecto es Netbeans v7.3.1[2]
  • El servidor de aplicaciones escogido para la ejecución del servicio web es Glassfish v3.1.2.2[3]
  • Para realizar la conexión con la base de datos escogida (Hbase) se plantea el siguiente codigo:
Configuration config;
config = HBaseConfiguration.create();
config.setInt("timeout", 120000);
config.set("hbase.master", "localhost:60010");
config.set("hbase.zookeeper.quorum", "localhost");
config.set("hbase.zookeeper.property.clientPort", "2192");
  • Para realizar las consultas en la base de datos desde el servicio web se planteo el siguiente codigo:
String contenido=""; 
Result rr;
HTable table = new HTable(config, "test");
Scan s = new Scan();
//s.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("b"));  //Busca por familia de columnas combinado con una columna especifica de esta familia(Familia columna/celda)
s.addFamily(Bytes.toBytes("cf"));  //Busca todas las columnas de una familia en especifico
ResultScanner scanner = table.getScanner(s);
try {
    // Scanners return Result instances.
    // Now, for the actual iteration. One way is to use a while loop like so:
    for (rr = scanner.next(); rr != null; rr = scanner.next()) {
         // print out the row we found and the columns we were looking for
         System.out.println("Found row: " + rr.toString());
         contenido += rr.toString();
        }
    // The other approach is to use a foreach loop. Scanners are iterable!
    // for (Result rr : scanner) {
    //   System.out.println("Found row: " + rr);
    // }
} finally {
    // Make sure you close your scanners when you are done!
    // Thats why we have it inside a try/finally clause
    scanner.close();
  }  
return contenido;
  • Para la inserción de la información en la base de datos NoSQL se planteo el siguiente código
HTable table = new HTable(config, "anota");
    
//Ingresamos datos en la tabla
Put putRow = new Put(Bytes.toBytes("IMG_7424.jpg"));
putRow.add(Bytes.toBytes("kw"), Bytes.toBytes("mildeo polvoso"), Bytes.toBytes("http://hpclab.ucentral.edu.co/~jmolina/dataset/Imagenes/Fotos_Seleccionado/Hojasconareadetierra/IMG_7424.JPG"));
putRow.add(Bytes.toBytes("ant"), Bytes.toBytes("http://hpclab.ucentral.edu.co/~jmolina/dataset/Imagenes/Fotos_Seleccionado/Hojasconareadetierra/IMG_7424.JPG"), Bytes.toBytes("area con mildeo polvoso"));
       
table.put(putRow);

Acceso a Web Service

http://hpclab.ucentral.edu.co:8080/proyectoGradoWS/proyectoGradoWS?Tester

Diseñar una aplicación cliente para la navegación y visualización eficiente de la colección multimodal desde dispositivos móviles mediante la web

Mobile Interface Design

Para el desarrollo del aplicativo móvil se eligió el entorno de desarrollo Eclipse[4] con el paquete de desarrollo de Android Developers[5]. En este desarrollo se tienen en cuenta los siguientes requerimientos:

Requerimientos Funcionales

Requerimiento No 1 RF01
Función Consultar a través de palabras claves
Descripción Permitir al usuario la consulta por medio de palabras claves en colecciones de imágenes botánicas y agronómicas.
Entrada Palabra clave ingresada en el aplicativo
Salida Despliegue de colecciones de imágenes en vista miniatura en galería de las imágenes que presenten coincidencia con la palabra clave ingresada
Proceso La herramienta envía la palabra clave ingresada en el aplicativo mediante un servicio web el cual realiza la consulta y devuelve las imágenes que presentaron coincidencia
Requerimiento No 2 RF02
Función Mostrar con descripción la imagen seleccionada
Descripción Permitir al usuario la consulta de una imagen en especifico seleccionada de la galería visualizada anteriormente
Entrada Imagen seleccionada
Salida Despliegue de la imagen seleccionada en un tamaño mayor y con las anotaciones que posea
Proceso La herramienta toma la imagen seleccionada y la envía a una nueva ventana para mostrarla con las anotaciones que le pertenezcan.


Diagramas de casos de uso

  • RF01

RF01.png

  • RF02

RF02.png

Integrar y Validar el prototipo propuesto en su funcionalidad y eficiencia