Índice. Introducción Qué es? Conceptos clave Instalación Ejemplo Hola Mundo Procedimientos Almacenados



Documentos relacionados
PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Modelo de Objetos Distribuidos

Ejercicios - Persistencia en Android: ficheros y SQLite

GUI A D E I NSTALA CIO N D E AX IS

1. Creación del repositorio

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Introducción al lenguaje Java

Tarea 1 Programación José Luis Comesaña

RMI [Remote Method Invocation]

TUTORIAL DE INSTALACIÓN Y CONFIGURACIÓN DE NETBEANS

Conociendo el ambiente de programación de Java. M. en C. Erika Vilches

Java. Mtro. Manuel Suárez Gutiérrez

Universidad ORT - Arquitecturas de Software sobre plataforma JEE Web Services (parte 1)

CONTENIDO. Serialización. Carga dinamica de stubs RMI AVANZADO. Callbacks. Carga dinámica de Stubs

Práctica 2: Java Remote Method Invocation (RMI)

Descarga, instalación y uso de herramientas:

Instrucciones para el despliegue de EJBs

Registro de traza en Java

Guía práctica de introducción básica a JDBC

Bases de datos relacionales y el modelo entidad-relación

Práctica sobre compartición de instancias remotas.

INSTRUCTIVO DE INSTALACION ATOM 2.0.1

El lenguaje de programación Java

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

GUÍA PARA LA CONFIGURACIÓN Y UTILIZACIÓN DE LA IDE DRJAVA

Tutorial : Hacer Combos Dependientes tipo Departamento Ciudad en ASP. Net

Java Básico. Empaquetamiento y despliegue de aplicaciones. Copyright

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro

Utilización de J2ME sobre Linux en plataformas embebidas

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Práctica 5: Common Object Request Broker Architecture CORBA

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Introducción a Java LSUB. 15 de enero de 2015 GSYC

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Introducción a Netbeans

1. Visión general de RMI

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa

Introducción Entorno de ejecución Referencias Descripción del servicio

Desarrollo de Servicios Web con JBuilder

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Tutorial básico del entorno de desarrollo Eclipse.

Índice. Presentación Stratebi Introducción Qué es? Características Principales Instalación & Configuración Comandos

IMPLANTACIÓN DEL CATÁLOGO

Dossier de prácticas

COPIA DE SEGURIDAD CON NTBACKUP

Tutorial: Cómo realizar tu primer programa en C++ En el Sistema Operativo Windows

Entorno de Desarrollo - 1 -

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

Tutorial de Unity 3D Tema 52 Bases de Datos. Tutorial de Unity 3D. Bases de Datos

Tutorial Servicios Web

Referencia SQL en la versión de HUGOSQL White Paper por: HUGOSQL 2012

Los paquetes tienen dos partes: una especificación y un cuerpo que están almacenados por separado en la base de datos.

Tutorial: Python + Soap Web Service. Daniel Montenegro Cordero

Manual de instalación del cliente JAVA-WS

Manual de NetBeans y XAMPP

Acceso a BDs en Java: JDBC

Trabajos de Ampliación. Bases de datos NoSQL.

Laboratorio Informix. Stored Procedures Triggers

JFlex. Diseño de compiladores. JFlex. Funcionamiento. Archivo de especificación. Código de usuario 23/03/2014

Manual de instalación del opencast: Matterhorn

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

Universidad Nacional de Costa Rica Administración de Bases de Datos

GUÍA DE TRABAJO GRADO 11. Articulación SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

CONFIGURANDO EL CLIENTE DE FLU

Introducción al lenguaje de programación java

Ejemplo de mono INSTALACION DE MONO EN UBUNTU

- Bases de Datos - - Diseño Físico - Luis D. García

Instalación Hadoop. Guía para Debian y derivados

Practica 11: Conexión de Java con Bases de datos Access

Benemérita Universidad Autónoma del Estado de Puebla

Para poder instalar el producto, tendremos que obtener el instalador apropiado para nuestro entorno hardware y software.

