El mundo de los datos puede volverse muy complejo, muy rápido. En términos prácticos, sin embargo, es justo decir que la mayoría de los proyectos pueden ser servidos con éxito por uno de los dos modelos de base de datos: relacional (SQL) y NoSQL.
Bases de datos relacionales
Si necesita organizar sus datos de manera que se defina cuidadosamente la forma en que las diversas categorías de información se relacionan entre sí, entonces lo que busca es una base de datos relacional. Piense en ello en términos de una empresa que, por ejemplo, debe administrar a sus empleados en el contexto de los trabajos que hacen, la forma en que se les paga y el estado de su seguro médico. Los datos relacionados con cada empleado aparecen en cada una de esas categorías pero, al mismo tiempo, pueden no ser accesibles a otros usuarios más allá de lo que sea necesario individualmente.
Las bases de datos relacionales a menudo son manejadas por un sabor u otro del estándar SQL. SQL significa Lenguaje de consulta estructurado , y la parte «estructurada» de eso cuenta la mayor parte de la historia. Una base de datos de tipo SQL (entre cuyos ejemplos principales se incluyen Oracle, MySQL, PostresSQL, el servidor SQL de Microsoft y, más recientemente, Aurora de Amazon) se compone de tablas , que, a su vez, contienen registros (o, como algunos los llaman, filas ). Los registros están formados por valores individuales conocidos como campos . Así pues, el contenido de una base de datos de información de clientes podría representarse de esta manera:
IDNameAddressCity# de compras1John Doe123 Any St.Yourtown52Jane Smith321 Yna Ave.Hertown2
En este caso, la base de datos tiene registros identificados con los números 1 y 2, y cada registro contiene campos compuestos por un nombre, una dirección y un número de compras.
Tal vez el principal beneficio de este tipo de estructura sólida es que permite altos niveles de previsibilidad y fiabilidad, porque se pueden aplicar normas cuidadosamente definidas a todas las transacciones que afectan a sus datos. Por ejemplo, se pueden aplicar restricciones a la forma en que los usuarios de una aplicación pueden acceder a la base de datos, para garantizar que dos usuarios no intenten escribir cambios en un solo registro a la vez (lo que podría dar lugar a la corrupción de los datos).
Aquí hay un ejemplo de cómo puede funcionar a veces. Echa un vistazo a la página del manual de perspectivas ocupacionales de la Oficina de Estadísticas Laborales del gobierno de los EE.UU. para administradores de redes y sistemas informáticos. Entre el contenido que se muestra en cada una de las nueve pestañas de la página, hay bastante texto. Pero sospecho que muy poco fue agregado manualmente a esta página por un ser humano.
Lo más probable es que la base de datos del servidor BLS contenga terabytes de datos en bruto dentro de los cuales se puede encontrar información estructurada relacionada con cada una de las muchas miles de ocupaciones incluidas. Esos datos probablemente están organizados por categoría de información («Resumen», «Entorno de trabajo», etc.). Cuando solicité esta página desde el menú del BLS (o a través de un motor de búsqueda en Internet), el servidor web del BLS pudo haber solicitado los datos en bruto relevantes de la base de datos y los organizó dinámicamente en la página de la manera que usted ve.
Por supuesto, hay muchas más formas en que un sitio web puede hacer uso del acceso dinámico a un motor de base de datos instalado en la parte trasera, pero eso fue una buena ilustración.
Bases de datos NoSQL
Los tiempos cambian. En todos los segmentos del mundo de la informática, los datos se producen, consumen y analizan en volúmenes y a velocidades que no se habían previsto cuando se diseñó la primera base de datos relacional hace más de una generación. Imagine, por ejemplo, que está construyendo un negocio mayorista que necesita manejar descripciones de productos e información de inventario constantemente cambiantes para decenas de miles de artículos; esos datos, a su vez, deben integrarse con las operaciones de ventas, envío y servicio al cliente.
En tal caso, es probable que quieras usar una base de datos NoSQL (como la DynamoDB de AWS). Las relaciones altamente flexibles entre los elementos de datos NoSQL permiten una integración mucho más sencilla de los datos almacenados en múltiples clientes y en diferentes formatos. Esto hace posible acomodar fácilmente fuentes de datos de rápido crecimiento.
A pesar de lo que se pueda pensar, algunas personas argumentan que NoSQL no significa No SQL o No SQL , sino más bien para No Sólo SQL . Esto se debe a que estas bases de datos a veces pueden soportar operaciones de tipo SQL. En otras palabras, a veces se puede engañar a una base de datos NoSQL para que proporcione una funcionalidad similar a la que se podría esperar de una base de datos relacional.
Si desea obtener una visión más completa de NoSQL y de cómo encaja en el amplio espectro de modelos de bases de datos, el documento de AWS «What Is NoSQL?» debería serle útil: http://aws.amazon.com/nosql.