jueves, 27 de octubre de 2011

CUBOS OLAP


Un cubo OLAPOnLine Analytical Processing o procesamiento Analítico En Línea, término acuñado por Edgar Frank Codd de EF Codd & Associates, encargado por Arbor Software (en la actualidad Hyperion Solutions), es una base de datos multidimensional, en la cual el almacenamiento físico de los datos se realiza en un vector multidimensional. Los cubosOLAP se pueden considerar como una ampliación de las dos dimensiones de una hoja de cálculo.
A menudo se pensaba que todo lo que los usuarios pueden querer de un sistema de información se podría hacer de una base de datos relacional. No obstante Codd fue uno de los precursores de las bases de datos relacionales, por lo que sus opiniones fueron y son respetadas.

Introducción

La propuesta de Codd consistía en realizar una disposición de los datos en vectores para permitir un análisis rápido. Estos vectores son llamados cubos. Disponer los datos en cubos evita una limitación de las bases de datos relacionales, que no son muy adecuadas para el análisis instantáneo de grandes cantidades de datos. Las bases de datos relacionales son más adecuados para registrar datos provenientes de transacciones (conocido como OLTP o procesamiento de transacciones en línea). Aunque existen muchas herramientas de generación de informes para bases de datos relacionales, éstas son lentas cuando debe explorarse toda la base de datos.
Por ejemplo, una empresa podría analizar algunos datos financieros por producto, por período, por ciudad, por tipo de ingresos y de gastos, y mediante la comparación de los datos reales con un presupuesto. Estos parámetros en función de los cuales se analizan los datos se conocen como dimensiones. Para acceder a los datos sólo es necesario indexarlos a partir de los valores de las dimensiones o ejes.
El almacenar físicamente los datos de esta forma tiene sus pros y sus contras. Por ejemplo, en estas bases de datos las consultas de selección son muy rápidas (de hecho, casi instantáneas). Pero uno de los problemas más grandes de esta forma de almacenamiento es que una vez poblada la base de datos ésta no puede recibir cambios en su estructura. Para ello sería necesario rediseñar el cubo.
En un sistema OLAP puede haber más de tres dimensiones, por lo que a los cubos OLAP también reciben el nombre de hipercubos. Las herramientas comerciales OLAP tienen diferentes métodos de creación y vinculación de estos cubos o hipercubos (véase Tipos de OLAP en el artículo sobre OLAP).

Un ejemplo

Un analista financiero podría querer ver los datos de diversas formas, por ejemplo, visualizándolos en función de todas las ciudades (que podrían figurar en el eje de abscisas) y todos los productos (en el eje de ordenadas), y esto podría ser para un período determinado, para la versión y el tipo de gastos. Después de haber visto los datos de esta forma particular el analista podría entonces querer ver los datos de otra manera y poder hacerlo de forma inmediata. El cubo podría adoptar una nueva orientación para que los datos aparezcan ahora en función de los períodos y el tipo de coste. Debido a que esta reorientación implica resumir una cantidad muy grande de datos, esta nueva vista de los datos se debe generar de manera eficiente para no malgastar el tiempo del analista, es decir, en cuestión de segundos, en lugar de las horas que serían necesarias en una base de datos relacional convencional.

Dimensiones y jerarquías

Cada una de las dimensiones de un cubo OLAP puede resumirse mediante una jerarquía. Por ejemplo si se considera una escala (o dimensión) temporal "Mayo de 2005" se puede incluir en "Segundo Trimestre de 2005", que a su vez se incluye en "Año 2005". De igual manera, otra dimensión de un cubo que refleje una situación geográfica, las ciudades se pueden incluir en regiones, países o regiones mundiales; los productos podrían clasificarse por categorías, y las partidas de gastos podrían agruparse en tipos de gastos. En cambio, el analista podría comenzar en un nivel muy resumido, como por ejemplo el total de la diferencia entre los resultados reales y lo presupuestado, para posteriormente descender en el cubo (en sus jerarquías) para poder observar con un mayor nivel de detalle que le permita descubrir en el cubo los lugares en los que se ha producido esta diferencia, según los productos y períodos.

Dispersión en cubos OLAP