Parallel Virtual File System (PVFS)

Diseño de bases de datos

Configuración servidor Tomcat

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

Un ejemplo teórico de trigger podría ser éste:

FUNDAMENTOS DE PROGRAMACION CON C#

1.00 Clase 8. Datos y métodos estáticos. Datos y métodos estáticos de las clases. Campos de datos estáticos:

INSTALACIÓN Y CONFIGURACIÓN DE UN SERVIDOR DE CORREO EXIM 4.8 EN FEDORA 20 FRAYBA SERYEY OTALORA TORRES JOSE EDUARDO JAIMES BARRERA

TUTORIAL INSTALACION SERVIDOR DE VIDEOCONFERENCIA CON OPENFIRE. Descargamos el openfire de la página oficial luego lo pasamos a Ubuntu:

SQL dinámico en Transact SQL

JAVA RMI (REMOTE METHOD INVOCATION)

Los autores del presente documento lo ha publicado bajo las condiciones que especifica la licencia

GIT Dinahosting 3. Hola!

Modulo 1 El lenguaje Java

Tema: Introducción a Java y Netbeans

Universidad Nacional de Luján Departamento de Ciencias Básicas Programación III

Programación Orientada a Objetos. Java: Excepciones

Backup & Recovery Oracle 9i. Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada.

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

Ejercicio 20. SQLite en Android. Android Con Java. Ejercicio 20. Uso de SQLite en Android. Curso de Android con Java

Tutorial como conectarse a una VPN utilizando OpenVPN

Escrito por Renan Huanca Sábado, 28 de Febrero de :46 - Actualizado Sábado, 28 de Febrero de :09

Transcripción:

VoltDB Up & Running

Índice Introducción Qué es? Conceptos clave Instalación Ejemplo Hola Mundo Procedimientos Almacenados

VoltDB :: Introducción Qué es? Base de datos en memoria y distribuida. No hay Base de datos como tal, hay catálogos que contienen tablas en memoria. Estos catálogos se replican a través de los nodos, donde el nodo maestro mantiene el tracking de los datos.

VoltDB :: Introducción Conceptos clave Mantenimiento de Nodos VoltDB ha pensado en el caso de que se den caídas de los nodos. En caso de caída, otro nodo mantiene la consistencia de datos. Snapshots: en caso de querer guardar el sistema, se pueden crear Snapshots que pueden ser restaurados con posterioridad, para evitar tener que hacer un nuevo catálogo.

VoltDB :: Introducción Conceptos clave Tipos de Distribución de Nodos Replicación: nos permite replicar las tablas a través de los nodos, para acceder más rápidamente a los datos. Partición: dado una clave primaria de una tabla, esta es divida a través de los nodos teniendo en cuenta esa clave. La clave debe ser un solo campo de la tabla.

VoltDB :: Instalación Requisitos Previos Ubuntu 64 Bits RAM: 1GB

VoltDB :: Instalación Instalación en Single-Node Paso 1. Descargar la versión debian: $wget http://voltdb.com/downloads/technologies/server/voltdb_3.4-1_amd64.deb Paso 2. Instalar VoltBD: $ sudo dpkg i voltdb_3.4-1_amd64.db

VoltDB :: Ejemplo Hola Mundo Preparación previa Crear directorio y cambiarnos a el: $ mkdir helloworld $ cd helloworld

VoltDB :: Ejemplo Hola Mundo El esquema del catálogo Crear esquema BBDD helloworld.sql : CREATE TABLE HELLOWORLD( HELLO VARCHAR(15), WORLD VARCHAR(15), DIALECT VARCHAR(15) NOT NULL, PRIMARY KEY (DIALECT) ); PARTITION TABLE HELLOWORLD ON COLUMN DIALECT;

VoltDB :: Ejemplo Hola Mundo Compilar esquema y operar: Compilar esquema: $ voltdb compile o helloworld.jar helloworld.sql Creación del catálogo: $ voltdb créate catalgo helloworld.jar Operaciones con el catálogo: $ INSERT INTO helloworld VALUES ( hello, world, English ); $ SELECT * FROM helloworld WHERE dialect= English ;

