¿Qué es base de datos? Alguna vez fue simple. La base de datos era un moderno Bob Cratchit poniendo datos en tablas hechas de columnas muy rectas con una fila por entrada, y de largos e interminables rectángulos que se extendían hasta el futuro.
La base de datos relacional ha sido el fundamento de la computación moderna. La gran mayoría de los sitios web son solo un puñado de lápiz labial CSS pintado encima de SQL. Todo lo que nos hace especiales es solo otra fila en la gran tabla de la vida.
La aventura de amor con la gran matriz de bits se está desvaneciendo poco a poco, a medida que los desarrolladores se dan cuenta que no todo encaja en una simple tabla. Dado que los desarrolladores son inteligentes y están obsesionados en encontrar soluciones para cada necesidad, han comenzado a crear nuevos y mejores lugares para almacenar la información. Los últimos años han traído una explosión de otros mecanismos para almacenar nuestros datos.
¿Son estas nuevas opciones de bases de datos maravillosas? ¿Los datos tienen que encajar en alguna gran matriz para ser una base de datos? A algunos les gusta usar la palabra “almacén de datos” para diferenciar los mecanismos modernos, porque la palabra “base de datos” está estrechamente vinculada en nuestra mente con la estructura tubular antigua. Le dejaremos eso a los filósofos. Los datos entran y las respuestas salen.
Aquí hay ocho maneras en las que la base de datos está siendo reinventada.
Computación GPU
Hace mucho tiempo, las tarjetas de video se construían para dibujar escenas elaboradas para los juegos de niños, pero ahora las llamadas unidades de procesamiento de gráficos están haciendo mucho procesamiento no gráfico. La búsqueda a través de datos es solo una de las mejores operaciones no gráficas que deben abordar. Y ¿por qué no? Abrirse paso entre las interminables pilas de datos buscando una pareja, es una operación inherentemente paralela hecha de muchos trabajos rudimentarios (probando la igualdad) repetidos millones de veces. Por lo tanto, es bastante sencillo pasar el trabajo a los miles de procesadores en el GPU.
Las mayores victorias no están en responder cada consulta (que obviamente son mucho más rápidas), sino en el trabajo de preparación, porque hay poca necesidad de pre procesamiento. Muchas bases de datos ahorran tiempo manteniendo un índice, que es efectivamente un resultado precalculado de cada búsqueda posible. Si este índice es destruido o dañado, reconstruirlo puede tardar horas, días o incluso meses. Sin embargo, si los datos pueden caber dentro de la memoria del GPU, por lo general podrá seguir sin el índice. Si los datos están cambiando rápidamente y la mayor parte del índice no se utiliza nunca, saltarse el pre procesamiento puede ser muy eficaz.
Revise MapD,Kineta, Brytlyt y otros para ver si es que sus datos y búsquedas pueden ser acelerados.
Memoria no volátil (NVRAM)
Los programadores novatos hace cincuenta años la tenían fácil. No tenían que hacer malabares con los datos entre la RAM y el disco con protocolos elaborados para asegurar la consistencia. Eso se debe a que la memoria en ese entonces tenía núcleo de hierro, y no se borraba cuando se apagaba la energía. Esos buenos tiempos podrían regresar pronto, porque los fabricantes de chips están discutiendo para reemplazar la RAM con NVRAM o memoria no volátil.
Este es un gran cambio de juego para los programadores de bases de datos, porque uno de sus mayores desafíos (e incluso su mayor razón para vivir) está desapareciendo. Algunos sugieren que las bases de datos pueden ser mucho más rápidas, porque la semántica de las transacciones puede ser más sencilla. Otros tienen la idea de construir el registro de recuperación después de que los datos sean escritos en los medios, no antes.
Nadie sabe qué pasará. ¿La gente seguirá una base de datos, aunque no necesiten un registro permanente o la búsqueda y la indexación los hará volver? Todos los algoritmos y arquitecturas tienen que ser repensadas. Sabremos la mejor manera de usar NVRAM en una década aproximadamente.
Amplíe SQL
Cuando el movimiento de NoSQL comenzó, una de las principales características era la capacidad de dispersar el almacenamiento de sus datos a través de múltiples nodos. Las bases de datos NoSQL como Cassandra y MongoDB hicieron parecer que conseguir todas las lindas características del almacenamiento de gran escala significaba abandonar el cómodo mundo de SQL.
En la realidad no necesita haber una compensación. Aunque los primeros experimentos de bases de datos de gran escala eran fáciles de crear porque dejaban atrás todo el bagaje de SQL, no hay razón por la cual éste no pueda funcionar bien en múltiples máquinas operando a gran escala. De hecho, empresas como Oracle han venido haciéndolo por años.
Las nuevas bases de datos a gran escala le permiten usar todo su conocimiento y conveniencia de SQL con un conjunto de datos distribuidos en un gran clúster. CockroachDB, por ejemplo, ofrece un motor de consulta SQL estándar que tiene acceso a los datos replicados en múltiples nodos, todos con garantías de ACID. Sí, pagará por algunos de estos apoyos para la coherencia de los datos, pero tal vez menos de lo que esperaba.
Si la coherencia garantizada es importante para su trabajo, empiece revisando CockroachDB, Google Cloud Spanner, Clustrix, Azure SQL, y NuoDB.
Bases de datos geoespaciales
Las bases de datos tradicionales están hechas para conjuntos de datos unidimensionales, no las dos coordenadas dimensionales de la geografía. Puede falsificarlo y usar una base de datos estándar para realizar tareas básicas con coordenadas geográficas. Si pega la latitud y longitud en columnas separadas, no es difícil buscar las filas que caen dentro de un cuadro definido por un rango de latitudes y longitudes. Sin embargo, una vez que quiera ir más allá, las consultas SQL estándar no serán efectivas.
Las bases de datos geoespaciales añaden algunas funciones adicionales que hacen que la búsqueda, clasificación e intersección sean mucho más fáciles en el espacio bidimensional. Los índices espaciales, por ejemplo, usualmente funcionan añadiendo una cuadrícula encima del espacio de coordenadas para hacer que sea mucho más rápido buscar las filas adyacentes en mundos bidimensionales y tridimensionales.
Estos índices hacen posible escribir consultas con operaciones como “contener”, “superponer”, e incluso “tocar” con conjuntos definidos por polígonos. Todo esto hace que el razonamiento sobre el mundo real sea mucho más eficiente.
Revise Neo4j Spatial, GeoMesa, MapD, y PostGIS en busca de algunos buenos lugares para comenzar.
Bases de datos gráficas
Las tablas son un buen repositorio para muchas estructuras de datos, pero no hacen un muy buen trabajo al momento de modelar una gran estructura de datos emergentes que ha impulsado los últimos diez años de evolución de la Internet: la red. A medida que el llamado “gráfico social” explota, estamos llenando nuestra computadora con más y más nodos con enlaces entre ellos, y las conexiones entre estos son a menudo más importantes que los datos en ellos. De hecho, almacenar y recuperar un enlace entre un par de nodos es fácil de hacer en una base de datos relacional clásica, pero las consultas más complicadas se hacen imposibles. ¿Bob está a dos o tres pasos de Chris en la red de amistad? ¿Mary está saliendo con el ex de una de sus amigas?
Las bases de datos gráficas hacen que consultas como estas sean más fáciles de ejecutar. No hay una búsqueda sin fin de tablas porque la consulta sabe cómo buscar en el barrio especificado por los enlaces. Herramientas como Neo4J, OrientDB, y DataStax son solo algunas de las pocas opciones que pueden ser contadas con los dedos de las manos y de los pies. Estas tienen sus propios lenguajes de consulta también.
Bases de datos en la nube
Uno de los principales cambios radica en la forma en la que compramos el software de base de datos. En el pasado, comprábamos nuestras propias máquinas y firmábamos acuerdos de licencia para ejecutar el software en ellas. Ahora las empresas de nube están ofreciendo servicios que almacenan blobs de datos en algún lugar que no podemos ni ver ni tocar. Lo único que nos dicen es que los datos van a estar ahí para cuando los queramos.
Las ventajas son evidentes. No hay necesidad de mantener el servidor que la sostiene ni de preocuparse por la concesión de licencias, la configuración o instalación de parches. Otro se ocupa de todo ese quebradero de cabeza. La solución es más barata también -especialmente si no tiene una tonelada de datos que almacenar. Los servicios generalmente cobran por byte.
Sin embargo, los peligros, si es que hay alguno, están en las sombras. ¿Alguien más tiene acceso a los datos? ¿El servidor está protegido de las sobretensiones eléctricas, las tormentas o las inundaciones? ¿Los datos tienen una copia de seguridad en una ubicación externa confiable? Necesita confiar totalmente en el proveedor de nube.
Los principales proveedores de servicios en la nube, tales como Google, Microsoft, y Amazon ofrecen una larga lista de servicios de bases de datos. Actualmente, Oracle, MongoDB, y DataStax también hacen que sus bases de datos estén disponibles en la nube.
Inteligencia Artificial (AI)
Algunos dicen que la inteligencia artificial es solo un término para la última generación de investigación que está saliendo de los laboratorios y yendo a producción. Si es así, hay una serie de nuevos productos y soluciones adornados con palabras de moda, tales como “aprendizaje automático”, “redes neuronales” o “aprendizaje profundo”. Pueden no parecer una base de datos, pero las llena de datos y les hace preguntas. ¿Por qué no? La buena noticia de las soluciones de inteligencia artificial es que no tiene que saber lo que está buscando. Puede simplemente agitar su mano y pedir algo nebuloso como la “más interesante” o “más cercana”. No hay necesidad de la clave correcta, el número de referencia infernal que los del servicio al cliente siempre le piden que escriba.
La mala noticia es que no sabrá si obtuvo la respuesta correcta, debido a que no especificó con precisión la pregunta. ¿Esa publicación en el blog es realmente la más interesante? El más grande secreto del éxito de Google es que no hay una respuesta correcta absoluta. Si está en el estadio, nadie se puede quejar.
La lista de las herramientas de aprendizaje automático es demasiado larga. Siempre puede preguntarle a su motor de búsqueda favorito por la AI “más interesante”, o consultar nuestros artículos sobre el tema.
Blockchain
La palabra blockchain puede estar enredada con unas complicadas economía y política de Bitcoin, pero debajo de toda esa charla sobre el dinero, hay un almacén de datos distribuidos sumamente estable y práctico. Todos tienen la oportunidad de actualizar los datos y todos llegan a compartir la respuesta. La gran emoción es el hecho de que todos compartan las mismas respuestas. Es perfecto para los negocios que son frenemies.
Algunos desarrolladores llevan esto aún más lejos y hablan sobre los “contratos inteligentes”, que es otra manera de decir que los bits en la base de datos son lo suficientemente confiables como para que la gente base las cuestiones legales, tales como la propiedad, sobre ellos. Eso no lo puede hacer con una base de datos regular, que puede ser modificada por cualquiera con privilegios administrativos.
Sin embargo, hay puntos débiles. Cada usuario debe mantener una clave de cifrado, porque todas las transacciones deben ser firmadas de manera digital. Si la pierde o se la olvida, los datos en esas filas serán congelados para siempre; y si le roban la clave, no se sabe. El blockchain no es perfecto, pero es mucho más confiable que el modelo estándar.
R3, Ripple e IBM son solo tres de los muchos competidores explorando ese espacio. Muchos de los principales bancos tienen sus propios proyectos internos. Además, están las empresas como Bitcoin o Altcoin, las cuales también son una gran parte de este ecosistema.
-Peter Wayner, InfoWorld (EE.UU.)