Caché

Innovará
en
gestión de datos 
y en desarrollo rápido

Servidor de datos multidimensional de Caché

La base de datos de alto rendimiento de Caché utiliza un motor de datos multidimensional que permite el almacenamiento eficaz y compacto de datos en una estructura de datos compleja. Los objetos y SQL se implementan especificando un diccionario de datos unificado que define las clases y tablas y  proporciona un mapeo con las estructuras multidimensionales, mapeo que puede generarse automáticamente. Caché también permite acceso directo a los  datos multidimensionales.

Acceso integrado a base de datos

Caché proporciona a los programadores la libertad de almacenar y acceder a los datos mediante acceso a objetos, SQL o acceso directo a las estructuras multidimensionales. Independientemente del método de acceso, todos los datos de la base de datos de Caché se almacenan en las arrays multidimensionales.

Una vez almacenados los datos, se pueden utilizar simultáneamente los tres métodos de acceso sobre los mismos datos, con concurrencia total.

Integrated database access architecture chart

Multidimensional Access

Una característica única de Caché es su Arquitectura de Datos Unificada. Siempre que se define una clase de objetos en la base de datos, Caché genera automáticamente una descripción relacional SQL de dicha clase. De forma similar, cuando se importa en el Diccionario de Datos una descripción DDL de una base de datos relacional, Caché crea automáticamente junto con la descripción relacional, la definición de la clase equivalente, lo que posibilita el acceso inmediato como objetos. Caché mantiene estas descripciones unidas: en la práctica existe una única definición de datos. El programador puede editar y ver el diccionario tanto desde la perspectiva de objeto como de tabla relacional.

Caché crea automáticamente un mapeo de cómo se almacenan los objetos y tablas en las estructuras multidimensionales, aunque también el programador puede controlar el mapeo explícitamente.

 

Las ventajas de Caché

Flexibilidad: Los modos de acceso a los datos de Caché (Objetos, SQL y Directo) se pueden utilizar concurrentemente sobre los mismos datos. Esta flexibilidad ofrece a los programadores la libertad de pensar en los datos de la forma que tenga más sentido y utilizar el método de acceso que mejor se adapte a las necesidades de cada programa.

Menos trabajo: La Arquitectura de Datos Unificada de Caché describe automáticamente los datos como objetos y como tablas con una sola definición. No es necesario codificar las transformaciones, facilitando el desarrollo y mantenimiento de las aplicaciones.

Afianzar los conocimientos y aplicaciones existentes: Los programadores pueden ampliar sus conocimientos relacionales e ir introduciendo capacidades de objeto en aplicaciones existentes a medida que evolucionan.

Modelo de datos multidimensional

El núcleo de la base de datos de Caché es un motor de datos multidimensional tremendamente potente. Los lenguajes de script integrados en Caché proporcionan acceso directo a las estructuras multidimensionales, ofreciendo el mayor rendimiento y el rango más amplio de posibilidades de almacenamiento, y muchas aplicaciones se implementan en su totalidad utilizando directamente este motor de datos. El “acceso global” directo se suele utilizar cuando existen estructuras poco comunes y muy especializadas y no hay necesidad de proporcionar acceso mediante objetos o SQL a dichas estructuras, o cuando se necesita el mayor rendimiento posible.

No existe ningún diccionario de datos, y por tanto ninguna definición de datos, para el motor de datos multidimensional.

 

Estructura de datos multidimensional compleja

Las arrays multidimensionales de Caché se denominan “globals”. Los datos se pueden almacenar en un global con cualquier número de subíndices. Además, los subíndices son independientes y pueden contener cualquier tipo de datos. Un subíndice podría ser un entero, como 34, mientras que otro podría ser un nombre significativo, como “ArtículosLínea”, incluso en el mismo nivel de subíndice.

Por ejemplo, una aplicación de inventario de stock que proporcione información sobre artículo, talla, color y estampado podría tener una estructura como la siguiente:

 

^Stock(artículo,talla,color,estampado) = cantidad

Algunos datos de ejemplo:

^Stock("vestido",4,"azul","floral")=3

Con esta estructura es muy sencillo determinar si hay vestidos azules de la talla 4 con estampado floral, simplemente accediendo a ese nodo de datos. Si un cliente desea un vestido de la talla 4 pero no está seguro del color y del estampado, es fácil mostrar una lista de todos ellos pasando por todos los nodos de datos bajo:

^Stock("vestido",4).

En este ejemplo, todos los nodos de datos eran de naturaleza similar, (almacenaban una cantidad) y todos se almacenaban en el mismo nivel de subíndice (4 subíndices) con subíndices similares (el tercer subíndice siempre era texto que representaba un color). Sin embargo, no tiene porqué ser similar. No todos los nodos de datos tienen que tener el mismo número o tipo de subíndices, y pueden contener distintos tipos de datos.

A continuación viene un ejemplo de un global más complejo con datos de una factura que tiene distintos tipos de datos almacenados en distintos niveles de subíndices:

 

^Factura(nº factura,"Cliente") = información del cliente
^Factura(nº factura,"Fecha") = fecha factura
^Factura(nº factura,"Artículos") = nº de artículos de la factura
^Factura(nº factura,"Artículos",1,"Serie") = número de serie del primer artículo
^Factura(nº factura,"Artículos",1,"Cantidad") = cantidad del primer artículo
^Factura(nº factura,"Artículos",1,"Precio") = precio del primer artículo
^Factura(nº factura,"Artículos",2,"Serie") = número de serie del segundo artículo
etc.