Vincular o enlazar cubos es un mecanismo para superar la dispersión. Ésta se produce cuando no todas las celdas del cubo se rellenan con datos (escasez de datos o valores nulos). El tiempo de procesamiento es tan valioso que se debe adoptar la manera más efectiva de sumar ceros (los valores nulos o no existentes). Por ejemplo los ingresos pueden estar disponibles para cada cliente y producto, pero los datos de los costos pueden no estar disponibles con esta cantidad de análisis. En lugar de crear un cubo disperso, a veces es mejor crear otro cubo distinto, pero vinculado, en el que un subconjunto de los datos se pueden analizar con gran detalle. La vinculación asegura que los datos de los dos cubos mantengan una coherencia.

Acceso y cálculo de un cubo OLAP

Los datos de los cubos pueden ser actualizados de vez en cuando, tal vez por personas diferentes de forma concurrente. Para solventar este problema a menudo es necesario bloquear partes de un cubo mientras otro usuario está escribiendo, para volver a calcular los totales en el cubo. Otras implementaciones añaden la posibilidad de mostrar una alerta que indique que los totales calculados previamente ya no son válidos tras los nuevos datos. También hay algunos productos que calculan los totales cuando se les necesita con los últimos datos producidos en el sistema.

Definición técnica

En teoría de bases de datos, un cubo OLAP es una representación abstracta de la proyección de una relación de un RDBMS (Sistema administrador de bases de datos relacionales). Dada una relación de orden N, se considera la posibilidad de una proyección que dispone de los campos XYZ como clave de la relación y de W como atributo residual. Categorizando esto como una función se tiene que:
W : (X,Y,Z) → W
Los atributos XYZ se corresponden con los ejes del cubo, mientras que el valor de W devuelto por cada tripleta (X, Y, Z) se corresponde con el dato o elemento que se rellena en cada celda del cubo.
Debido a que los dispositivos de salida (monitores, impresoras, ...) sólo cuentan con dos dimensiones, no pueden caracterizar fácilmente cuatro dimensiones, es más práctico proyectar "rebanadas" o secciones de los datos del cubo (se dice proyectar en el sentido clásico vector analítico de reducción dimensional, no en el sentido de SQL, aunque los dos conceptos son claramente análogos), tales como la expresión:
W : (X,Y) → W
Aunque no se conserve la clave del cubo (al faltar el parámetro Z), puede tener algún significado semántico, sin embargo, también puede que una sección de la representación funcional con tres parámetros para un determinado valor de Z también resulte de interés.
La motivación que hay tras OLAP vuelve a mostrar de nuevo el paradigma de los informes de tablas cruzadas de los sistema de gestión de base de datos de los 80. Se puede desear una visualización al estilo de una hoja de cálculo, donde los valores de X se encuentran en la fila$1, los valores de Y aparecen en la columna $A, y los valores de W: (X,Y) → W se encuentran en las celdas individuales a partir de la celda$B2 y desde ahí, hacia abajo y hacia la derecha. Si bien se puede utilizar el Lenguaje de Manipulación de Datos (o DML) de SQL para mostrar las tuplas (X,Y,W), este formato de salida no es tan deseable como la alternativa de tablas cruzadas. El primer método requiere que se realice una búsqueda lineal para cada par (X,Y) dado, para determinar el correspondiente valor de W, mientras que el segundo permite realizar una búsqueda más convenientemente permitiendo localizar el valor W en la intersección de la columna X apropiada con la fila Y correspondiente.
Se ha desarrollado el lenguaje MDX (MultiDimensional eXpressions o expresiones multidimensionales) para poder expresar problemasOLAP de forma fácil. Aunque es posible traducir algunas sus sentencias a SQL tradicional, con frecuencia se requieren expresiones SQL poco claras incluso para las sentencias más simples del MDX. Este lenguaje ha sido acogido por la gran mayoría de los proveedores de OLAP y se ha convertido en norma de hecho para estos sistemas.

RUBY ON RAILS


Ruby on Rails , a menudo abreviado como rieles o RoR , es un código abierto framework de aplicaciones web para el lenguaje de programación Ruby .

Historia

