recuperación de información sobre modelos de dominio - presentación jaiio

Post on 11-Jul-2015

1.002 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Julián Klas ­ jklas@fi.uba.ar

Recuperación de Información sobre Modelos de Dominio

Facultad de Ingeniería,Universidad de Buenos Aires

Recuperación de Información

¿Qué es? “el área de las Ciencias de la Computación que trata la representación, 

almacenamiento, organización y acceso a ítems de información” [Baeza99]

¿Cómo Funciona?el usuario ingresa su necesidad de información en lenguaje natural, el 

sistema entrega una lista priorizada de resultados relevantes

¿Cuáles son las principales variantes?Publico vs. Privado

Usuario Final vs. DesarrolloTexto vs. Objetos

2

Introducción y Antecedentes

Julián Klas ­ jklas@fi.uba.ar

Ejemplos de IR

3

Introducción y Antecedentes

Julián Klas ­ jklas@fi.uba.ar

Para Usuarios Finales, Público

Marketplace SearchWeb Search

Ejemplos de IR

Para Usuarios Finales, Privado

Julián Klas ­ jklas@fi.uba.ar 4

Introducción y Antecedentes

Personal Enteprise

Ejemplos de IR

5

Introducción y Antecedentes

Julián Klas ­ jklas@fi.uba.ar

Para Desarrolladores, sobre Texto

Ejemplos de IR

6

Introducción y Antecedentes

Julián Klas ­ jklas@fi.uba.ar

Para Desarrolladores, sobre Objetos

Domain Model Search

Propuesta

7

Introducción y Antecedentes

Julián Klas ­ jklas@fi.uba.ar

Para Desarrolladores, sobre Objetos

Resumen

¿De qué trata este trabajo?

• Es un análisis de requerimientos y alternativas para construir un

framework que resuelva problemas de recuperación de la

información sobre modelos de dominio

• La principal contribución de este artículo es el análisis de alternativas

para crear un framework reusable y extensible que permita crear un

motor de búsqueda para aplicaciones nuevas o existentes, a las

que se pude integrar como otros frameworks de presentación, acceso

a datos o remotización.8

Introducción y Antecedentes

Julián Klas ­ jklas@fi.uba.ar

Contexto

Domain Model“un modelo de objetos de un dominio que incorpora tanto comportamiento 

como datos” [Fowler02]

Object Relational Mapping“aislan las clases del dominio del esquema de la base de datos” [Fowler02]

Arquitecturas Enterprise

9

Introducción y Antecedentes

Julián Klas ­ jklas@fi.uba.ar

● transversales● 3 tier● RDBMS transaccionales● distribuidos ó clusterizados

● middlewares y contenedores● concurrencia● alto costo de desarrollo y 

mantenimiento

Análisis del Problema

Actividades de un Search Engine sobre Objetos

– Ranking y Relevancia

– Indexación

– Seguridad

– Técnicas de Matching

– User Feedback y Métricas

– Recuperación de Objetos y Caché

– Visualización

10

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar

Ranking y Relevancia

– Ranking Estructural• Ranking Estático: clases• Ranking Dinámico: objetos• Algoritmos tipo HITS, PageRank• Dependiente del negocio punto de extensión

– Ranking por Correlación con Query

– Técnicas de Matching• Stop Words, Stemming, Tesauros (sinonimia, corrección, Domain

WordNet)• Queremos Intercambiabilidad de Algoritmos

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar 11

Indexación

Indexación + Integración implica:

• Niveles de Independencia del Domain Model

• Proceso de indexación

• Reindexación

• Almacenamiento del Índice

12

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar

Indexación ­ Independencia del Modelo de Dominio

• Modelo de Dominio Dependiente

public class Customer extends SearchObject {

public boolean isIndexable() {...}

public SearchResult findObjects(String userQuery)throws IndexSearchException {...}

public void indexObject() throws IndexingException {...}}

13

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar

Indexación ­ Independencia del Modelo de Dominio

• Modelo de Dominio Semi Independiente

@Indexablepublic class Customer {

@IndexField(stemming=StemType.FULL_STEM, transform="customer-site transform")

private Site site;

@IndexField(stemming=StemType.FULL_STEM,lang="SPANISH")private String firstName;

@IndexFieldprivate String lastName;private String email;private String password;

}

14

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar

Indexación ­ Independencia del Modelo de Dominio

• Modelo de Dominio Independiente

<domain-model-search>

<indexable class=“Customer”>

<indexField name=“site” stemming=“FULL_STEM” transform=“cust-site”/>

<indexField name=“firstName” stemming=“FULL_STEM” lang=“SPANISH”/>

<indexField name=“lastName”/>

</indexable>

</domain-model-search>

15

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar

Indexación: proceso de indexación

• Indexación Online

16

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar

Indexación: proceso de indexación

• Indexación Semi Online

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar 17

Indexación: proceso de indexación

• Indexación Offline

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar 18

Indexación: Reindexación

– Causada por:

• Pérdida accidental de datos

• Errores / Bugs

– Registro de Objetos Indexados

• Para reconstruir el índice

• Almacenado en DBMS ó Archivos

– Indexación

• Online / Semi-Online: requieren proceso ad hoc– No hay contexto de la transacción de negocio