Múltiples elementos de datos por nodo

WORLD-CUBE-small

Con frecuencia, un solo elemento de datos se almacena en un nodo de datos, como una fecha o una cantidad, pero algunas veces resulta útil almacenar múltiples elementos de datos juntos en un solo nodo de datos. Esto es particularmente útil cuando existe un conjunto de datos relacionados a los que se accede en grupo con frecuencia. Esto también puede mejorar el rendimiento al necesitar menos accesos a la base de datos.

Por ejemplo, en la factura anterior cada artículo incluía el número de serie, la cantidad y el precio, todos ellos como nodos separados, pero se podrían almacenar como una lista de elementos en un solo nodo:

 

^Factura(nº factura,"ArtículosLínea",nº artículo).

Para simplificar esto, Caché dispone de la función $list(), que puede agrupar varios elementos de datos en una cadena de bytes de longitud delimitada y más tarde desagruparlos conservando el tipo de datos.

El bloqueo lógico favorece la alta concurrencia

En sistemas con miles de usuarios, la reducción de conflictos entre procesos concurrentes es crítica para conseguir alto rendimiento. Uno de los mayores conflictos se da entre transacciones que intentan acceder a los mismos datos.

Los procesos de Caché no bloquean páginas enteras de datos al ejecutar actualizaciones. En su lugar, dado que las transacciones requieren acceso frecuente o cambios a pequeñas cantidades de datos, en Caché el bloqueo de la base de datos se realiza a nivel lógico. Los conflictos de la base de datos se reducen aún más utilizando operaciones individuales de suma y resta, que no requieren bloqueo. (Estas operaciones resultan especialmente útiles en los contadores incrementales utilizados para asignar números de id y para modificar contadores estadísticos).

Con Caché, las transacciones individuales se ejecutan más rápidamente, y se pueden ejecutar más transacciones simultáneamente.

 

Datos de longitud variable en sparse arrays

Como los datos de Caché tienen de forma inherente una longitud variable, y se almacenan en sparse arrays, Caché suele necesitar menos de la mitad del espacio que necesita una base de datos relacional. Además de reducir los requerimientos de disco, el almacenamiento de datos compacto mejora el rendimiento porque se pueden leer y escribir más datos con una sola operación de E/S, y los datos se pueden almacenar en memoria intermedia cache de forma más eficiente.

Las declaraciones y definiciones no son necesarias

Las arrays multidimensionales de Caché son inherentemente independientes de los tipos, tanto en los datos en sí como en los subíndices. Las declaraciones, definiciones o asignaciones de almacenamiento no son necesarias. Los datos globales simplemente empiezan a existir desde que son insertados.

Namespaces

Caché, los datos y el código se almacenan en archivos de disco con el nombre CACHE.DAT (sólo uno por directorio). Cada archivo contiene numerosos “globals” (arrays multidimensionales). En un archivo, el nombre de cada global debe ser único, pero archivos diferentes pueden contener el mismo nombre de global. Sin mucho rigor, se pueden considerar estos archivos como bases de datos.

En lugar de especificar qué archivo de base de datos utilizar, cada proceso de Caché utiliza un “namespace” para acceder a los datos. Un namespace es un mapa lógico que mapea el código y los nombres de las arrays multidimensionales globales y el código con las bases de datos. Si se mueve una base de datos de una unidad de disco u ordenador a otro, sólo es necesario actualizar el mapeo del namespace. La propia aplicación no cambia.

Normalmente, aparte de algo de información del sistema, todos los datos de un namespace se almacenan en una sola base de datos. Sin embargo, los namespaces proporcionan una estructura flexible que permite mapeos arbitrarios, y no es extraño que un namespace mapee el contenido de varias bases de datos, pudiendo incluir algunas situadas en otros ordenadores.

 

Las ventajas de Caché

Rendimiento: Utilizando un modelo de datos multidimensional eficaz con técnicas de almacenamiento mediante Sparse Arrays en lugar de un laberinto inmanejable de tablas bidimensionales, el acceso a los datos y las actualizaciones se realizan con menos operaciones E/S en disco. La E/S reducida significa que las aplicaciones se ejecutarán más rápidamente.

Escalabilidad: El modelo de datos multidimensional transaccional permite a las aplicaciones basadas en Caché escalarse a muchos miles de usuarios sin sacrificar el alto rendimiento. Esto se debe a que el acceso a los datos de un modelo multidimensional no se ve afectado de forma significativa por el tamaño o la complejidad de la base de datos, si lo comparamos con los modelos relacionales. Las transacciones acceden a los datos que necesitan sin realizar complicados “joins” o hacer operaciones de tabla en tabla.

El uso del bloqueo lógico en Caché para las actualizaciones en lugar de bloquear las páginas físicas contribuye también de forma importante a la concurrencia, como lo es su sofisticado almacenamiento de datos en memoria intermedia cache a través de las redes.

Desarrollo rápido: Caché permite desarrollar más rápidamente porque la estructura de datos proporciona un almacenamiento natural y de fácil comprensión de datos complejos y no requiere gran cantidad de declaraciones ni definiciones largas o complicadas. El acceso directo a los globales es muy sencillo, lo que permite utilizar la misma sintaxis de lenguaje que para acceder a las arrays locales.