VersiónFecha
Historial de las versiones
1,0 [ 1 ]13 de diciembre 2005
1.2 [ 2 ]19 de enero 2007
2,0 [ 3 ]07 de diciembre 2007
2.1 [ 4 ]01 de junio 2008
2.2 [ 5 ]21 de noviembre 2008
2,3 [ 6 ]16 de marzo 2009
3,0 [ 7 ]29 de agosto 2010
3.1 [ 8 ]31 de agosto 2011
Ruby on Rails fue extraído por David Hansson Heinemeierde su trabajo en Basecamp de una herramienta de gestión de proyectos de 37signals (ahora una aplicación web de la compañía). [ 9 ] Hansson lanzado por primera vez Ruby on Rails como código abierto en julio de 2004, pero no comparten cometer derechos del proyecto hasta febrero de 2005. [ 10 ] En agosto de 2006 el marco alcanzó un hito cuando de Apple anunció que enviaría Ruby on Rails con Mac OS X v10.5 "Leopard" , [ 11 ] que fue lanzado en octubre de 2007.
Versión de Ruby on Rails 2.3 fue lanzado el 15 de marzo de 2009. Nuevos e importantes avances en Ruby on Rails incluyen plantillas, motores, bastidor y las formas anidadas modelo. Las plantillas permiten al desarrollador generar un esqueleto de la aplicación con la costumbre de las gemas y las configuraciones. Motores permiten una reutilización de piezas de solicitud completa con rutas, caminos y ver los modelos. El rack de servidor y la interfaz web de metal permiten una optimización de escribir piezas de código que la ruta alrededor de ActionController. [ 12 ]
El 23 de diciembre de 2008, Merb , otro framework de aplicaciones web se puso en marcha, y Ruby on Rails ha anunciado el compromiso de trabajar juntos. El equipo de Ruby on Rails ha anunciado que trabajarán con el proyecto Merb para llevar "las mejores ideas de Merb" en Ruby on Rails 3, poniendo fin a la "duplicación innecesaria" a través de las dos comunidades. [ 13 ] Merb se fusionó con los carriles como parte de la 3.0 carriles de liberación. 

Introducción técnica

