2015 Herramientas SQL vs NoSQL Peña Contreras Daniel Administración de Base de Datos 27/09/2015 Peña Contreras Daniel Herramientas SQL vs No SQL Administración de Base de Datos MITO: NoSQL reemplaza SQL Eso sería como decir que los barcos fueron reemplazados por los coches porque son una tecnología más nueva. SQL y NoSQL hacer lo mismo: almacenar datos. Ellos toman diferentes enfoques, que pueden ayudar u obstaculizar su proyecto. A pesar de sentirse más reciente y el acaparamiento de los titulares recientes, NoSQL no es un reemplazo para SQL - es una alternativa. MITO: NoSQL es mejor / peor que SQL Algunos proyectos se adaptan mejor a la utilización de una base de datos SQL. Algunos son más adecuados para NoSQL. Algunos pueden utilizar indistintamente. Este artículo nunca podría ser un SitePoint Smackdown, porque no se puede aplicar las mismas suposiciones generales en todas partes. MITO: SQL vs NoSQL es una clara distinción Esto no es necesariamente cierto. Algunas bases de datos SQL están adoptando características NoSQL y viceversa. Las opciones pueden llegar a ser cada vez más difusa, y las bases de datos híbridos NewSQL podrían proporcionar algunas opciones interesantes en el futuro. MITO: el lenguaje / marcó determina la base de datos Hemos crecido acostumbrar a pilas de tecnología, tales como LAMP: Linux, Apache, MySQL (SQL), PHP Decir: MongoDB (NoSQL), Express, angulares, Node.js .NET, IIS y SQL Server Java, Apache y Oracle. Hay razones prácticas, históricas y comerciales por qué estas pilas evolucionaron - pero no presumen que son reglas. Puede usar una base de datos MongoDB NoSQL en tu PHP o .NET proyecto. Puede conectarse a MySQL o SQL Server en Node.js. Usted no puede encontrar la mayor cantidad de tutoriales y recursos, pero sus necesidades debe determinar el tipo de base de datos - no el lenguaje. 2 Peña Contreras Daniel Herramientas SQL vs No SQL Administración de Base de Datos SQL El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus características es el manejo del álgebra y el cálculo relacional que permiten efectuar consultas con el fin de recuperar, de forma sencilla, información de bases de datos, así como hacer cambios en ellas. NoSQL En informática, NoSQL es una amplia clase de sistemas de gestión de bases de datos que difieren del modelo clásico del sistema de gestión de bases de datos relacionales (RDBMS) en aspectos importantes, el más destacado es que no usan SQL como el principal lenguaje de consultas. Los datos almacenados no requieren estructuras fijas como tablas, normalmente no soportan operaciones JOIN, ni garantizan completamente ACID (atomicidad, consistencia, aislamiento y durabilidad), y habitualmente escalan bien horizontalmente. Los sistemas NoSQL se denominan a veces "no sólo SQL" para subrayar el hecho de que también pueden soportar lenguajes de consulta de tipo SQL. ¿Cuál es el mejor? Antes de la aparición del concepto de Base de datos relacional en el año de 1970, se utilizaban técnicas de manipulación de ficheros para guardar y gestionar la información que generaba una aplicación, trayendo consigo la necesidad de comprender a cabalidad temas como el acceso a memoria, el manejo de punteros y puertos, etc. (¡Que caos!). Con la aparición de conceptos como tablas, relaciones, claves y la unificación de los términos fila y dato toda ésta engorrosa tarea se convirtió en más que un objeto de estudio y trajo alegrías y colores a muchos programadores de la época. Salir de esa zona de confort, implica – implícitamente – la necesidad de expresar esos miedos a temas tan oscuros en la programación y la preocupación de complicar más la profesión del desarrollo y la gestión de datos. NoSQL facilita demasiado la gestión de la información en ciertos aspectos como la captura o el soporte de escalabilidad y acceso; facilita tanto la tarea, que en un futuro cercano estoy seguro que no nos preocuparemos si quiera de proporcionar una cadena de conexión como las engorrosas de SQL Server, 3 Peña Contreras Daniel Herramientas SQL vs No SQL Administración de Base de Datos sólo tendríamos que proporcionar un nombre y el mismo motor de base de datos realizará todo ese tedioso y aburrido procedimiento. Por lo anterior, no podemos temerle a la maravillosa tecnología del NoSQL y su gran utilidad en el nuevo mundo de la Internet – ni tan nuevo, de hecho -, porque se están solucionando grandes inconvenientes como la masiva concurrencia de acceso a una base de datos y el costoso mantenimiento de las mismas. Hay que aceptar de una vez por todas que NoSQL vino para quedarse y más importante, vino para facilitarnos la vida y quitarnos más de un dolor de cabeza para empresarios y desarrolladores. ¿Cuándo usar SQL? Si buscamos en Google no encontraremos una respuesta concreta, porque se intuye que cualquier cosa que se deba guardar debe ser en una base de datos relacional. Si preguntamos a cualquier programador, seguramente su respuesta sería algo como: “en prácticamente cualquier caso. De pronto no es necesario en desarrollos de animación o cosas por el estilo.”. Yo considero que una base de datos relacional puede ser usada estos ámbitos: Educativo: es importante conocer cómo estructurar información, además de aportar un gran conocimiento lógico al estudiante. Desarrollo web: es bueno tratar de mantener una misma jerarquía de los datos que llegan de la gran autopista, pero siempre y cuando la capacidad de concurrencia, almacenamiento y mantenimiento no sean de considerable dificultad y la información siempre sea consistente. Rama de negocios: inteligencia de negocios, análisis de negocios, bodegas de datos, minería de datos, minería de texto son temas que requieren el uso de SQL para facilitar el consumo de la información y la identificación de patrones en los datos. Empresarial: El software a la medida y el software empresarial, ambos de escritorio, poseen la característica de mantener información con una estructura consistente y SQL es ideal para ésta tarea. 4 Peña Contreras Daniel Herramientas SQL vs No SQL Administración de Base de Datos ¿Cuándo usar NoSQL? Si realizamos el ejercicio en Google, encontramos un poco más de información al respecto y es más sencillo orientarse en ésta nueva tecnología. Yo considero que las tecnologías NoSQL pueden user usadas en los siguientes ámbitos: Redes sociales: Es obligatorio. Gracias a las redes sociales, ésta tecnología comenzó a despegar y mostrar utilidad en el campo de la informática y la estadística. Desarrollo Web: Considero más pertinente el uso de éstas tecnologías en ésta área, debido a la poca uniformidad de la información que encontramos en Internet, sin embargo, es posible realizar éstos desarrollos con SQL, como expuse anteriormente. Desarrollo Móvil: En éstos momentos, las empresas están lidiando con un problema grande conocido como Bring Your Own Device – en realidad no es un problema, es un fenómeno social -, por lo que la información que se recolecte siempre será diferente por más que uno desee estructurarla y mantenerla estática. BigData: Como podemos observar en Search Business Analytics, la administración de grandísimas cantidades de información y su evidente heterogeneida hace de NoSQL un excelente candidato en ésta área. Cloud (XaaS): el término XaaS (Everything as a service) que indica “Cualquier cosa como servicio (sic)” y todos los temas relacionados a la nube, con NoSQL pueden adaptarse casi a cualquier necesidad del cliente, que evidentemente son heterogéneos. Beneficios de NoSQL Escalamiento elástico Mayor capacidad de manejo de datos El mantenimiento de los servidores NoSQL es más barato Menor Costo Servidor No esquema o modelo de datos fijos Integrated Facility Caching 5 Peña Contreras Daniel Herramientas SQL vs No SQL Administración de Base de Datos Beneficios de SQL Es un estándar para el manejo de datos en un Manejador de Base de Datos Relacional. Es no sensitivo, esto quiere decir que no importa si pones en mayúsculas o minúsculas el comando o instrucción te lo reconocerá. Es imperativo, no necesariamente secuencial aunque tenga un ordenamiento. Es de fácil comprensión. Es un lenguaje de alto nivel para datos, esto es con una sola instrucción afectas a varios registros en tiempo real. Diferencia entre SQL y NoSQL: Comparación Este artículo sobre SQL y NoSQL comparación arrojará luz sobre el debate sobre las ventajas y limitaciones de cada uno. Desde que el zumbido de la base de datos NoSQL evolucionó en el almacenamiento de datos en las bases de datos NoSQL, pensé en la exploración de ambos conceptos para llegar a su profundidad. Y me tomó un tiempo para averiguar lo que realmente conducen a la evolución de la base de datos NoSQL. Bueno, todo se reduce a la búsqueda de proporcionar mejor experiencia posible a los usuarios finales en forma rápida, real y conectado. Los desarrolladores de bases de datos están tratando de optimizar las cosas para producir un mejor rendimiento ya que la tecnología en el departamento de almacenamiento está cambiando drásticamente. NoSQL vs SQL – ¿Tiempo para un Cambio? SQL (Structured Query Language) fue creado en la década de 1970 para dar a las bases de datos relacionales una manera de almacenar datos y comunicarse, y es muy popular en todo el mundo. NoSQL, en contraste, se refiere a un nuevo tipo de bases de datos no relacionales que no utilizan SQL y están ganando popularidad. Obtener una sólida. 6 Peña Contreras Daniel Herramientas SQL vs No SQL Administración de Base de Datos Existe un intenso debate entre los desarrolladores en cuanto a los méritos de cada sistema, incluso en Google I/O 2012, se realizó un debate titulado SQL vs NoSQL: Batalla de los Backends. Cada uno tiene sus propias fortalezas y debilidades, pero algunos predicen que NoSQL puede eventualmente reemplazar a SQL. Así que, ¿cuáles son esas diferencias? Echemos un vistazo a algunas de las características clave de NoSQL y cómo se diferencia de SQL. ¿Por qué podría NoSQL funcionar mejor que SQL? Hay varias razones para creer que las bases de datos no relacionales son más adecuadas para la actualidad que las bases de datos relacionales. Las relaciones y las tablas que conforman las bases de datos SQL pueden funcionar para las grandes organizaciones, que cuentan con millones. Combine esto con millones de usuarios que realizan búsquedas en estas tablas y el sistema puede sufrir grandes problemas de rendimiento, como descubrieron Google y Amazon de la manera más dura antes de cambiar a sistemas no relacionales. Además, los proyectos de programación a gran escala que utilizan tipos de datos complejos y jerarquías, como XML, son difíciles de incorporar en SQL. Estos tipos de datos, que pueden contener objetos, listas y otros tipos de datos propios, no se correlacionan bien con las tablas que consisten en sólo las filas y columnas. Por otro lado, los proyectos y las organizaciones más pequeñas normalmente funcionan muy bien con SQL. Si bien puede ser difícil en algunos casos, el mapeo de objetos complejos utilizando tablas se puede hacer y hay poderosas herramientas disponibles, tales como el sistema de base de datos Oracle, que son muy eficaces. Los sistemas SQL y NoSQL pueden ambos funcionar bien cuando son manejados por administradores competentes, pero la mejor opción dependerá de cómo se va a utilizar y las habilidades de las personas que van a utilizarlas. Con esto en mente, echemos un vistazo a algunas características de NoSQL, diseñadas para evitar algunos de los inconvenientes de SQL. 7 Peña Contreras Daniel Herramientas SQL vs No SQL Administración de Base de Datos Bases de Datos NoSQL: Tipos de datos y funciones La mayoría de las bases de datos NoSQL contienen los cuatro tipos de datos siguientes: Bases de datos documentales, que permiten que una clave sea emparejada con un documento. Los documentos pueden contener una gran variedad de objetos como claves en arreglos y pares clavevalor, así como otros documentos. Key-value stores, bases de datos simples que almacenan información en forma de atributos (teclas) y valores. En algunos casos, los valores pueden tener tipos como cadena y número entero. El graph almacena datos sobre redes. Wide-column stores, están hechas para el manejo de grandes cantidades de datos en forma de columnas. Las bases de datos NoSQL escalan horizontalmente, añadiendo más servidores para hacer frente a cargas más grandes. Por otro lado, las bases de datos SQL, suelen escalar de forma vertical, añadiendo más y más tráfico a un solo servidor. La función Auto-sharding permite a los sistemas NoSQL compartir automáticamente los datos a través de servidores, sin necesidad de realizar algunas maniobras complejas de codificación. Esto equilibra la carga entre varios servidores, proporcionando un sistema más robusto en caso de un accidente de un servidor en particular. La programación de hoy en día se hace a menudo de forma iterativa, con pequeños pasos, poco a poco que puede afectar a todo el proyecto. Esto no se traduce bien a los servidores SQL, que le piden que defina sus esquemas antes de agregar cualquier información. Añadir una nueva categoría a una tabla, por ejemplo, puede llegar a ser un proceso que consuma tiempo cuando se haga tarde en un proyecto de programación. NoSQL es mucho más flexible, no utilizando esquemas definidos de antemano. Esto permite a los usuarios añadir información y hacer cambios en cualquier momento sin interrumpir el sistema o la necesidad de transferir una gran cantidad de datos. Una comparación de SQL y No-SQL Base de datos Sistemas de Gestión Con el fin de llegar a una conclusión comprensible simple, vamos a analizar las diferencias de los sistemas de gestión de SQL y No-SQL de base de datos': 8 Peña Contreras Daniel Herramientas SQL vs No SQL Administración de Base de Datos Estructura y tipo de datos que se mantienen: SQL / bases de datos relacionales requieren de una estructura con los atributos definidos para contener los datos, a diferencia de las bases de datos NoSQL que por lo general permiten las operaciones de flujo libre. Consulta: Independientemente de sus licencias, bases de datos relacionales todos implementan el estándar SQL, hasta cierto punto y, por tanto, que se pueden consultar mediante el Structured Query Language (SQL).Bases de datos NoSQL, por el contrario, cada implementar una forma única de trabajar con los datos que manejan. Escala: Ambas soluciones son fáciles de escalar verticalmente (es decir, mediante el aumento de los recursos del sistema). Sin embargo, siendo las aplicaciones más modernas (y más simples), soluciones NoSQL suelen ofrecer medios mucho más fácil a escala horizontal (es decir, mediante la creación de un grupo de varias máquinas). Fiabilidad: Cuando se trata de fiabilidad de los datos y la garantía de seguridad de las transacciones realizadas, las bases de datos de SQL siguen siendo la mejor apuesta. Soporte: Sistemas de gestión de bases de datos relacionales tienen décadas de historia. Son muy populares y es muy fácil de encontrar tanto gratuitos y pagados apoyo. Si surge un problema, por lo que es mucho más fácil de resolver que las bases de datos recientemente populares NoSQL especialmente si dicha solución es compleja en la naturaleza (por ejemplo, MongoDB). Mantenimiento de datos complejos y las necesidades de consulta de: Por naturaleza, las bases de datos relacionales son el go-to solución para consultas complejas y los datos de mantenimiento de las necesidades. Ellos son mucho más eficientes y sobresalir en este dominio. 9 Peña Contreras Daniel Herramientas SQL vs No SQL Administración de Base de Datos https://estebanz01.wordpress.com/2013/04/04/sql-vs-nosql-cual-es-elmejor/ https://es.wikipedia.org/wiki/SQL https://es.wikipedia.org/wiki/NoSQL http://www.thewindowsclub.com/difference-sql-nosql-comparision https://blog.udemy.com/es/nosql-vs-sql-tiempo-para-un-cambio/ http://www.sitepoint.com/sql-vs-nosql-differences/ https://www.digitalocean.com/community/tutorials/understanding-sql-andnosql-databases-and-different-database-models 10