VoltDB utiliza JAVA para comunicarse Los procedimientos almacenados están escritos en Java y nos sirven para comunicarnos con VoltDB, ya sea para leer o insertar datos en las tablas. Añadir las siguientes líneas al helloworld.sql : CREATE PROCEDURE FROM CLASS insert; CREATE PROCEDURE FROM CLASS select; PARTITION PROCEDURE insert ON TABLE HELLOWORLD COLUMN DIALECT; PARTITION PROCEDURE select ON TABLE HELLOWORLD COLUMN DIALECT;

Procedimientos almacenados que usaremos Vamos a ver dos ejemplos sencillos de inserción y selección a través de los procedimientos almacenados. Simplemente crearemos los archivo.java siguientes: insert.java select.java client.java

Insert.java import org.voltdb.*; public class insert extends VoltProcedure{ public final SQLStmt sql = new SQLStmt( "INSERT INTO HELLOWORLD VALUES (?,?,?);" ); public VoltTable[] run( String languaje, String hello, String world) throws VoltAbortException{ voltqueuesql(sql, hello, world, languaje); voltexecutesql(); return null; } }

Select.java import org.voltdb.*; public class select extends VoltProcedure{ public final SQLStmt sql = new SQLStmt( "SELECT HELLO, WORLD FROM HELLOWORLD " + " WHERE DIALECT =?;" ); public VoltTable[] run( String languaje) throws VoltAbortException{ voltqueuesql(sql, languaje); return voltexecutesql(); } }

Client.java import org.voltdb.*; import org.voltdb.client.*; public class Client { /** * @param args * @throws Exception * @throws */ public static void main(string[] args) throws Exception { // TODO Auto-generated method stub org.voltdb.client.client myapp; myapp = ClientFactory.createClient(); myapp.createconnection("localhost");

Client.java - continuación myapp.callprocedure("insert", "English","Hello","World"); myapp.callprocedure("insert", "French","Bonjour","Monde"); myapp.callprocedure("insert", "Spanish","Hola","Mundo"); myapp.callprocedure("insert", "Danish","Hej","Verden"); myapp.callprocedure("insert", "Italian","Ciao","Mondo"); final ClientResponse response = myapp.callprocedure("select", "Spanish"); if(response.getstatus()!=clientresponse.success){ System.err.println(response.getStatusString()); System.exit(-1); }

Client.java - continuación final VoltTable results[]=response.getresults(); if(results.length==0 results[0].getrowcount()!=1){ System.out.printf("I can't say Hello in that languaje.\n"); System.exit(-1); } VoltTable resulttable=results[0]; VoltTableRow row = resulttable.fetchrow(0); System.out.printf("%s, %s!\n", row.getstring("hello"), row.getstring("wolrd")); } }

Variable de Entorno y generación de.class Ahora establecemos la variable de entorno: echo CLASSPATH=./:/home/javier/Escritorio/voltdb- 3.4/lib/*:/home/javier/Escritorio/voltdb-3.4/voltdb/* Creamos los.class: javac client.java javac insert.java javac select.java

Compilar el archiv.sql en un jar voltdb compile --classpath="./" -o helloworld.jar helloworld.sql

Archivo deployment.xml Creamos el archivo deployment.xml: <?xml version="1.0"?> <deployment> <cluster hostcount="1" sitesperhost="2" /> <httpd enabled="true"> <jsonapi enabled="true" /> </httpd> </deployment>

La creación del catálogo create catalog helloworld.jar deployment deployment.xml host localhost

Ejecución En un nuevo terminal, vamos al directorio donde hemos estado operando y ejecutamos: $ java Client

Salida Devolverá algo parecido a lo siguiente: javier@javier-parallels-virtual-platform:~/helloworld$ Client java log4j:warn No appenders could be found for logger (HOST). log4j:warn Please initialize the log4j system properly. log4j:warn See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Hola, Mundo!

Preguntas