• Offline: muy similar a la indexación original

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar 19

Indexación: Almacenamiento del Índice

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar

Base de Datos Archivos Índice Mapeado

+ APIs Existentes + Performance+ Hereda las ventajas de los mapeadores

+ Almacenamiento físico implementado y optimizado

+ Disponibilidad- Hereda desventajas, en particular la performance

+ Resuelve concurrencia mediante propiedades ACID

+ Sin APIs externas, disponible desde cualquier lenguaje

- Dificil de optimizar,cambiar almacenamiento, etc.

- Overhead de propiedades ACID

- Solución de bajo nivel costo en desarrollo/ pruebas

- Mantenimiento y tunning por personas especializadas

- Puede derivar en soluciones suboptimas, peor que un RDBMS

- Puede ser costoso- Concurrencia en manos del desarrollador

20

Seguridad

– Indexación de Datos SensiblesEj: información financiera

– Visualización de Datos Sensibles• Roles y Permisos

– Seguridad en Índices• Aspecto de Infraestructura• Transversal a la empresa – fuera de alcance

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar 21

Recuperación de Objetos y CachéAnálisis del Problema

Julián Klas ­ jklas@fi.uba.ar 22

● Búsqueda● Caché de Listados● Caché del Índice Invertido● Nivel de concurrencia posiblemente no acotado

● Indexación● Para ranking estructural● Se puede usar el del ORM● Nivel de concurrencia posiblemente acotado

● Ambientes clusterizados: cachés remotos

● Conclusión: arquitectura abierta a estas variantes

VisualizaciónAnálisis del Problema

Julián Klas ­ jklas@fi.uba.ar 23

• Objetivo: interfaz clara para transformar listado lógico en representación concreta

• Implementaciones estándar para interoperar (XML) y visualizar (HTML)

• Las vistas estándar tienen en cuenta aspectos de seguridad

• Implementaciones avanzadas: por cuenta del usuario

VisualizaciónAnálisis del Problema

Julián Klas ­ jklas@fi.uba.ar 24

• Metadatos

<search-visualization><view type=“html” default=“yes”>

<resultClass name=“Person” translator=“com.mydomain.HtmlPersonTranslator”/><resultClass default=“yes” translator=“com.framework.ToStringTranslator”/>

</view><view type=“xml”>

<resultClass name=“Person” translator=“com.mydomain.XmlPersonTranslator”/><resultClass default=“yes” translator=“com.framework.ReflectionTranslator”/>

</view></search-visualization>

Framework

• Framework vs. Librería– Un framework es extensible, una librería es adaptable– Framework caja negra vs. Blanca– Podemos usar técnicas como Inyección de Dependencias e Inversión de Control

• Inyección de Dependencias– Tipos de Indexación: online, semi-online, offline– Interceptor según ORM– DAO– Rankers

• Inversión del Control:– Durante transacciones de negocio: el framework se llama cuando es necesario– Durante indexación, búsqueda y visualización: el framework llama al usuario

cuando es necesario

25

Análisis del Problema

Julián Klas ­ jklas@fi.uba.ar

ConclusionesConclusiones y Trabajos Futuros

Julián Klas ­ jklas@fi.uba.ar 26

• Clasificamos los sistemas de IR, entendiendo qué resuelve cada uno

• Explicamos y demarcamos el problema de IR sobre objetos

• Analizamos actividades y requerimientos para el framework

• Profundizamos en alternativas de las actividades más importantes

• Próximos pasos:● Resultados sobre distintos Domain Models● Evaluar adecuación de los distintos modelos de IR● Verificar extensibilidad por el usuario (ej: scoring, visualización)

Recuperación de Informaciónsobre Modelos de Dominio

Preguntas

Julián Klas ­ jklas@fi.uba.ar 27

¿Preguntas?

Anexo I

Apache Lucene: search engine open source más difundido 

¿Por qué no usar Lucene para hacer IR sobre objetos?• Según Compass, si bien Lucene da buenos resultados y es rápido:

• Dificil de integrar• APIs de bajo nivel• No transaccional• Otros: no soporta búsquedas sobre todos los campos del documento, no indexa en 

RDBMS, updates dificiles de implementar (generan duplicados)

• Según Hibernate Search:• Structural Mismatch: traslado de objetos a índices• Duplication Mismatch: sincronización objetos­índice• API Mismatch: recuperar objetos como en el ORM

28

Introducción y Antecedentes

Julián Klas ­ jklas@fi.uba.ar

Anexo II

SÓLO SIRVE PARA DOMAIN MODELS?Sirve para otros, la idea es poder indexar el modelo de objetos y aprovechar su 

estructura

QUÉ TIENE DE NUEVO RESPECTO DE HIBERNATE SEARCH, COMPASS, ETC?

Haría falta un experto en hibernate search y compass para saber si cubren todos estos puntos

Entendemos que lucene no está pensado para objetos, no habría que haber empezado por ahí (es un hack)

No usamos lucene ni tenemos dependencias con un ORM (caso hibernate).

Este trabajo es el análisis de qué hace falta, las variantes y consecuencias, no se basa en qué hicieron estas dos herramientas, la comparativa vendrá en la tesis

29

Introducción y Antecedentes

Julián Klas ­ jklas@fi.uba.ar

top related