Al igual que muchos frameworks web, Ruby on Rails utiliza el Modelo-Vista-Controlador (MVC) para organizar la arquitectura de programación de aplicaciones.
Ruby on Rails incluye herramientas que facilitan las tareas comunes de desarrollo más fácil "de la caja", como los andamios que se puede construir de forma automática algunos de los modelos y puntos de vista básicos necesarios para una página web . [ 16 ] También se incluyenWEBrick , un sencillo servidor Web Ruby que se distribuye con Ruby, y Rake , un sistema de construcción, distribuidos de una joya . Junto con Ruby on Rails estas herramientas ofrecen un entorno de desarrollo básico.
Ruby on Rails se basa en un servidor Web para ejecutarlo. Mestizo en general se prefirió sobre WEBrick en el momento de la escrituracita requerida ] , pero también puede ser ejecutado por Lighttpd , Abismo , Apache , Nginx (ya sea como un módulo - de pasajeros de ejemplo - oa través de CGI , FastCGI o mod_ruby ), y muchos otros. A partir de 2008, el servidor web de pasajeros reemplazado Mestizo como el servidor web más utilizado para Ruby on Rails. [ 17 ]
Ruby on Rails es también notable por su uso extensivo de las JavaScript bibliotecas Prototype y Script.aculo.us para Ajax . [ 18 ] Ruby on Rails inicialmente utilizado ligero de SOAP para servicios web, lo que más tarde fue sustituido por REST servicios web . Ruby on Rails 3.0 utiliza una técnica llamada JavaScript discreta para separar la funcionalidad (o lógica) de la estructura de la página web. jQuery es totalmente compatible como un reemplazo de Prototype y en Rails 3.1 es la biblioteca por defecto Javascript, lo que refleja un amplio sector moverse hacia el uso de jQuery.
Desde la versión 2.0, Ruby on Rails por defecto ofrece HTML y XML como formato de salida. Esta última es la instalación de servicios web RESTful.
El servidor utiliza rubíes incrustados en los puntos de vista HTML con archivos con la extensión html.erb. Otros métodos de plantillas están disponibles como HAML que elimina gran parte de 'desorden' de la página normal (por ejemplo, html '<' y '>' y rubí guión "fin de)
Ruby on Rails 2.3 se basa en Ruby 1.8.6 . Ruby on Rails 3.0 ha sido diseñado para trabajar con Ruby 1.8.7, Ruby 1.9.2 y JRuby 1.5.2 + ,. versiones anteriores no son compatibles [ 19 ]

Marco de la estructura

Ruby on Rails se divide en varios paquetes, es decir, ActiveRecord (un mapeo objeto-relacional de bases de datos del sistema para el acceso), ActiveResource (proporciona servicios web), actionpack, ActiveSupport y ActionMailer. Antes de la versión 2.0, Ruby on Rails también se incluye la web de Acción paquete de servicio que ha sido sustituido por recurso activo. Aparte de los paquetes estándar, los desarrolladores pueden hacer plugins para ampliar los paquetes existentes.

Despliegue

Ruby on Rails a menudo se instala con RubyGems , un gestor de paquetes [ 20 ] que se incluye con las versiones actuales de Ruby.Muchas distribuciones de Linux también admite la instalación de Ruby on Rails y sus dependencias a través de su lengua materna, el sistema de gestión de paquetes .
Ruby on Rails se suele implementar con un servidor de base de datos como MySQL o PostgreSQL , y un servidor web como Apacheejecutando el pasajero Phusion módulo.
Hay muchos Rubí en los carriles de servicios de alojamiento, tales como Heroku , Engine Yard , y Zona de juegos para Rails.

La filosofía y el diseño

Ruby on Rails tiene por objeto subrayar la Convención sobre la configuración (CoC), y el principio de un rápido desarrollo de No Repeat Yourself (DRY).
"Convención sobre configuración" se refiere a un desarrollador sólo tiene que especificar los aspectos no convencionales de la aplicación.Por ejemplo, si hay una clase de venta en el modelo, la tabla correspondiente en la base de datos se denomina venta por defecto. Sólo si uno se desvía de esta convención, como llamar a la mesa "los productos vendidos", que el desarrollador tiene que escribir el código en relación con estos nombres. En general, las convenciones de Rails Ruby on conducir a menos código y menos repeticiones. cita requerida ]
"No te repitas" significa que la información se encuentra en un solo lugar, sin ambigüedades. Por ejemplo, utilizando el ActiveRecord de Rails módulo, el desarrollador no tiene que especificar los nombres de base de datos de columna en definiciones de clase. En su lugar, Ruby on Rails se puede recuperar esta información desde la base de datos basado en el nombre de la clase.

LA TECNOLOGIA Y LOS MIDLET


Un MIDlet es una aplicación que usa el perfil Mobile Information Device (MIDP) de la configuración de dispositivos conectados Limitada(CLDC) para Java ME medio ambiente. Las aplicaciones típicas incluyen juegos que se ejecutan en dispositivos móviles y teléfonos celulares que tienen pequeñas pantallas gráficas y sencillas interfaces de teclado numérico y el acceso limitado a la red sobre HTTP . 

/ / Lo llama para hacer una pausa el MIDlet
  pauseApp public void () {}

  / / Llamado a terminar el MIDlet
  public void destroyApp (booleano incondicional) {}


La implementación de aplicaciones

