En Amazon trabajé con un montón de código. La mayor parte del código que trabajé fue código que nadie entendía realmente. Estaba plagado de manejo de casos especiales que no se entendía bien porque era una acumulación de parches rápidos durante un largo período de tiempo. Si querías entender completamente el efecto de un cambio que estabas haciendo, no tenías suerte. En esencia, se vio obligado a agregar a la acreción.
También trabajé con una gran cantidad de datos. La estructura de las tablas en SQL hizo una excelente documentación a largo plazo para los datos. La base de datos era relativamente fácil de trabajar directamente, y la estructura de los datos tenía sentido. Había personas cuyo trabajo era administrar la estructura y la integridad de los datos.
Me temo que una base de datos NoSQL, con su falta de estructura bien documentada, adquirirá lentamente todas las cualidades malvadas del código que trabajé. Terminaría lleno de datos de estructuras antiguas que ya nadie entendía, y se convertiría en un vasto mosaico de basura en su mayor parte inútil.
Veo los principales beneficios de las bases de datos SQL como la documentación forzada que requiere el mantenimiento de la estructura de la base de datos y las reglas de coherencia. Esos beneficios no tienen una medida fácil a corto plazo, como la velocidad de una consulta o la coherencia transaccional. Son beneficios a largo plazo que afectan la utilidad de sus datos durante un período prolongado de tiempo.
Como segundo punto relacionado, me resulta más útil, al utilizar ORM y similares, mapear mis datos y luego decidir cómo se traducirán en objetos en la aplicación que estoy escribiendo. Los datos y sus relaciones representan una estructura de archivo a largo plazo que puede ser utilizada para una variedad de propósitos.
La estructura de las relaciones de objeto en la aplicación están ahí para los propósitos de esa aplicación. Un conjunto dado de datos representados en tablas SQL y restricciones de relación tendrá muchos posibles modelos de objetos que lo representen en una aplicación, y cada uno de esos modelos de objetos reflejará los objetivos de esa aplicación en particular. Pero los datos y su estructura existen independientemente de cualquier uso efímero dado que pueda hacerse de ellos.
Veo los argumentos que las personas hacen acerca de 'informar' como argumentos que las diferentes aplicaciones pueden ver útilmente el mismo conjunto de datos de maneras muy diferentes.
Personalmente, creo que SQL es un buen modelo para usar directamente para datos de archivo, datos modificados con poca frecuencia o datos con requisitos de consistencia extremadamente altos.Y creo que seguiré usando el álgebra relacional para definir la estructura general de mis datos, incluso si la estoy almacenando en una base de datos NoSQL. Y no cambiaré la estructura de los datos en la base de datos NoSQL sin primero modificar la estructura relacional que la describe. Esto me permitirá mapear mis bases de datos NoSQL a SQL, de modo que aún puedo usar SQL para almacenamiento y almacenamiento a largo plazo y me obligo a mantener las estructuras de datos en una forma bien documentada.
Hacer las cosas de esta manera también me ayudará cuando tenga que extraer datos de la base de datos NoSQL para utilizarlos en aplicaciones que no se previeron cuando se creó la base de datos.
Por supuesto, hay algunos datos cuya estructura naturalmente se adapta a NoSQL y donde la generación de un esquema relacional sería inútil. Por ejemplo, almacenamiento de documentos reales, almacenamiento de imágenes u otros medios u otras grandes cantidades de datos que no tienen una estructura que pueda ser útil para representar. Sin embargo, esta distinción es muy engañosa. Las imágenes y las películas tienen estructura para ellas, pero generalmente no es la estructura que necesita almacenar en una base de datos. Una publicación de blog también puede tener estructura si tiene un sistema diseñado para intentar leerla y comprenderla, y esa puede ser una estructura de la que desea mantener un registro.
No se puede ignorar el aspecto de los informes de RDBMS '. Convino en que no es necesario informar en la mayoría de los casos, pero donde se necesita, esas uniones pueden ser bastante útiles. – Anurag
Hmmm, el dedo en el botón cuando se convierte en argumentativo _una vez_. – Wrikken
SQL es generalmente muy superior en la búsqueda de relaciones entre datos, análisis estadísticos y en transacciones seguras, y tiene mucha menos duplicación de datos. Algunas lecturas: http://www.cattell.net/datastores/index.html SQL y NoSQL tienen sus usos y lugares, cualquiera que intente usar una herramienta para todos los problemas tiene un alcance muy limitado de problemas o un momento difícil martillando un tornillo. – Wrikken