Rentabilidad: Comparadas con las aplicaciones relacionales de tamaño similar, las aplicaciones basadas en Caché requieren mucho menos hardware y ningún administrador de bases de datos. La gestión y utilización del sistema son sencillas.

Acceso SQL

SQL es el lenguaje de consulta de Caché y soporta un conjunto completo de funcionalidades de bases de datos relacionales, incluyendo DLL, transacciones, integridad referencial, triggers, procedimientos almacenados y mucho más. Caché soporta acceso mediante ODBC y JDBC (utilizando un controlador basado en Java puro). Los comandos y consultas SQL también pueden embeberse en Caché ObjectScript y dentro de métodos de objeto.

SQL accede a los datos representados como tablas con filas y columnas. Dado que los datos de Caché se almacenan realmente en eficientes estructuras multidimensionales, las aplicaciones que utilizan SQL obtienen un mejor rendimiento con Caché que cuando se ejecutaban sobre bases de datos relacionales tradicionales. El rendimiento resulta evidente, tanto con las consultas ya compiladas y altamente eficaces como con la ejecución de sentencias SQL dinámicas (definidas en tiempo de ejecución).

Caché soporta, además de la sintaxis SQL estándar, muchas de las extensiones utilizadas habitualmente en otras bases de datos por lo que muchas aplicaciones basadas en SQL pueden ejecutarse en Caché sin realizar cambios, especialmente aquellas escritas con herramientas independientes de la base de datos. Sin embargo, los procedimientos almacenados específicos de proveedores necesitarán algo de trabajo e InterSystems tiene traductores para facilitar ese trabajo.

Caché SQL incluye mejoras de objetos que hacen que el código SQL sea más sencillo y más intuitivo de leer y escribir.

 

SQL TRADICIONAL

SELECT
CV.NombCompleto, MV.Descr, VP.Valor,
AV.FechaFac, AV.NumFac


FROM
VentasPrinc VP, ArtVenta AV, ProdVenta PV,
ClienteVenta CV, MercadoVenta MV


WHERE


AV.IDArtVenta *= VP.ArtVenta
AND PV.IDProdVenta *= VP.Producto
AND CV.IDClienteVenta *= VP.Cliente
AND MV.IDMercadoVenta *= CV.MercadoVenta


AND PV.Descr = ‘Martillo’

SQL AMPLIADO A OBJETOS

SELECT
Cliente->NombCompleto,
Cliente->MercadoVenta->Descr, Valor,
ArtVenta->FechaFac, ArtVenta->NumFac

FROM
VentasPrinc

WHERE
Producto->Descr = ‘Martillo’

Acceso a bases de datos relacionales con Caché Relational Gateway

Relational-gateway-5Caché Relational Gateway permite que una solicitud SQL que se origine en Caché se envíe a otras bases de datos (relacionales) para su proceso. Utilizando Gateway, una aplicación de Caché puede recuperar y actualizar datos almacenados en la mayoría de las bases de datos relacionales.

Además, si se compilan las clases de bases de datos de Caché con la opción CachéSQLStorage, Gateway permite a las aplicaciones de Caché utilizar bases de datos relacionales de forma transparente. Sin embargo, las aplicaciones se ejecutarán más rápidamente y serán más escalables si acceden a la base de datos post-relacional de Caché.

Las ventajas de Caché

SQL más rápido: Las aplicaciones relacionales pueden disfrutar de un rendimiento significativamente mayor utilizando Caché SQL para conectar con la eficiente base de datos post-relacional de Caché.

Desarrollo más rápido: En Caché, las consultas SQL pueden escribirse de forma más intuitiva, utilizando menos líneas de código.

Compatibilidad con las aplicaciones y generadores de informes existentes: Los controladores ODBC y JDBC nativos de Caché proporcionan  interoperatividad de alto rendimiento con aplicaciones convencionales, incluyendo muchas de las herramientas de análisis de datos y generación de  informes más conocidas.

Caché Objects

El modelo de objetos de Caché se basa en el estándar ODMG. Caché soporta un conjunto completo de conceptos de programación orientada a objetos, incluyendo la encapsulación, los objetos embebidos, la herencia múltiple, el polimorfismo y las colecciones.

Los lenguajes de script integrados en Caché manipulan directamente estos objetos y Caché también expone las clases de Caché como clases de Java, EJB, COM, .NET y C++. Las clases de Caché también pueden habilitarse automáticamente para soportar XML y SOAP simplemente pulsando un botón en Studio IDE. De esta forma, los objetos de Caché están disponibles inmediatamente para cualquier tecnología de objetos de uso común.

