Compartir
Contenidos contratados por la marca que se menciona

Azure y Lucene

Azure y Lucene
Guardar
1 Comentarios
Publicidad
\"The \"Prueba \"Conviértete

Una plataforma de servicio de enorme capacidad y alta disponibilidad como es Azure, es ideal para acoger aplicaciones de almacenamiento masivo de datos. Azure pone a disposición de los programadores una base de datos relacional como SQLAzure, pero también una base de datos NoSQL llamada Tables muy útil para almacenar información estructurada pero que no se adapta necesariamente a ningún esquema. Por supuesto ofrece almacenamiento de ficheros, llamada Blobs, con versiones tanto para streaming como para accesos directos, Blocks y Pages en terminología Azure.

Desde luego son grandes opciones para almacenar datos ¿falta algo? Pues sí. Falta una herramienta potente y barata de indexación de enormes cantidades de contenido, virtualmente de cualquier contenido, documentos Word, pdf, html, csv…. Es verdad que SQLAzure dispone de funcionalidad full text indexing pero es a costa de almacenar en el propio SQL todo el contenido, y debo recordar el mega de SQL es sensiblemente más caro que el mega de Blobs, por tanto debemos encontrar una alternativa.

Apache Lucene

Esa alternativa no es otra que Lucene, un indexador open-source incubado por Apache que proporciona funcionalidades de búsqueda textual sobre ingentes cantidades de datos. Para Lucene la unidad básica de información es el Documento, que se define como un conjunto de campos definidos como un par clave-valor. Esta estructura tan flexible es la que le permite aceptar información proveniente de cualquier fuente.

Los documentos creados por Lucene se envían a un Indexador el cual los almacena en un Directorio. Este directorio es una abstracción que permite distintas implementaciones, la más inmediata se sirve de la RAM local del indexador, nos podemos imaginar la velocidad, pero también la volatilidad… En Azure disponemos de dos opciones para almacenar el directorio de Lucene, Azure CloudDrive y Azure Blob Storage. En el primer caso el directorio se almacenará en un disco virtual VHD en blobs de tipo page, mientras que el segundo usará directamente el almacenamiento Blob Blocks. Esta diferencia es importante porque el directorio no es más que un conjunto de ficheros enormes llamados segmentos, y garantizar el acceso concurrente a esos ficheros no es inmediato. En el caso de CloudDrive solo podríamos disponer de un Rol atacando al directorio, mermando por tanto la escalabilidad del sistema. En cambio Blob Storage es perfecto para los requerimientos de Lucene.

¿Que necesitamos para poder usar Lucene en Azure?

Lo primero será disponer del API para .Net de Lucene, que se puede descargar en el sitio de Lucene.Net. Además de ese API necesitaremos una implementación del directorio de Lucene para Azure, llamado Azure Library for Lucene.net. Su uso en C# es sencillo, y puede simplificarse más usando utilidades como LuceneWrap pero en cualquier caso requerirá comprender los conceptos esenciales de Lucene que aparecen en los siguientes diagramas.

En primer lugar se muestra como se almacenan y relacionan jerárquicamente los datos de Lucene en Azure.

Windows Azure Lucene Arquitectura

A continuación vemos como la estructura de un documento Lucene se compone de campos, que tanto pueden ser índices como campos de meramente informativos, si se desea usar Lucene como almacenamiento único.

Windows Azure Lucene Estructura

Para finalizar vemos como sería un flujo típico de datos entre todos los servicios involucrados en una solución Azure que almacene sus índices en Lucene.

Windows Azure Lucene Flujo

Podemos concluir por tanto recomendando Lucene como un potente indexador de ficheros y datos estructurados que combinado con la escalabilidad y solvencia de Azure permitirá el desarrollo y despliegue de aplicaciones con enormes necesidades de procesado de datos.

Publicidad

También te puede gustar

Ver más artículos