miércoles, 5 de febrero de 2014

Bases de datos - SQL y no SQL


Bases de datos y sistemas gestores de bases de datos

   Una base de datos (BD [ó BBDD]) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido; una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. Desde el punto de vista informático, la base de datos es un sistema formado por un conjunto de datos digitales almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos.
   Se puede definir una base de datos como una serie de datos organizados y relacionados entre sí, los cuales son recolectados, almacenados digitalmente y explotados por los sistemas de información de una empresa o negocio en particular.
   Existen programas denominados sistemas de administración de bases de datos, abreviado DBMS (Database management system), que proporcionan un conjunto de servicios software para administrar bases de datos, permitiendo un fácil acceso a los datos por parte de múltiples usuarios, así como posibilitar la manipulación de los datos de la BD (insertar, eliminar, editar). Es usual denominarlos también como motores de BD.

Tipos de bases de datos
   Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se esté manejando, la utilidad de las mismas, las necesidades que satisfagan, etc..  Es usual clasificarlas de acuerdo a su modelo de administración de datos.
   Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores. Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos.
   Así, podemos encontrar modelos de BD jerárquicas, transaccionales, orientadas a objetos, etc.. El que más se suele usar es el modelo relacional (RDBMS, Relational Database Management System).
 

Bases de datos relacionales y SQL

   Una Base de Datos Relacional, es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para implementar bases de datos ya planificadas. Permiten establecer interconexiones (relaciones) entre los datos (que están guardados en tablas), y a través de dichas conexiones relacionar los datos de ambas tablas, de ahí proviene su nombre: "Modelo Relacional".
  Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales, el álgebra relacional y el cálculo relacional. El álgebra relacional permite describir la forma de realizar una consulta, en cambio, el cálculo relacional sólo indica lo que se desea devolver. El lenguaje más común para construir las consultas a bases de datos relacionales es SQL (Structured Query Language), un lenguaje estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales integradas.
  • SQL es un lenguaje estandar de consultas para bases de datos relacionales. 
  • Motores o sistema de bases de datos comunes (que en sí son los que guardan las bases y otorgan las interfaces para consultar las bases o conectarlas a otros programas) que permiten sentencias en lenguaje SQL (suelen trabajan con el lenguaje base, luego cada motor le agrega su propia funcionalidad):  MySQL, SQL Server, postgreSQL y Oracle DB.

Bases de datos 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 que no usan SQL como el principal lenguaje de consultas.
  Típicamente las bases de datos relacionales han mostrado poca eficiencia en determinadas aplicaciones que usan los datos de forma intensiva, incluyendo el indexado de un gran número de documentos, la presentación de páginas en sitios que tienen gran tráfico, y en sitios de streaming audiovisual. Los sistemas de bases de datos NoSQL han crecido para enfrentarse a desafíos de tratamiento de datos en los que las tradicionales RDBMS plantean problemas. 
   Las implementaciones típicas de RDBMS se han afinado, o bien para una cantidad pequeña pero frecuente de lecturas y escrituras, o para un gran conjunto de transacciones que tiene pocos accesos de escritura. Por otro lado NoSQL puede servir gran cantidad de carga de lecturas y escrituras.
   Con el crecimiento de la web en tiempo real existe una necesidad de proporcionar información procesada a partir de grandes volúmenes de datos que tienen unas estructuras horizontales más o menos similares. El rendimiento y sus propiedades de tiempo real son más importantes que la coherencia, en la que las bases de datos relacionales tradicionales dedican una gran cantidad de tiempo de proceso.
   Las bases de datos NoSQL están altamente optimizadas para las operaciones recuperar y agregar, y normalmente no ofrecen mucho más que la funcionalidad de almacenar los registros (p.ej. almacenamiento clave-valor). La pérdida de flexibilidad en tiempo de ejecución, comparado con los sistemas SQL clásicos, se ve compensada por ganancias significativas en escalabilidad y rendimiento cuando se trata con ciertos modelos de datos.
   Así pues algunos gestores de estas bases de datos como pueden ser BigTable, desarrollado por Google, utiliza GQL, MongoDB utiliza JSON y Cassandra utiliza CQL.

Entonces, ¿implemento una BD SQL o noSQL?

   Una BD noSQL normalmente no sustituye a la base de datos "clásica" SQL, sino que surgen por otra necesidad (normalmente una necesidad de rendimiento extremo). Si se utilizan una BD noSQL, SQL o se intentar combinar ambas es una decisión marcada por los tipos y modelos de datos, la arquitectura del sistema y los requerimientos de la tarea que se desea cumplir.
   Recomiendo leer unos cuantos enlaces donde se resumen las ventajas e inconvenientes de cada tipo de base de datos y se realiza una comparativa entre ellas:
   El mejor resumen que he leido, es el que realiza Jorge Escobar en el blog Jungleg.com:  

The main point I’m trying to make is the following — use the right data solution to your problem. SQL, NoSQL or both. Don’t be fixated on the technology, but on what you need to accomplish.


http://es.wikipedia.org/wiki/Base_de_datos
http://www.maestrosdelweb.com/editorial/%C2%BFque-son-las-bases-de-datos/
http://es.kioskea.net/contents/66-introduccion-bases-de-datos




No hay comentarios:

Publicar un comentario