1. Introducción
1.1 Uso de bases de datos distribuidas
1.1.1 Camino hacia NOSQL
1.2 NoSQL
1.2.1 Tipos de bases de datos NoSQL
1.2.1.1 Clave-Valor
1.2.1.2 Familia de Columnas
1.2.1.3 Documentos
1.2.1.4 Grafos
1.2.2 Distribución de las bases de datos en clusters
1.2.2.1 Réplica
1.2.2.2 Sharding
1.3 Elección de MongoDB
1.4 Organización del contenido
2. Trabajos realizados
2.1 Diseño de bases de datos relacionales distribuidas
2.1.1Replicación y consistencia
2.1.2 Estrategias para el manejo de actualizaciones
2.1.3 Fragmentación
2.1.4 Problema de asignación
2.2 Alternativas a MongoDB
2.2.1 Apache Casandra
2.2.2 Apache CouchDB
3. Mongo DB
3.1 Características de Mongo DB
3.1.1 Documentos
3.1.2 Colecciones
3.1.2.1 Objectid
3.1.2.1 Índices
3.2 Aspectos de bases de datos distribuidas abordados desde Mongo DB
3.2.1 Sharding
3.2.1.1 Shard Key
3.2.1.2 Distribución de Chunks
3.2.2 Sharded Cluster
3.2.2.1 Shard
3.2.2.2 Config Server
3.2.2.3 Mongos o Router
3.2.3. Réplica Set
3.2.3.1 Nodo primario
3.2.3.2 Nodos secundarios
3.2.3.3 Árbitro
4. Sucesión de experimentos, validaciones y análisis de resultados
4.1 Esquema centralizado
4.2 Esquema centralizado con réplicas
4.3 Esquema distribuido sobre 2 shards con réplicas
4.4 Esquema distribuido sobre 3 shards con réplicas
4.5 Carga de datos
4.6 Evaluar el tiempo de respuesta
4.7 Elección de clave en estructuras distribuidas
5. Implementación
5.2 Estructuras de prueba en un entorno local
5.2.1 Desarrollo de funcionalidades
5.2.2 Inserción de archivos
5.2.3 Validación de consistencia
Consultas para evaluar el tiempo de respuesta
Obtener todos los archivos que son de un tipo particular
Obtener un archivo específico por nombre
Obtener todos los archivos mayores a X bytes
Obtener todos los archivos que pertenezcan a un shard determinado
5.2.4 Registrar los tiempos de ejecución
5.2.5 Registrar el tamaño de las bases de datos
5.3 Periodicidad en la ejecución de consultas
5.4 Unificar funcionalidades en una única interfaz
5.5 Recopilación de datos para los estudios
5.6 Sobre arquitectura del cluster
5.6 Resumen de las herramientas desarrolladas y utilizadas
6. Resultados obtenidos y conclusiones
6.1 Estructura centralizada sin réplicas
6.2 Estructura centralizada con réplicas
6.2.1 Comparación entre estructuras centralizadas
6.3 Estructura distribuida con dos shards
6.4 Estructura distribuida con tres shards
6.4.1 Comparación entre estructuras distribuidas
6.5 Comparación entre estructuras centralizadas y distribuidas
6.5.1 Tiempos de consultas agrupados en subconjuntos
6.5.2 Peor rendimiento de búsqueda
6.5.3 Enfoque centralizado sin réplicas y distribuido sobre dos shards
6.5.4 Mejor rendimiento de búsqueda
6.5.5 Resultados sobre un único shard
7. Conclusiones y trabajos futuros
7.1 Conclusiones
7.2 Trabajos futuros
8. Bibliografía