Un programa externo al Servidor de Aplicaciones de Caché puede acceder de varias formas a las clases Caché:

  1. Caché ObjectsCualquier clase Caché se puede proyectar como una clase del lenguaje nativo. Cuando un programa de Java, C++, C#, Visual Basic o cualquier otro accede a un objeto de Caché, llama a una plantilla de la clase en el lenguaje nativo. Esa clase de plantilla (generada automáticamente por Caché) se comunica con el Servidor de Aplicaciones de Caché para invocar métodos del servidor de Caché y acceder a las propiedades o modificarlas. El estado de los objetos de Caché siempre se mantiene en el Servidor de Aplicaciones de Caché. Para acelerar la ejecución y reducir la cantidad de mensajes, Caché almacena en memoria intermedia caché una copia de los datos del objeto en el cliente y realiza actualizaciones en paralelo con otros mensajes cuando es posible.Se puede utilizar una proyección “ligera” para clases de bases de datos en las que la clase de plantilla del lenguaje nativo accede directamente a la base de datos, sin pasar por el Servidor de aplicaciones. El estado del objeto no se mantiene en el Servidor de aplicaciones; las propiedades en la memoria sólo se mantienen en el cliente. Esta solución ofrece un rendimiento considerablemente más alto, pero menor funcionalidad, dado que no se pueden invocar los métodos de instancia del servidor de la clase (es decir, los métodos que necesitan acceso a las propiedades que están en la memoria).
  2. La tecnología Jalapeño de InterSystems permite a los desarrolladores de Java crear en primer lugar clases persistentes Java como cualquier otra clase POJO (“Plain Old Java Objects”) en el IDE de su elección y a continuación hacer que Caché genere automáticamente un esquema de base de datos y la clase Caché correspondiente. Utilizando esta solución, la clase Java no se modifica y la aplicación sigue accediendo a sus propiedades y métodos. Caché proporciona una clase de biblioteca (“ObjectManager”) con una API que se utiliza para almacenar y recuperar objetos de base de datos y realizar consultas.

Con cada una de estas tres soluciones, el programa del usuario percibe el objeto como local. Caché maneja de forma transparente todas las comunicaciones, utilizando llamadas o TCP.

Generadores de métodos

Caché incluye varias tecnologías de objetos avanzadas exclusivas y una de ellas son los generadores de métodos. Un generador de métodos es un método que se ejecuta en tiempo de compilación, generando código que puede ejecutarse cuando se ejecuta el programa. El generador de métodos tiene acceso a las definiciones de clases, incluidas las definiciones de propiedades y métodos, y parámetros, con el fin de permitirle generar un método personalizado para la clase. Los generadores de métodos son particularmente potentes combinados con la herencia múltiple; funcionalmente pueden definirse en una clase heredada multiplicada que se personaliza a sí misma para la subclase.

Las ventajas de Caché

Caché está totalmente preparado para objetos, y proporciona toda la potencia de la tecnología de objetos a los desarrolladores de aplicaciones de proceso transaccional de alto rendimiento

Desarrollo rápido de aplicaciones: La tecnología de objetos constituye una potente herramienta para aumentar la productividad del programador. Los desarrolladores pueden pensar en objetos (incluso objetos tremendamente complejos) y utilizarlos de forma sencilla y cercana a la realidad, acelerando el proceso de desarrollo de la aplicación. Además, la modularidad e interoperabilidad innata de los objetos simplifican el mantenimiento de la aplicación y permiten al programador aprovechar su trabajo para otros muchos proyectos.

Natural Development: Los objetos de la base de datos aparecen como objetos nativos del lenguaje utilizado por el desarrollador. Sin necesidad de escribir código tedioso para descomponer los objetos en filas y columnas y después volver a ensamblarlos.

Indexación con mapa de bits transaccional

Caché proporciona de forma exclusiva Indexación bitmap transaccional, que puede incrementar radicalmente el rendimiento de las consultas complejas, ofreciendo mayor rapidez en las consultas de datos sobre datos dinámicos.

El rendimiento de la base de datos depende fundamentalmente de si se dispone de índices sobre las propiedades que se utilizan con más frecuencia en las búsquedas. La mayoría de las bases de datos utilizan índices que, por cada valor posible de la columna o propiedad, mantienen una lista de los identificadores de fila (o id de objeto) de las filas/objetos que tienen ese valor.

Un índice bitmap es otro tipo de índice. Los índices bitmap contienen un mapa de bits asignado por cada posible valor de la columna/propiedad, con un bit por cada fila/objeto que se almacena. Un bit a 1 significa que la fila/objeto tiene ese valor de la columna/propiedad.

La ventaja de los índices bitmap está en que las consultas complejas pueden procesarse realizando operaciones lógicas (AND, OR) sobre los índices, determinando exactamente qué objetos (filas) cumplen las condiciones de la consulta, sin tener que buscar en toda la base de datos. Con frecuencia, los índices bitmap pueden reducir los tiempos de respuesta de las consultas que realizan búsquedas en grandes volúmenes de datos, multiplicando por 100 o más su efectividad.

Historicamente los bitmap suelen sufrir dos problemas: a) su actualización en bases de datos relacionales puede ser muy lenta, y b) pueden llegar a ocupar mucho espacio de almacenamiento. Por lo tanto, raramente se utilizan para aplicaciones de proceso de transacciones con bases de datos relacionales.

Caché ha incorporado los Índices bitmap transaccionales que aprovechan las estructuras de datos multidimensionales para eliminar estos dos problemas. La actualización de estos bitmap suele ser más rápida que la de los índices tradicionales y utilizan técnicas de compresión sofisticadas para reducir radicalmente el espacio de almacenamiento. Caché también soporta sofisticadas técnicas de “bit-slicing”. El resultado es un bitmap ultra rápido que puede utilizarse para buscar en millones de registros en tan solo una fracción de segundo sobre una base de datos de proceso de transacciones en línea. Las aplicaciones de “Business Intelligence” y “Datawarehousing” pueden trabajar con datos “reales”.

Caché ofrece índices tradicionales y bitmap transaccionales. Caché también soporta índices multicolumna. Por ejemplo, un índice sobre Provincia y ModeloCoche puede identificar rápidamente qué personas tienen un coche de un tipo concreto que está registrado en una provincia determinada.

 

