Índices Distribuidos
Aunque
existen muy buenos algoritmos de indexación, realizar todo su proceso
para la Web, por ejemplo, en una simple maquina puede ser
demasiado pesado y tomaría gran cantidad de tiempo. Por esta
razón es que más frecuentemente se utilizan índices distribuidos, que
permiten su creación y ejecución entre varias maquinas. Para este fin
los clusters son especialmente populares ya que son un
conjunto de maquinas que permiten cooperación entre procesadores sin
causar congestión y se puede utilizar la memoria RAM de todas como una
única memoria principal distribuida [1].
Para la evaluación de consultas, su procesamiento debe distribuirse
entre las diferentes maquinas. Sin embargo pese a que el trabajo se
reparte bien la cantidad de consultas respondida por segundo
(throughput) no es tan escalable y el tiempo de respuesta puede verse
un poco afectado [1]. Pero como dijimos antes sería muy difícil
ejecutar todo en una sola maquina, en especial para efectos de creación.
A continuación se explicarán algunos métodos para la creación de índices distribuidos:
El primer método consiste en los siguientes pasos [1]:
- Se divide la colección entre todas las maquinas.
- Cada maquina construye un subíndice local.
- Luego cada máquina se asocia con otra, de modo que en un punto una sola maquina tiene el índice completo.
- Esta maquina principal es la que distribuye el vocabulario entre las restantes.
- Finalmente todo el índice es grabado en un único disco duro para lograr un índice centralizado.
Creación de índice distribuido. Tomado de [1]
El segundo método es llamado MapReduce, y se basa en la idea de dividir el trabajo en pequeños fragmentos, de modo que se procesen rápido y que en caso de que alguna maquina falle su fragmento pueda ser fácilmente asignado a otra máquina.