Un futuro construido de dos mundos (SQL & NoSQL)

Un comentario por parte de un colega me llamo la atención sobre el futuro de las bases de datos:

“SQL será remplazado por NoSQL porque el primero no es practico”,

en ese momento no quise opinar para saber mas sobre sus argumentos, a lo mejor esta persona sabia algo que yo no sabia. En resumen su opinión se basaba en un limitado conocimiento del uso de bases de datos y por temas de moda donde equivocadamente se ha pensado que bigdata es igual NoSQL.

Me hizo recordar cuando estaba en la universidad, mi primer programa para un cliente potencial, yo tenia que almacenar y devolver información. Recuerdo que no sabía que era un manejador de bases de datos, tan solo sabia el lenguaje C (ambiente de consola) y tenia un archivo de texto el que llenaba con reglas construidas en mi mente y usaba pipes y saltos de línea para separar los datos y registros, aun así mi motor de búsqueda en mi mente se volvía complicado, pensaba en varios algoritmos que pudieran correr en  una Intel 40486, disco duro de un 528 Mb y por mucho una RAM con 500kb… puedes imaginarte lo anterior?, Este fue mi primer intento con NoSQL data base, ahorita ni el celular mas pequeño tiene tan poco poder.

Posteriormente después de haber tomado probabilidad y teoría de conjuntos, tome la clase de bases de datos, yo me imaginaba que me iban a explicar como trabajar con ellas sin embargo me dieron la teoría: como generar un diagrama entidad relación que explicará el problema a resolver, encontrar las relaciones (uno a uno, uno a muchos, muchos a muchos, etc.),  transformar las entidades o relaciones en tablas, generar llaves, normalizar, indexar etc. No aprendí SQL, entendí que era una base de datos y como crearla para sacar provecho de los recursos limitados, incluso entendí que era los metadatos.

Mi primer contacto con SQL no lo recuerdo, pero al ser un lenguaje muy sencillo de leer y al entender la base como una estructura bien organizada generar las consultas me resultaron fáciles… de aquí es donde la persona le parecía no practico, el solo quería colocar un “PROC MEANS” y obtener información de un data para un modelo.

Por lo anterior empecemos a analizar ambos términos:

SQL

El lenguaje de consulta estructurado o SQL se usa como un medio de comunicación con los sistemas de administración de bases de datos relacionales. Este lenguaje estandarizado ayuda a los analistas de datos a analizar, recuperar y actualizar datos o registros que están incluidos dentro de la base de datos. Además, esta herramienta se usa comúnmente para almacenar datos estructurados.

NoSQL

No existe una definición formal para NoSQL, pero debemos mencionar “No sólo SQL”, es decir esta enfocada mecanismos para el almacenamiento y recuperación de datos con un manejo diferente a las típicas bases relacionales, siendo el más destacado el que no usan SQL como lenguaje principal de consulta.

 Amazon, Google, Twitter y Facebook son las principales impulsoras ya que el enorme crecimiento del volumen de datos requería dar respuesta a la necesidad de proporcionar información a partir de tipos de datos, se necesitaba ser flexible y rápido.

Comparativa

Cuando trato de compararlos no veo uno mejor que otro, veo que se complementan, para mi SQL salió para optimizar el manejo de datos por recursos limitados y NoSQL tardo en salir porque no había los recursos suficientes. Las bases relacionales no evolucionaron tomando la parte de NoSQL porque se contrapone por definición, lo cual lo podemos ver en la siguiente figura que muestra las ventajas y desventajas:

V&D SQL

¿Cuál utilizar?

Con base a la figura anterior pensemos que tipo de base debes usar:

  • Requerimiento de ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) –> SQL
  • Largo volumen de Datos con flexibilidad de tipos de datos –> NoSQL
  • Almacenamiento y computo en la nube –> NoSQL
  • Datos estructurados y sin cambio –> SQL
  • Corto tiempo de desarrollo –> NoSQL

Conclusión

No sé que opinan ustedes, pero en todas las instituciones en las que he apoyado me he encontrado un zoológico de plataformas y tecnologías, así que no sería raro encontrarnos SQL y NoSQL corriendo al mismo tiempo con objetivos diferentes pero contribuyendo para proporcionar información. Pero esto sería el ultimo escalón de la evolución de las bases de datos, no lo creo … imaginemos que tuviéramos una base capaz de mantener el ACID en bases grandes y distribuidas en un entorno de nube con una estructura que indexe los diferentes tipos de datos, para ello creo que tendría que morir el lenguaje SQL y dar paso a uno nuevo en un ambiente amigable. Yo puedo ver un futuro construido con lo mejor de SQL y NoSQL.

 

 

 

 

 

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s