MIDlets son empaquetados en suites dentro de un . jar archivo con un archivo de manifiesto lo que indica que las clases de la aplicación que MIDlet. Así como las clases de Java, el . jar archivo puede contener otros recursos, como imágenes o archivos de sonido. Una . jad archivo contiene la ubicación de la jarra. , así como la lista de MIDlets en la suite y otros atributos. [ 2 [ 3 ]
El . jad archivo que describe un conjunto de MIDlets se utiliza para implementar las aplicaciones en una de dos maneras. Por el aire (OTA) de implementación implica cargar el jad. y . jar archivos a un servidor Web que se puede acceder por el dispositivo a través deHTTP . El usuario descarga el . jad archivo e instala los MIDlets que necesitan. [ 4 ] el despliegue local requiere los archivos MIDlet para ser transferidos al dispositivo a través de una conexión fuera de la red, tales como Bluetooth o IrDa y puede incluir software específico. [ 5 ]

MIDlet seguridad

verificación de código de bytes

Debido a la memoria y poder de procesamiento disponible en un dispositivo, el verificador de clases en la máquina virtual de móviles es mucho menor y sólo realiza una verificación rápida, la clase completa. El código de bytes para el MIDlet clases por lo tanto, debe ser pre-verificada mediante el uso de un preverifier para anotar los archivos de clases para permitir a la máquina virtual de móvil para ejecutar entonces los bytecodes resultantes. Los bytecodes resultantes son bytecodes válida porque las anotaciones son el uso de atributos de la bytecode para hacer las notas para la máquina virtual móvil para leer en hacer su verificación final de la clase incompleta.

Restricciones

A diferencia de un applet de Java , un MIDlet se limita al uso de la LCDUI en lugar de los reproductores más conocidos de AWT y swing .También hay restricciones en el tamaño de . jar archivos y el número de conexiones simultáneas de HTTP basado en la especificación MIDP.

Web Service

Un servicio web es un método de comunicación entre dos dispositivos electrónicos en la red.
El W3C define un "servicio web" como "un sistema de software diseñado para apoyar lainteroperabilidad de máquina a máquina de la interacción en una red . Cuenta con una interfaz que se describe en un formato procesable por máquina (específicamente Web Services Description Language, conocido por el acrónimo WSDL ). Otros sistemas interactúan con el servicio Web de una manera prescrita por su descripción usando SOAP de mensajes, por lo general transmitida a través de HTTP con una serialización XML en conjunto con otras web relacionadas con las normas ". [ 1 ]

El W3C también dice, "Podemos identificar dos grandes clases de servicios Web, RESTcompatible con los servicios Web, en la que el principal objetivo del servicio es de manipular representaciones XML de recursos de la Web utilizando un conjunto uniforme de "apátridas" operaciones y arbitraria servicios web, en la que el servicio puede exponer a un conjunto arbitrario de las operaciones ".

Grandes servicios Web

"Los servicios Web grande" el uso de Extensible Markup Language (XML) mensajes que siguen a la de SOAP estándar y han sido populares entre las empresas tradicionales. En estos sistemas, a menudo hay una descripción legible por máquina de las operaciones ofrecidas por el servicio por escrito en el Web Services Description Language (WSDL). Este último no es un requisito de un jabón de punto final , sino que es un requisito previo para la automatización del lado del cliente la generación de código en muchas Java y . NET marcos de SOAP (marcos, como Apache Axis2 , Apache CXF , y la primavera son excepciones notables). Algunas organizaciones de la industria, tales como el WS-I , el mandato de ambos SOAP y WSDL en su definición de un servicio Web.


Web API

Servicios Web en una arquitectura orientada a servicios.
Web de la API es un desarrollo de servicios Web (en un movimiento llamado Web 2.0 ) donde el énfasis se ha ido alejando de SOAP deservicios basados ​​en la dirección de transferencia de estado representacional (REST) ​​basado en comunicaciones. [ 3 ] los servicios REST no requieren XML, SOAP o WSDL API de servicios definiciones.
Web APIs permiten la combinación de varios servicios web en aplicaciones nuevas se conoce como mashups . [ 4 ]
Cuando se utiliza en el contexto de desarrollo Web , Web API normalmente es un conjunto definido de transferencia de hipertexto (HTTP ) mensajes de solicitud junto con una definición de la estructura de los mensajes de respuesta, por lo general se expresa en un lenguaje de marcado extensible ( XML ) o JavaScript Object Notation (JSON ) format.
Al ejecutar servicios Web compuestos, cada servicio sub se pueden considerar autónomas. El usuario no tiene control sobre estos servicios.También los servicios Web en sí no son fiables, el proveedor de servicios puede quitar, cambiar o actualizar sus servicios sin previo aviso a los usuarios. La tolerancia de la fiabilidad y la culpa no está bien sustentada, las fallas pueden ocurrir durante la ejecución. Manejo de excepciones en el contexto de los servicios web es todavía un tema de investigación abierto, aunque aún puede ser manejado por responder con un objeto de error a los clientes.

Estilos de uso

Los servicios Web son un conjunto de herramientas que se pueden utilizar en un número de maneras. Los tres estilos más comunes de uso son RPC , SOA y REST . cita requerida ]