Las ventajas de Caché

Consultas radicalmente más rápidas: Mediante la utilización de técnicas de “bitmapping” transaccional, los usuarios pueden conseguir búsquedas extremadamente rápidas sobre grandes bases de datos (buscar en millones de registros en una fracción de segundo) en sistemas usados principalmente para proceso transaccional.

Actualización a “velocidad de transacción”: Los bitmap de Caché se pueden actualizar tan rápido como los índices tradicionales, con lo cual son adecuados para su uso con las aplicaciones de proceso de transacciones.

Análisis de datos en tiempo real: La indexación con bitmap transaccional de Caché permite realizar análisis de los datos en tiempo real sobre datos totalmente actualizados.

Análisis en el servidor de producción: No es necesario disponer de un segundo ordenador dedicado a almacén de datos y soporte a la decisión. Tampoco existe la necesidad de realizar operaciones diarias de transferencias de datos al segundo sistema ni de administradores responsables de su soporte.

Escalabilidad: La velocidad de los índices bitmap transaccionales mejora la capacidad de crear sistemas con enormes cantidades de datos en los que se deben realizar.

Búsqueda de texto con WordAware

Mediante la indexación con Word-Aware, Caché soporta búsqueda de texto libre en la que se pueden hacer consultas de texto que contengan palabras de interés, aun cuando las palabras reales del texto sean variantes de las palabras de la búsqueda. Los algoritmos de Word-Aware son específicos del idioma natural que se utilice. La búsqueda con detección de términos de interés está disponible para una amplia variedad de idiomas, incluidos el inglés, el francés, el alemán, el italiano, el japonés, el portugués y el español. Se están incorporando más idiomas.


Word-aware indexing

word-aware-searching

The Caché Advantage

Búsquedas potentes en texto no estructurado:: Se pueden buscar fácilmente palabras clave y relacionadas en texto no estructurado, como las notas o los documentos de los facultativos.

Búsquedas ultrarrápidas: Con la búsqueda con detección de términos de interés y la tecnología de mapa de bits de Caché, se pueden realizar búsquedas en volúmenes de texto Caché finds “search”, masivos en una fracción de segundo.

innovation@350-dpi-Tecnología InterSystems iKnow

La tecnología de InterSystems iKnow permite analizar e indexar texto y otros tipos de datos sin estructurar, identificando conocimientos, conceptos y relaciones importantes. A diferencia de la mayoría de otras tecnologías de semántica y de búsqueda, iKnow indicará automáticamente los elementos significativos más interesantes de los datos sin necesidad de que el usuario escriba nada, ni siquiera un término de búsqueda.

Indexación inteligente

(Smart Indexing) La indexación inteligente analiza y transforma el texto sin estructurar en una red comprensible de relaciones y conceptos sin necesidad de usar diccionarios, taxonomías u ontologías predefinidas. La indexación inteligente permite tener una visión general de la información relevante, relacionada y representativa dentro de grandes volúmenes de texto sin estructurar, sin necesidad de escribir un término de búsqueda.

La indexación inteligente funciona con diversos idiomas. También puede identificar conceptos (patrones recurrentes) dentro de datos sin estructurar que no sean texto tradicional.

 

Coincidencia inteligente

(Smart Matching) La coincidencia inteligente enlaza los resultados de la indexación inteligente con informaciones específicas de un dominio, una organización o un sector. La correspondencia se basa en conceptos significativos y sus combinaciones, no sólo en palabras, e incluye correspondencias exactas, parciales y “dispersas”.

Interpretación inteligente

Smart-Indexing

(Smart Interpretation) La interpretación inteligente aplica análisis y/o reglas de negocio a los resultados derivados de la indexación inteligente y la correspondencia inteligente. (Es posible que requiera la utilización de InterSystems Ensemble® o InterSystems DeepSee).

Las ventajas de Caché

Funciones integradas para analizar e indexar datos sin estructurar: La tecnología de InterSystems iKnow se incorpora a Caché. Puede acceder a todos sus datos (estructurados y sin estructurar) sin recurrir a soluciones o herramientas de terceros.

Trabajo inicial mínimo: A diferencia de otras herramientas de búsqueda semántica, la tecnología de InterSystems iKnow puede encontrar conceptos y relaciones sin definirlas previamente. No es necesario que los usuarios sepan lo que buscan antes de buscarlo.

MMultilingüe: La tecnología de InterSystems iKnow funciona con varios idiomas, entre ellos el Español, incluso si hay varios de ellos mezclados en un mismo documento.

Múltiples propósitos: La tecnología de InterSystems iKnow se puede utilizar para solucionar varios tipos de problemas: Identificar los elementos más interesantes dentro de una gran cantidad de documentos, orientar automáticamente la información según su similitud con otras informaciones, resumir grandes cantidades de texto en amplios resúmenes, etc.

Enterprise Cache Protocol para sistemas distribuidos

Rendimiento escalable en sistemas distribuidos

ECP-chart-background

Enterprise Cache Protocol (ECP) de InterSystems es una tecnología de alto rendimiento y escalable que permite a los ordenadores de un sistema distribuido utilizar sus bases de datos entre ellos. Para utilizar ECP no es necesario realizar cambios en la aplicación porque simplemente trata la base de datos como si fuera local.

