¡Hola! Avanzamos en nuestro curso. Hemos visto las caracterÃsticas más significativas que diferencian los repositorios NoSQL de los sistemas de bases de datos tradicionales. Aspectos como el modelo de datos y las estrategias de disponibilidad y escalabilidad han marcado el camino que hemos recorrido. En este módulo, nos vamos a ocupar en detalle de dos de las familias NoSQL. Recordemos el mapa que hemos construido a partir de lo que estos movimientos tecnológicos nos han ofrecido en poco más de una década de mucha euforia de desarrollo, colaboración y soluciones impactantes. Como hemos visto, a problemas diferentes, soluciones apropiadas y diferentes. En particular, hay dos grandes caracterÃsticas que diferencian las familias, como se les ha llamado, y diferenciado con el tiempo y la madurez que han alcanzado. Estas son la escalabilidad y la capacidad de manejo de datos más o menos estructurados. Suelen ser caracterÃsticas que generan gran tensión tecnológica. Es decir, entre más simple el modelo, más fácil de escalar. Entre más complejo es aquello que podemos modelar, sucede que los productos escalan un poco menos. Recordemos, la escalabilidad la concebimos en términos de la cantidad de datos que son capaces de manejar en un momento dado. Por ello, cuando son buenos escalando, se les relaciona con mayor frecuencia con Big Data. Sin embargo, están listos para manejar también lo que llamarÃamos Small Data, datos que no necesariamente son tremendamente voluminosos o que no cambian de forma significante en el tiempo, o que no se generan a velocidades particularmente altas. En el módulo anterior, hemos visto cómo estos productos desarrollan estrategias propias para lidiar con la cantidad de datos y su disponibilidad. Las caracterÃsticas de coherencia e integridad de los datos, que fueron tan significantes en el desarrollo relacional, en estos nuevos contextos dejaron de ser exigentes. A veces, realmente inexistentes. Pensemos en comentarios a pelÃculas, productos o reseñas noticiosas. ¿Qué significarÃa correcto o coherente? Hemos visto madurar otros modelos de satisfacción con respecto a los datos. La disponibilidad de ellos es crÃtica. Se le privilegia sobre otros criterios. Asimismo, es crÃtica la flexibilidad que pueden ofrecer en los modelos de datos que manejan. Vamos a desarrollar en algún detalle cada una de las cuatro grandes familias. En este viaje veremos elementos conceptuales, prácticos y de mercado. Recordemos, como se han desarrollado de manera simultánea y en función de querer solucionar problemas, no hay una manera única de encontrarlos o entenderlos. Muchos productos resultan teniendo elementos de una o varias familias. Lo importante es saber reconocer esas caracterÃsticas y aprovecharlas al máximo en nuestras soluciones y propuestas de diseño. En este, el módulo tres, estudiaremos en detalle dos de las familias. Iniciaremos por la familia Key Value, en español llave-valor. Como la podemos ver en la gráfica, es la que mayor escalabilidad nos ofrece y el modelo más simple que encontramos. Posteriormente, trabajaremos en la familia de productos orientados a columnas, los repositorios Wide-Column, como se les conoce en la industria. Nos ofrece algo de estructuración de los datos, siguen siendo muy escalables y, como es natural, responden a otras necesidades. Para cada una de las dos familias de productos restantes, dedicaremos el módulo cuatro del curso, que tiene una estructura muy similar a ésta. Para cada familia, tendremos las siguientes actividades. Iniciamos con una presentación de sus caracterÃsticas más significantes, asà como su relevancia en el mercado. Luego tenemos una actividad práctica, mediante la cual desarrollamos los objetivos principales del módulo: conocer de primera mano cómo utilizar estos productos, cómo se puede materializar un modelo de datos en cada caso, cómo se inserta en una solución computacional sencilla de ejemplo. En cada caso, trabajamos un caso de estudio sencillo y sobre un conjunto de datos real y apropiado para ser usado con cada tecnologÃa. Encontramos un ejemplo y también un ejercicio que hace parte del proyecto del curso. Se espera que los participantes revisen cada uno de los ejemplos, desarrollen el ejercicio propuesto, utilizando el entorno computacional ofrecido y los datos indicados. Los retos prácticos suponen una habilidad básica de programación y están propuestos en Python. Utilizaremos una infraestructura computacional que está lista para ustedes, con las configuraciones necesarias para ser utilizadas en sus máquinas locales. ¡Manos a la obra! Iniciamos este viaje por las dos primeras familias, la práctica con ellas y el entender las diferencias a partir de los ejercicios y los datos.