las llamadas a procedimiento remoto

Los elementos arquitectónicos que participan en el XML-RPC.
RPC servicios Web presentan una función de distribución (o método) interfaz de llamada que es familiar para muchos desarrolladores. Normalmente, la unidad básica de la RPC de servicios Web es la operación WSDL.
Los primeros servicios Web se han centrado en las herramientas de RPC, y como resultado de este estilo está muy extendido y apoyado. Sin embargo, a veces es criticado por no ser imprecisa, ya que se realiza con frecuencia por los servicios de mapas directamente a la lengua específica de las funciones o llamadas a métodos. Muchos proveedores se sintió que este enfoque es un callejón sin salida, y presionó para RPC a ser rechazado en el perfil WS-I Basic .
Otros enfoques, con casi la misma funcionalidad RPC son Object Management Group 's (OMG) Common Object Request Broker Architecture ( CORBA ), Microsoft 's distribuidos Component Object Model ( DCOM ) o Sun Microsystems s 'Java / Remote Method Invocation ( RMI ) .

Arquitectura orientada a servicios

Los servicios Web también se puede utilizar para implementar una arquitectura de acuerdo a la arquitectura orientada a servicios (SOA) conceptos, donde la unidad básica de la comunicación es un mensaje, en lugar de una operación. Esto se refiere a menudo como "orientados a mensajes "de servicios.
SOA servicios Web son compatibles con la mayoría de los principales proveedores de software y analistas de la industria. A diferencia de RPC de servicios Web, bajo acoplamiento es más probable, debido a que la atención se centra en el "contrato" que ofrece WSDL, en vez de los detalles de implementación.
Los analistas de middleware utilizar buses de servicios empresariales (ESB) que se combinan mensajes orientados a la transformación y los servicios Web para crear una SOA orientada a eventos . Un ejemplo de un ESB de código abierto son WSO2 ESB , Mula y ESB Abierto .
Representación de los conceptos definidos por WSDL 1.1 y documentos WSDL 2.0.


Transferencia de estado representacional (REST)

REST trata de describir las arquitecturas que utilizan los protocolos HTTP o similar, al limitar la interfaz a un grupo de conocidos, las operaciones estándar (como GET, POST, PUT, DELETE de HTTP). Aquí, la atención se centra en la interacción con stateful recursos, en lugar de mensajes o de las operaciones.
Una arquitectura basada en REST (que es "REST") puede utilizar WSDL para describir la mensajería SOAP sobre HTTP, puede ser implementado como una abstracción puramente en la parte superior de SOAP (por ejemplo, WS-Transfer), o puede ser creado sin utilizar SOAP en todos.
WSDL versión 2.0 ofrece soporte para la unión de todos losmétodos de petición HTTP (no sólo GET y POST, como en la versión 1.1) por lo que permite una mejor aplicación de servicios Web REST . [ 5 ] Sin embargo, el apoyo a esta especificación, sigue siendo insuficiente en el desarrollo de software kits , que a menudo ofrecen herramientas sólo para WSDL 1.1.


metodologías de diseño automatizado

Las herramientas automatizadas pueden ayudar en la creación de un servicio Web. Para los servicios a través de WSDL, es posible generar de forma automática WSDL para las clases existentes (una estrategia de abajo hacia arriba) o para generar un esqueleto de clases dadas las WSDL (una estrategia top-down).
  • Un desarrollador que utilice un método de abajo hacia arriba escribe la aplicación de las primeras clases (en algún lenguaje de programación), y luego utiliza una herramienta de generación de WSDL para exponer los métodos de estas clases como un servicio Web. [ 6 ] Esto es a menudo el enfoque más simple.
  • Un desarrollador que utilice un método de arriba hacia abajo, escribe el documento WSDL y luego utiliza una herramienta de generación de código para producir el esqueleto de clases, que se completará en caso necesario. De esta manera se considera en general más difícil, pero puede producir diseños más limpios