Este es el modo de funcionamiento de ECP. Cada Servidor de Aplicaciones incluye su propio Servidor de Datos, que puede actuar sobre los datos que residen en sus propios sistemas de discos o en bloques que se le han transferido de otro Servidor de Datos mediante ECP. Cuando un cliente realiza una solicitud de información, el Servidor de Aplicaciones de Caché intenta responder a la solicitud desde su memoria cache local. Si no puede, solicitará los datos necesarios al Servidor de Datos de Caché remoto. La respuesta incluye los bloques de la base de datos donde están almacenados los datos. Estos bloques se almacenan en la memoria intermedia cache del Servidor de Aplicaciones, donde estarán disponibles para todas las aplicaciones que se ejecuten en ese servidor. ECP se encarga automáticamente de gestionar la coherencia de la memoria cache en la red y de volver a enviar cualquier cambio a los Servidores de Datos.

 

Las ventajas de rendimiento y escalabilidad de ECP son enormes. Los clientes disfrutan de las respuestas rápidas porque utilizan frecuentemente los datos almacenados en memoria cache. Y el almacenamiento en memoria cache reduce enormemente el tráfico de red entre los servidores de bases de datos y de aplicaciones, por lo que cualquier red puede soportar muchos más servidores y clientes.

Facilidad de uso - Sin cambios en la aplicación

El uso de ECP es transparente para las aplicaciones. Las aplicaciones diseñadas para ejecutarse en un servidor único se ejecutan en un entorno multiservidor sin cambios. Para utilizar ECP, el gestor del sistema simplemente identifica uno o más Servidores de Datos en un Servidor de Aplicaciones y después utiliza el Mapeo dinámico de Namespaces para indicar que las referencias a algunas o todas las estructuras globales (o partes de las estructuras globales) corresponden a ese Servidor de Datos remoto.

Flexibilidad de configuración

Cada sistema Caché puede funcionar como Servidor de Aplicaciones y como Servidor de Datos para otros sistemas. ECP soporta cualquier combinación de Servidores de Aplicaciones y Servidores de Datos y cualquier topología punto-a-punto de hasta 255 sistemas.

Las ventajas de Caché

Escalabilidad masiva: Enterprise Cache Protocol de Caché permite añadir servidores de aplicaciones, a medida que aumentan las necesidades de uso, utilizando cada uno la base de datos como si se tratase de una base de datos local. Si el rendimiento del disco se convierte en un cuello de botella, pueden añadirse más Servidores de Datos, creando particiones lógicas de la base de datos.

Mayor disponibilidad: El fallo de un Servidor de Aplicaciones afecta a menos personas porque los usuarios están distribuidos en múltiples ordenadores. Si se produce la “caída” y rearranque de un Servidor de Datos, o un corte de luz temporal en la red, los Servidores de Aplicaciones pueden seguir procesando sin advertirse nada salvo una pequeña pausa. En algunas configuraciones, también es posible configurar que el Servidor de Datos se recupere sobre un Servidor Shadow (de respaldo) o sistema en cluster, mejorándose aún más la fiabilidad.

Menos coste: Es posible combinar un gran número de ordenadores de bajo coste para formar un sistema muy potente que soporte proceso masivo (“Grid Computing”).

Uso transparente: No es necesario escribir las aplicaciones específicamente para ECP. Las aplicaciones de Caché pueden aprovechar automáticamente las ventajas de ECP sin realizar cambios.

Tolerancia a fallos

Incluso los entornos más rigurosos pueden ser víctimas de incidencias inesperadas: errores del hardware, fallos de alimentación o sucesos tan graves como inundaciones u otros desastres naturales – pero los hospitales, las telecomunicaciones y otros servicios críticos no se pueden permitir una “caída”. A fin de satisfacer estándares tan exigentes, Caché está diseñado para recuperarse con facilidad de fallos de alimentación, y ofrece gran variedad de opciones de recuperación de fallos para reducir o eliminar el impacto sobre los usuarios.

Caché Write-Image Journaling y otras características garantizan la integridad de la base de datos para la mayoría de los tipos de errores de hardware – incluidos los fallos de alimentación – lo que permite una rápida recuperación y minimiza las consecuencias para los usuarios.

Caché proporciona además opciones de configuración de alta disponibilidad para reducir en mayor medida o eliminar el impacto sobre los usuarios, entre ellas:

  • Clusters de recuperación de fallos
  • Servidores Shadow
  • ECP distribuido
Mirroring

El Mirroring, o creación de Bases de Datos Espejo, es una configuración de alta disponibilidad que duplica los datos en un disco aparte en tiempo real, con recuperación automática frente a fallos (failover).

Un Mirror de base de datos es una agrupación lógica de dos sistemas Caché. Al inicio, el Mirror designa de forma automática uno de estos dos sistemas físicamente independientes como sistema principal, mientras que el otro se convierte automáticamente en el sistema de respaldo o backup. La sincronización de las bases de datos con funciones de mirroring activadas, se realiza en tiempo real desde el elemento principal del failover hasta el de backup mediante un canal TCP. El sistema backup devuelve acuses de recibo de los datos copiados mediante un canal especial para ello. El acuse de recibo indica, entre otras cosas, hasta qué punto está actualizado el elemento de backup del failover.

Los clientes externos (enlaces de idiomas, clientes ODBC/JDBC/SQL, usuarios de conexión directa, etc.) se conectan con el mirror a través de su IP virtual (VIP, del inglés Virtual IP), que se especifica durante la configuración del mirroring. La IP virtual del Mirror queda automáticamente enlazada con una interfaz en el sistema principal del mirror. La configuración de una VIP para el Mirror es opcional. Si no se especifica, todos los clientes externos deberán conectarse directamente con la unidad principal en ejecución y conocer los elementos de la recuperación de fallos y su perfil actual dentro del mirror.

Si falla el sistema principal, el sistema de backup toma el control de forma automática. Cuando el mirror se configura de manera que los clientes inicien sesión mediante la VIP, éstos no saben qué elementos del mirror funcionan. La recuperación frente a fallos o failover es completamente transparente para los usuarios.

 

database-mirror-chart

Caché también puede actualizar varios elementos del mirror ASYNC (que suelen estar separados geográficamente), lo cual permite generar redundancia en el sistema y contribuye a la recuperación tras desastres. El failover hacia un elemento ASYNC no es automático.

Además, un elemento ASYNC puede ser actualizado por varios mirror, con lo cual se crea un almacén central de datos y se permite el uso de Business Intelligence en tiempo real utilizando todos los datos empresariales.

Las ventajas de Caché

Bases de datos blindadas: Caché Write-Image Journaling y otras características garantizan la integridad de la base de datos para la mayoría de los tipos de errores de hardware, incluidos los fallos de alimentación.

Configuraciones de alta disponibilidad: La utilización de mirroring, ECP, y/o clusters de recuperación de fallos permite la rápida recuperación después de los cortes de alimentación y minimizan o, en algunos casos eliminan, su impacto sobre los usuarios.

Alta disponibilidad a bajo coste: La base de datos Caché con Mirror no requieren grandes inversiones en hardware, asistencia, licencias de sistemas operativos o almacenamiento. Además, la base de datos Caché con Mirror es de fácil configuración y mantenimiento, con lo que se reducen los costes de administración.

Utilización de un sistema Mirror con ECP

Cuando se utilizan en un sistema Mirror, los servidores de aplicaciones basados en Enterprise Cache Protocol (ECP) disponen de información interna sobre los elementos del Mirror, incluido el elemento principal actual. Por lo tanto, los servidores de aplicaciones no se basan en la VIP del Mirror, sino que se conectan directamente con el sistema principal seleccionado.

Si el elemento principal del Mirror falla, los servidores de aplicaciones de ECP lo interpretarán como una condición de reinicio del servidor. Los servidores simplemente restablecerán sus conexiones con el nuevo elemento principal del failover y continuarán el proceso de su carga de trabajo en curso. Como mucho, los usuarios experimentarán sólo una breve pausa.

Clusters de recuperación de fallos

Utilizando hardware en clusters de recuperación de fallos (“failover”), los servidores de datos comparten acceso a los mismos discos, pero sólo uno ejecuta Caché de forma activa en un momento determinado. Si el servidor activo falla, Caché se inicia automáticamente en otro servidor, que asume las responsabilidades de proceso. A continuación, los usuarios pueden volver a iniciar sesión en el servidor nuevo.

Un servidor de datos de ECP se puede configurar como cluster de recuperación de fallos. Si se produce una caída del servidor de datos principal, el servidor de datos de respaldo lo sustituye.

Modelo de seguridad

Caché está certifcado para “Common Criteria EAL3”. El modelo de seguridad de Caché esta diseñado para el desarrollo de las aplicaciones en tres vías:

Security-model-chart

La seguridad de Caché se basa en la autenticación, la autorización, la auditoría y el cifrado de la base de datos. Caché proporciona estas funciones de seguridad a la vez que minimiza la carga en el rendimiento de las aplicaciones.

Autenticación

La autenticación es la manera en la que los usuarios demuestran a Caché que son quienes dicen ser. (Un “usuario” no tiene que ser necesariamente una persona. Podría ser, por ejemplo, un dispositivo de medida que genera datos, o una aplicación en ejecución en otro sistema que está conectado a Caché.) Caché tiene varios mecanismos de autenticación disponibles:

  • Kerberos: El medio de autenticación más seguro. El sistema de autenticación Kerberos proporciona en una red una sólida autenticación probada matemáticamente
  • LDAP: Caché admite la autenticación mediante Lightweight Directory Access Protocol (LDAP). En este caso, Caché se pone en contacto con un servidor LDAP para autenticar a los usuarios, basándose en su base de datos de usuarios y su información asociada para realizar la autenticación. El servidor LDAP también controla todos los aspectos de la gestión de contraseñas, las políticas de contraseñas, etc.
  • Contraseñas: Caché solicita al usuario una contraseña y compara un hash de ésta con el valor hash que ha almacenado.
  • Autenticación delegada: La autenticación delegada supone un medio de creación de mecanismos de autenticación personalizados. El desarrollador de aplicaciones controla por completo el contenido del código de autenticación delegado. Caché incluye una plantilla para crear código de autenticación personalizado.
  • Basada en el sistema operativo: La autenticación basada en el sistema operativo confía en que el sistema operativo ha verificado la identidad de cada usuario, y utiliza esa misma identificación para Caché.

También puede permitir a todos los usuarios conectarse a Caché sin autenticarse.

Caché incorpora compatibilidad con la autenticación de dos factores, lo cual exige que los usuarios verifiquen su identidad utilizando algo que saben y algo que tienen. Por ejemplo, cuando un usuario proporciona una contraseña (algo que sabe), las aplicaciones pueden enviar un mensaje de texto a su teléfono móvil (algo que tiene). El mensaje de texto indicaría un código de seguridad adicional que debería especificarse antes de que se concediera el acceso a la aplicación.

Caché admite el “single sign-on”, una sola identificación al inicio de sesión permitiendo la participación en una configuración de OpenAM.

Autorización

Cuando se autentica un usuario, la siguiente operación relacionada con la seguridad consiste en determinar lo que ese usuario puede hacer, ver o modificar. Esta concreción y el control del acceso son conocidos como autorización. La asignación y la gestión de privilegios suelen realizarse mediante el Portal de Gestión de Caché.

Recursos, permisos y privilegios

Walk-into-RectanglesEl objetivo principal de la seguridad es la protección de recursos: la información o las funciones en cualquier forma. Con Caché, los recursos pueden ser bases de datos, servicios, aplicaciones, herramientas e incluso acciones administrativas. El administrador del sistema concede acceso a estos elementos asignando permisos, como READ, WRITE o USE. La combinación de un recurso y un permiso asociado asignado son conocidos como un privilegio. Además de los recursos definidos por el sistema, el administrador de la seguridad puede crear recursos específicos de la aplicación y utilizar los mismos mecanismos para conceder y comprobar permisos.

Perfiles

Para mayor simplicidad, a los usuarios se les asignan generalmente uno o más perfiles o “roles” (por ejemplo, “TécnicoLab”, o “Nóminas”), y a continuación el administrador de seguridad asigna privilegios para un recurso concreto a esos perfiles en lugar de a individuos específicos. El usuario hereda todos los privilegios correspondientes a los perfiles a los que pertenece.

Perfiles asignados por aplicación

A menudo resulta útil para un usuario obtener privilegios adicionales temporalmente en lugar de tenerlos asignados de forma permanente. Por ejemplo, en lugar de que el administrador de seguridad asigne un extenso conjunto de privilegios a un usuario (como la capacidad de acceso y modificación de la base de datos de nóminas), es posible asignar al usuario únicamente el privilegio de acceso a la aplicación de nóminas, y la aplicación puede aumentar a continuación los privilegios del usuario mientras se esté utilizando.

Para llevar a cabo este aumento, hay que asignar los perfiles a las aplicaciones. Al acceder a la aplicación, el usuario adquiere temporalmente perfiles adicionales. Los perfiles adicionales pueden ser simplemente una lista que adquiere todo aquél autorizado a utilizar la aplicación, o pueden ser más personalizados, en función de los perfiles que ya tiene el usuario.

Esta característica resulta particularmente útil para las aplicaciones basadas en web. Tras la autenticación y la determinación de que el usuario está autorizado para utilizar la aplicación, el usuario adopta temporalmente los perfiles adicionales asignados a dicha aplicación durante el intervalo de tiempo que se accede a la página.

El administrador de seguridad también puede asignar a rutinas específicas la capacidad de realizar un aumento de perfiles para obtener los perfiles adicionales de las aplicaciones especificadas, después de pasar las pruebas de seguridad especificadas para el usuario. Este recurso está estrictamente controlado, y es el mecanismo por el que las aplicaciones que no son de web ejecutan el aumento de perfiles.

Auditoría

Muchas aplicaciones, especialmente aquellas que deben cumplir normativas legales como HIPPA o Sarbanes-Oxley, necesitan proporcionar una auditoría segura. En Caché, todos los eventos del sistema y de las aplicaciones se graban en un registro de “append-only”, que es compatible con cualquier herramienta de consulta o informe que utilice SQL.

Encriptación: Datos en reposo

Caché soporta dos formas de encriptación de la base de datos:

  • El administrador de seguridad puede especificar que uno o más ficheros CACHE.DAT (bases de datos) estén encriptados en el disco. A continuación se encripta todo el contenido de esos ficheros, incluidos los índices que contengan.
  • Los desarrolladores pueden utilizar funciones del sistema para encriptar/desencriptar los datos, que se pueden almacenar en la base de datos o transmitir. Esta característica se puede utilizar para cifrar datos confidenciales y protegerlos de otros usuarios que tengan acceso de lectura a la base de datos, pero no la clave

defecto, Caché cifra los datos con una implementación de AES (Advanced Encryption Standard – Estándar avanzado de cifrado), un algoritmo simétrico que da soporte a claves de 128, 192 o 256 bits. Las claves de cifrado se almacenan en una ubicación protegida de la memoria. Caché proporciona funcionalidad completa de gestión de claves.

El “journal” también se puede encriptar.

Encriptación: Datos en movimiento

PuzzleCaché admite el uso de SSL (Secure Sockets Layer – Capa de sockets seguros) y su sucesor, TLS (Transport Layer Security – Seguridad de la capa de transporte), para garantizar la seguridad de conexiones de varios tipos:

  • Cuando actúa como servidor, Caché acepta conexiones y establece el uso de SSL. Esto incluye las conexiones entre los destinos de duplicación de Caché y los orígenes de duplicación de Caché.
  • Cuando actúa como cliente, Caché puede conectarse con los servidores que requieren el uso
    de SSL.

En todos los casos, Caché utiliza lo que se denomina una configuración de SSL/TLS, que especifica las diversas características de una instancia de Caché como parte de una conexión SSL/TLS.

La sección “Caché y Servicios Web” contiene más información sobre la seguridad de los datos en movimiento.