You are on page 1of 31

UNIVERSIDAD NACIONAL JORGE BASADRE

GROHMANN
Facultad de Ingeniera
Escuela Acadmico Profesional de Ingeniera en Informtica y
Sistemas

TRABAJO ENCARGADO DEL CURSO DE INGENIERA DE


SOFTWARE II

SQL y NOSQL

Presentada por:
Jhira Berthzal Roque Crdenas
Roco Elizabeth Paria Paredes
Grunddy Kenyu Yaipen Chiro
William Rufino Ramos Mendoza

Docente:
Ing. Gianfranco Mlaga Tejada
Ing. Porfirio Chata Ramrez

TACNA - PER
Mayo del 2016

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

TABLA DE CONTENIDO

INTRODUCCIN_______________________________________________________2
OBJETIVOS___________________________________________________________3
PROBLEMTICA_______________________________________________________4
Por qu surge la pregunta: cul es el mejor??_____________________________4
CAPTULO 1. MARCO TERICO__________________________________________6
1.1. Base de Datos______________________________________________________6
1.2. Modelos de Base de Datos_____________________________________________6
1.2.1. Modelo Relacional________________________________________________7
1.2.2. Modelo Entidad-Relacin___________________________________________7
CAPTULO 2. SQL______________________________________________________9
CAPTULO 3. NOSQL___________________________________________________12
3.1. Principales Caractersticas___________________________________________14
3.2. Retos de seguridad en bases de datos NoSQL_____________________________15
3.3. Punto Dbil______________________________________________________17
CAPTULO 4. SQl vs NOSQL_____________________________________________18
4.1. No relacional vs. Relacional__________________________________________20
4.2. Distribuida vs. Centralizada__________________________________________21
4.3. Cdigo abierto vs. Cerrado___________________________________________21
4.4. Horizontalmente escalable vs. Verticalmente______________________________22
CAPTULO 4. RECOMENDACIONES______________________________________23
Cundo usar SQL?____________________________________________________23
Cundo usar NoSQL?__________________________________________________24
CAPTULO 5. PRUEBA__________________________________________________25
CONCLUSIONES______________________________________________________28
BIBLIOGRAFA_______________________________________________________29

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

INTRODUCCIN

Hoy en da la informacin almacenada en bases de datos SQL se presenta desde el ao


1974, un lenguaje para la especificacin de las caractersticas de las bases de datos que
utilizan un modelo relacional; sin embargo el incremento de grandes cantidades de
informacin y requerimientos, y demandas actuales como rapidez y velocidad de
procesamiento en la ejecucin y las grandes cantidades de volmenes de datos; hace
referencia a analizar las bases de datos NOSQL, la cual est en vertiginoso desarrollo
desde el ao 2009. Las bases de datos NOSQL son un conjunto de bases de datos que no
se ajustan al modelo de bases de datos relacionales y sus caractersticas. La bases de
datos SQL efectan diversas tareas como consultar, agregar informacin como otras
tareas, de manera rpida y sencilla; pero cuando se tienen grandes cantidades de datos
esta tiende a disminuir el tiempo de ejecucin y de respuesta.
El presente trabajo pretende realizar un anlisis comparativo entre el uso de bases de
datos SQL y NOSQL, as como cada una de sus ventajas y desventajas.
Al final del trabajo se realizar una breve conclusin, donde ya estudiadas las bondades
y limitaciones de cada tipo de base de datos, se podr evaluar las circunstancias en las
que se puede aprovechar cada una de ellas. Mediante el anlisis y comparacin de
costos y rendimiento entre una base de datos SQL y NOSQL.

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

OBJETIVOS

GENERALES:

Hacer una comparativa entre el lenguaje SQL y NOSQL.

Ver por qu el lenguaje SQL es ms popular que el

ESPECFICOS:

NOSQL.

Ver por qu el lenguaje NOSQL es ms eficiente que el


SQL

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

PROBLEMTICA
Por qu surge la pregunta: cul es el mejor??
Es difcil dar una respuesta inmediata, Hacer y darnos cuenta que en realidad lo que
estn realizando es una comparacin de ambas tecnologas y colocando en una balanza
lo que pueden y no pueden hacer, pero nunca terminan decidiendo lo que realmente
importa: Cul es el mejor?.

ste patrn es normal y a veces muy til, permitiendo al lector sacar sus propias
conclusiones y dejando que l mismo tome una decisin o postura al respecto, pero al
tratar con tecnologas como SQL (que son de factor en un desarrollo actual), y NoSQL
que desde su nombre es algo confuso, como explica Martin Fowler debemos tener
muchsimo cuidado a la hora de realizar comparaciones, no slo porque sean diferentes,
sino por la educacin que se ha impartido a travs de los aos en todos los
desarrolladores y estudiosos del campo de la informtica.

Ahora bien, partiendo del hecho que SQL es y ha sido considerado un estndar defacto
en la manera en que se deben tratar y administrar todos los datos de una aplicacin,
podemos comenzar a dar un bosquejo del porqu surge la pregunta que tenemos en
cuestin: El miedo a lo desconocido. As, tal cual.

Por qu tememos a una tecnologa como NoSQL? Por qu no somos capaces de


aceptar que hay otras maneras de manipular y gestionar datos? Por el simple hecho de

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

estar rompiendo con un paradigma - s, SQL es un paradigma apoyado en modelos


relacionales - que hemos arrastrado desde los inicios de la programacin.

Antes de la aparicin del concepto de Base de datos relacional en el ao de 1970, se


utilizaron tcnicas de manipulacin de ficheros para guardar y gestionar la informacin
que generaba una aplicacin, trayendo consigo la necesidad de comprender a cabalidad
temas como el acceso a memoria, el manejo de punteros y puertos, etc. (Qu caos!).
Con la aparicin de conceptos como tablas, relaciones, claves y la unificacin de los
trminos fila y dato toda esta engorrosa tarea se convirti en ms que un objeto de
estudio y trajo alegras y colores a muchos programadores de la poca. Salir de esa zona
de confort, implica implcitamente la necesidad de expresar esos miedos a temas tan
oscuros en la programacin y la preocupacin de complicar ms la profesin del
desarrollo y la gestin de datos.

NoSQL facilita demasiado la gestin de la informacin en ciertos aspectos como la


captura o el soporte de escalabilidad y acceso; facilita tanto la tarea, que en un futuro
cercano no nos preocuparemos si quiera de proporcionar una cadena de conexin como
las engorrosas de SQL Server, slo tendramos 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 tecnologa del NoSQL y su gran


utilidad en el nuevo mundo de la Internet ni tan nuevo, de hecho -, porque se estn
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 ms importante, vino para facilitarnos la vida y
quitarnos ms de un dolor de cabeza para empresarios y desarrolladores.

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

CAPTULO 1. MARCO TERICO

1.1. Base de Datos


Una base de datos es un conjunto de informacin estructurada en registros y almacenada
es un soporte electrnico legible desde un ordenador. Cada registro constituye una
unidad autnoma de informacin que puede estar a su vez estructurada en diferentes
campos o tipos de datos que se recogen en dicha base de datos.

1.2. Modelos de Base de Datos


El modelo de bases de datos es un conjunto de herramientas conceptuales para describir
datos, las relaciones entre ellos, la semntica asociada entre ellos as como las
restricciones de consistencia.
Entre los modelos de bases de datos ms conocidos se encuentran dos clasificaciones.
Modelos lgico basados en objetos:

Modelo Entidad-Relacin (ER).


Modelo Orientado a Objetos
Modelos de datos semnticos
Modelo funcional de datos

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Modelo lgicos basados en registros:


o Modelo relacional
o Modelo de red
o Modelo jerrquico

1.2.1. Modelo Relacional


Este modelo permite representar la informacin del mundo real de una manera intuitiva,
introduciendo conceptos cotidianos y fciles de entender por cualquier inexperto.
Asimismo, mantiene informacin sobre las propias caractersticas de la base de datos
(metadatos), que facilitan las modificaciones, disminuyendo los problemas ocasionados
en las aplicaciones ya desarrolladas. Por otro lado, incorpora mecanismos de consulta
muy potente, totalmente independiente del S.G.B.D., e incluso de la organizacin fsica
de los datos; el propio S.G.B.D. es el encargado de optimizar estas preguntas en formato
estndar, a sus caractersticas propias de almacenamiento.

1.2.2. Modelo Entidad-Relacin


El proceso inicial en el diseo de una base de datos es la creacin de un modelo de
datos, siendo este la representacin en escala de la realidad adems refleja la estructura
de negocio de la organizacin, por medio de datos y relaciones.
EL modelo de datos entidad-relacin (E-R) es til para hacer corresponder los
significados e interacciones de las empresas del mundo real con su esquema conceptual.
El modelo entidad relacin utiliza la notacin que se observa en la figura 1, esta tiene en
cuenta conceptos como:

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Entidad: Objeto del mundo real distinguible de otros objetos. Una entidad se
describe usando un conjunto de atributos.

Conjunto de entidades: Una coleccin de entidades similares.


Relacin: Asociacin entre dos o ms entidades.
Atributos: Son las propiedades que caracterizan un conjunto de entidades.
Conjunto de relaciones: coleccin de relaciones similares.

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

CAPTULO 2. SQL

El lenguaje de consulta estructurado (SQL por Structured Query Language) es un


estndar informtico corrientemente utilizado para definir, modificar, y gestionar datos
y controlar cmo se realizan cambios en las bases de datos utilizando tablas, ndices,
claves, registros y campos para almacenar la informacin. (Osorio, F.)

SQL fue desarrollado a partir de las ideas del Dr. Edgar F. Codd, de IBM, el cual
colabor en el desarrollo del modelo relacional cuando trabajaba en los laboratorios de
investigacin de IBM en los aos 70. Una primera versin completa estuvo lista a
mediados de los 70 comenzando as el trabajo en sistemas multi-tabla.

Las versiones multiusuario fueron probadas por los usuarios en 1978 y 1979, a la par
que el lenguaje SQL haba sido estandarizado. A partir de ese momento IBM lanz el
desarrollo de una versin de produccin de System R., conocido como SQL/DS, y
posteriormente como Database 2 (DB2).

SQL (Structured Query Language), Lenguaje Estructurado de Consulta es el lenguaje


utilizado para definir, controlar y acceder a los datos almacenados en una base de datos
relacional. Como ejemplos de sistemas gestores de bases de datos que utilizan SQL,
podemos citar DB2, SQL Server, Oracle, MySql, Sybase, PostgreSQL o Access.

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

El SQL es un lenguaje universal que se emplea en cualquier sistema gestor de bases de


datos relacional. Tiene un estndar definido, a partir del cual cada sistema gestor ha
desarrollado su versin propia.
En SQL Server la versin de SQL que se utiliza se llama TRANSACT-SQL.

El SQL en principio es un lenguaje orientado nicamente a la definicin y al acceso a


los datos por lo que no se puede considerar como un lenguaje de programacin como
tal, ya que no incluye funcionalidades como son estructuras condicionales, bucles,
formateo de salida, etc. (aunque esto est evolucionando).

Se puede ejecutar directamente en modo interactivo, pero tambin se suele emplear


embebido en programas escritos en lenguajes de programacin convencionales. En
estos programas, se mezclan las instrucciones del propio lenguaje (denominado
anfitrin) con llamadas a procedimientos de acceso a la base de datos que utilizan el
SQL como lenguaje de acceso. Como por ejemplo en VisualBasic, Java, C#, PHP, .NET,
etc

Las instrucciones SQL se clasifican segn su propsito en tres grupos:

El DDL (Data Description Language) Lenguaje de Descripcin

El DCL (Data Control Language) Lenguaje de Control de Datos.


El DML (Data Manipulation Language) Lenguaje de

de Datos.

Manipulacin de Datos.

El DDL, es la parte del SQL dedicada a la definicin de la base de datos, consta de


sentencias para definir la estructura de la base de datos, permiten crear la base de datos,
crear, modificar o eliminar la estructura de las tablas, crear ndices, definir reglas de
validacin de datos, relaciones entre las tablas, etc. Permiten definir gran parte del nivel
10

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

interno de la base de datos. Por este motivo, estas sentencias sern utilizadas
normalmente por el administrador de la base de datos.

El DCL se compone de instrucciones que permiten:


-

Ejercer un control sobre los datos tal como la asignacin de privilegios de acceso a los

datos (GRANT/REVOKE)
La gestin de transacciones (COMMIT/TROLLBACK)

Una transaccin se puede definir como un conjunto de acciones que se tienen que
realizar todas o ninguna para preservar la integridad de la base de datos.

Las instrucciones que gestionan las autorizaciones sern utilizadas normalmente por el
administrador mientras que las otras, referentes a proceso de transacciones sern
utilizadas tambin por los programadores. No todos los sistemas disponen de ellas.

El DML se compone de las instrucciones para el manejo de los datos, para insertar
nuevos datos, modificar datos existentes, para eliminar datos y la ms utilizada, para
recuperar datos de la base de datos. Una sola instruccin de recuperacin de datos es tan
potente que permite recuperar datos de varias tablas a la vez, realizar clculos sobre
estos datos y obtener resmenes.

El DML interacta con el nivel externo de la base de datos, por lo que sus instrucciones
son muy parecidas, por no decir casi idnticas, de un sistema a otro, el usuario solo
indica lo que lo que quiere recuperar no cmo se tiene que recuperar, no influye el cmo
estn almacenados los datos.

Es el lenguaje que utilizan los programadores y los usuarios de la base de datos.


Entre las aplicaciones ms populares que utilizan Sql tenemos a SQL Server, Oracle,
MySQL entre otras.

11

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

CAPTULO 3. NOSQL
NoSQL es el acrnimo de No solo SQL. Con los sistemas NoSQL se busca una
forma de almacenamiento de la informacin ms gil y dinmica. Se utiliza una
escalabilidad horizontal donde se agregan ms nodos a un sistema. Se realiza una
desnormalizacin del modelo, no se impone la estructura relacional de tablas y se
pierden determinadas caractersticas (transacciones de operaciones entre colecciones
de datos, consultas anidadas, etc.). (Ruano, 2014)

El trmino fue acuado por Calor Strozzi en 1998 y resucitado ms tarde por Eric Evans
(un empleado de Rackspace,) en 2009. ste ltimo, adems, sugiri que se denominaran
a estas bases de datos como Big Data. La contribucin ms grande al desarrollo de los
productos NOSQL fueron la serie de trabajos publicados por Google en 2003, 2004 y
2006 sobre cmo construir una infraestructura escalable para el procesamiento paralelo
de grandes (enormes) cantidades de datos. Ms tarde, en 2007 Amazon pblico su
historia sobre Dynamo el almacenamiento clave/valor de alta disponibilidad.

Este sistema es de muy reciente aparicin. Es un sistema que no requiere esquemas


fijos, evitan las operaciones join almacenando datos desnormalizados y estn diseadas
para escalar horizontalmente. La mayor parte de ellas pueden clasificarse como
almacenes clave-valor o bases de datos orientadas a documentos. Las bases de datos
NoSQL son sistemas de almacenamiento de informacin que no cumplen con el
esquema entidad-relacin.

12

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Mientras que las tradicionales bases de datos relacionales basan su funcionamiento en


tablas, joins y transacciones ACID (atomicidad, coherencia, aislamiento y durabilidad),
las bases de datos NoSQL implementan caractersticas BASE como son indicadas a
continuacin:

Basic Availble: el almacn funciona la mayora del tiempo incluso ante fallos
gracias al almacenamiento distribuido y replicado

Soft state: Los almacenes no tienen por qu ser consistentes ni sus rplicas en
todo momento.

Eventual consistencia: la solicitud debe estar en un estado conocido.


Las bases de datos NoSQL no imponen una estructura de datos en forma de tablas y
relaciones (no imponen un esquema pre-fijado de tablas). Esto hace que a estas bases de
datos tambin se les denomine schema-less o schema-free. Las bases de datos
NoSQL permiten almacenar informacin en otros formatos como clave-valor (similar a
tablas Hash), mapeo de columnas, documentos o grafos.

Adems de la carencia de un esquema predeterminado, la principal caracterstica de


las bases de datos NoSQL es que estn pensadas para manipular enormes cantidades de
informacin de manera muy rpida. Para ello suelen almacenar toda la informacin que
Sana Nawazish Al Universidad Pblica de Navarra pueden en memoria (utilizando el
disco como una mera herramienta de persistencia), y estn preparadas para escalar
horizontalmente sin perder rendimiento. Suelen funcionar bastante bien en hardware de
bajo coste.

Entre las aplicaciones ms populares que utilizan NoSql tenemos a MongoDB,


MemcacheDB, Redis, CouchDB, Hazelcast, Apache Cassandra y HBase, todas ellas de
cdigo abierto.
13

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Este modelo de bases de datos han hecho su aparicin para desbancar al modelo
imperante en IT, las bases de datos relaciones. NoSQL es idnea para muchos tipos de
aplicaciones que hasta ahora se implementaban sobre el modelo relacional. NoSQL
aporta una serie de caractersticas nuevas que permiten cubrir carencias del modelo
relacional. No es que sea mejor o peor, sencillamente permite hacer las cosas de otra
manera. (Mora, J. J.)

3.1. Principales Caractersticas


Las principales caractersticas de los sistemas NoSQL son:

La capacidad de escalar horizontalmente operaciones sobre muchos servidores.

La capacidad de replicar y distribuir datos sobre muchos servidores.

Posee una sola capa de interfaz o protocolo.

Posee un modelo de concurrencia ms dbil que las transacciones ACID del


modelo relacional.

Destacar la consistencia eventual que se produce cuando los datos no se han


modificado por un periodo de tiempo, al contrario de las bases de datos
relacionales que confirman cada cambio a todos los nodos para su replicacin.

Hace un uso eficiente de ndices distribuidos y de RAM para el almacenamiento


de los datos.

La capacidad de aadir dinmicamente nuevos atributos a los registros.

14

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Al no tener una definicin de atributos fija, cada uno de los registros puede
almacenar diferente informacin cada vez, adaptndose a cada uno de los casos
posibles.

Capacidad de almacenar estructuras de datos complejas que hacen posible no


tener que utilizar consultas anidadas para acceder a todos los datos. En estos
sistemas, la estructura de los datos es distribuida mediante tablas hash,
destacando su elevada tolerancia a fallos.

No generan cuellos de botella al ejecutar cada sentencia compleja.

3.2. Retos de seguridad en bases de datos NoSQL

Dada la amplia variedad de bases de datos NoSQL, es necesario prestar atencin a las
debilidades genricas de estos modelos y, en cada caso particular aplicar las medidas
necesarias en cada implementacin particular. Comparando con las bases de datos
relacionales podemos resumir los siguientes campos de seguridad:

Autenticacin
La fortaleza de la autenticacin es uno de los campos de batalla donde muchas
implementaciones NoSQL muestran debilidad. Es comn encontrar que la las
bases de datos NoSQL incorporen credenciales por defecto, o incluso sin
autenticacin necesaria o deshabilitada (por ejemplo, Redis). En muchos casos
se basan en entornos de confianza en lugar de autenticacin de usuario.

Integridad de los datos

15

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Siguiendo una filosofa donde prima la disponibilidad y el rendimiento, se


penaliza en la integridad de los datos. Por ello es necesario utilizar
frecuentemente mecanismos complementarios ajenos al motor de la base de
datos para asegurar la integridad.

Confidencialidad y cifrado en el almacenamiento


Por lo general, el almacenamiento de los datos se realiza en texto plano y salvo
escasas excepciones como por ejemplo Cassandra y su tecnologa Transparent
data encryption, no se incorporan mecanismos de cifrado integrados. En la
mayora de los casos sigue siendo necesario delegar el cifrado a procesos en la
capa de aplicacin o del propio sistema de ficheros.

Auditora de datos
La mayora de bases de datos NoSQL carecen de mecanismos propios y robustos
de auditora de datos, de gran peso a la hora de detectar posibles ataques
mediante la observacin de eventos sobre registros concretos tal y como se hace
en bases de datos relacionales.

Seguridad en las comunicaciones


El uso de cifrado y protocolo SSL es habitual en bases de datos relaciones, en
cambio en sistemas NoSQL generalmente se encuentra deshabilitado por
defecto, es opcional (por ejemplo Cassandra (se abre en nueva ventana)), o bien
es necesaria una configuracin especfica en la instalacin (MongoDB (se abre
en nueva ventana)).

Vulnerabilidades clsicas en base de datos: An ms inyeccin

16

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Finalmente, y haciendo hincapi en uno de los aspectos ms ampliamente


explotado como es la inyeccin de comandos debemos tener en cuenta que en
las bases de datos NoSQL, las peticiones y llamadas se ejecutan invocando la
API correspondiente formateada segn una convencin comn, habitualmente
JSON o XML. En este punto, una incorrecta verificacin de los parmetros de
entrada puede permitir la ejecucin de comandos al evaluarse y tratarse en la
llamada a la API correspondiente. Las posibilidades de inyeccin y los riesgos,
al utilizarse una API con lenguaje de programacin procedimental, son an
mayores que en el caso de bases de datos relaciones donde se usa el lenguaje sql
tpicamente declarativo y mucho ms acotado. Inyeccin NoSQL (se abre en
nueva ventana) y de cdigo javascript son nuevos vectores que amplan la
superficie de ataques sobre estas bases de datos.

NoSQL est cada vez ms presente en las tecnologas actuales de bases de datos y
afronta grandes retos para lidiar con los problemas de seguridad que tarde o temprano
deber reforzar.

3.3. Punto Dbil

La consistencia de los datos es otro tema y para nada menor. De hecho, uno de los
puntos que ms debates concita en torno a los sistemas NoSQL, es que mientras ofrecen
la gestin de un mayor volumen y variedad de datos con mayor agilidad, no
necesariamente brindan garantas de la fiabilidad de los datos. Puntualmente, su mayor
desventaja se presenta en que al priorizar la disponibilidad y la inmediatez de los datos
para el usuario, trabajan con datos distribuidos y a veces replicados. Si los datos son
muy voltiles, puede generar inconsistencia o distintas versiones.
Bajar el nivel fiabilidad en pro de una mejor disponibilidad de los datos ante una
consulta, es razonable ya que para un sistema no transaccional, no es tan vital contar

17

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

con la ltima actualizacin del dato como s lo es, disponer de un sistema con alta
disponibilidad, sin cadas.

CAPTULO 4. SQl vs NOSQL


Se tom algunos criterios para realizar una comparacin entre las bases de datos SQL y
NoSQL:

Tabla 1: Criterios de comparacin entre las bases de datos


BASES DE DATOS

SQL

NOSQL

Modelo de

Los registros individuales Vara en funcin del tipo de base

almacenamiento de

(por ejemplo, "empleados") de datos. Por ejemplo, las tiendas

datos

se almacenan como filas en de

clave-valor

funcionan

de

tablas, con cada columna manera similar a las bases de datos


que

guarda

un

pedazo SQL,

pero

slo

tienen

dos

especfico de datos acerca de columnas ("clave" y "valor"), con


ese registro (por ejemplo, informacin ms compleja a veces
"gerente",
contratada",
similar

"fecha almacenadas en las columnas de


etc),
una

18

hoja

muy "valor". Las bases de datos de


de documentos

pretenden

el

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

clculo.

Tipos

de

datos almacenamiento de todos los datos

separados se almacenan en pertinentes juntos en un solo


tablas separadas, y luego se "documento" en JSON, XML u
unen cuando se ejecutan otro formato, que puede anidar
consultas ms complejas.
Esquemas

valores jerrquicamente.

Estructura y tipos de datos Tpicamente dinmico. Se puede


se fijan por adelantado. Para aadir nueva informacin de los
almacenar

informacin registros sobre la marcha.

acerca de un nuevo elemento


de datos, toda la base de
datos

debe ser alterado,

tiempo durante el cual la


base de datos debe estar
fuera de lnea
Escala

Verticalmente, es decir, un Horizontalmente, lo que significa


nico servidor debe hacerse que para agregar capacidad, un
cada vez ms poderoso con administrador de base de datos
el fin de hacer frente a la puede simplemente aadir ms
creciente

demanda.

Es servidores bsicos o instancias de

posible difundir bases de nube. La base de datos propaga


datos SQL entre miles de automticamente los datos a travs
servidores, pero la ingeniera de servidores cuando es necesario.
adicional

significativa

se

requiere generalmente.
Modelo de desarrollo Mezcla de cdigo abierto Cdigo abierto.
(Postgres, MySQL) y de
cdigo

cerrado

(Oracle

Database)
Soporte de
transacciones

Las
pueden

actualizaciones
configurar

se En determinadas circunstancias y
para en ciertos niveles (por ejemplo,

completar del todo o nada en nivel de documento frente a nivel

19

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

absoluto.
Manipulacin de
datos

de base de datos)

Instrucciones del lenguaje A travs de las API orientada a


especfico

usando

Select, objetos.

Insert y Update.
Consistencia

Puede ser configurado para Depende del producto. Algunos


una fuerte coherencia.

proporcionan consistencia fuerte


(MongoDB), mientras que otros
ofrecen

consistencia

eventual

(Cassandra).
Tolerancia a fallos

Bajo. Fallo en el nodo y Alta. Configurados para que la


generalmente har fallar la prdida de algunos nodos no
consulta.

interrumpa funcionamiento global.

Tabla 2: Diferencias entre las bases de datos


Base de datos SQL
Escalabilidad Baja
Rendimiento bajo
La fiabilidad es alta
Utiliza propiedades ACID
Implementacin costosa
Alta seguridad
Procesamiento de datos lento

Base de datos NoSQL


Escalabilidad Alta
Rendimiento alto
La fiabilidad es baja
Utiliza propiedades BASE
Costo de implementacin moderados
Muy baja seguridad
Procesamiento de datos veloz

4.1. No relacional vs. Relacional


Las bases de datos no relacionales son listas de datos almacenados en una sola tabla sin
definir relaciones entre los registros. Por otro lado las relacionales reparten los datos en
varias tablas ms pequeas eliminando datos duplicados y asegurando consistencia y
estableciendo restricciones y relaciones con otras tablas por medio de claves primarias y
forneas; esto genera que se ocupe menos espacio ya que no tiene redundancias y hasta
cierto punto es conveniente esta reparticin ya que de otro modo, si se realiza un
20

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

SELECT mltiple en la no relacional se tendra que recorrer la nica tabla varias veces
para devolver todos la informacin debido a duplicidad en ciertos datos.

4.2. Distribuida vs. Centralizada


Tener las bases de datos almacenadas en varios nodos para poder distribuir la carga en
estos se denomina distribucin (o descentralizacin), es decir que el almacenamiento se
realiza en mltiples partes en una localizacin fsica, en una red interconectada o a
travs de internet como es el caso de cloud databases, sin compartir memoria o discos
entre los nodos; en cambio en una base de datos centralizada se tiene un bus comn a
travs de todos los nodos que comparte memoria, sta se encuentra en una sola
ubicacin lo que facilita la administracin, pero no la escalabilidad ya que genera
cuellos de botella cuando residen muchas aplicaciones o usuarios.

4.3. Cdigo abierto vs. Cerrado


Como su nombre lo indica, abierto permite la visualizacin del cdigo fuente por parte
de los usuarios para su modificacin creando grupos colaboradores para mejorar el
cdigo y compartirlo con las dems personas y puede ser distribuido gratuitamente o
pagado. No puede ser cobrado y la licencia debe ser libre; el cdigo cerrado (o
propietario) puede ser cobrado pero no permite el acceso al cdigo fuente. Como
consecuencia del cdigo abierto en NoSQL, existe una gran oferta de propuestas en el
mercado.

Ejemplos de bases de datos propietarias: BigTable de Google, DynamoDB y


simplementeDB de amazon.

Ejemplos de bases de datos libres: Cassandra de Facebook, CouchDB de


Apache, Redis, Neo4j, MongoDB.

21

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

4.4. Horizontalmente escalable vs. Verticalmente


Escalar horizontalmente significa obtener ms nodos para un sistema, como adquirir un
nuevo computador para una aplicacin distribuida o comprar ms servidores Web
logrando crear cluster. En cambio, escalar verticalmente significa incrementar el nmero
de recursos a un nico nodo del sistema como adquirir ms CPUs o memoria para un
computador o servidor.

22

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

CAPTULO 4. RECOMENDACIONES

Cundo 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 sera algo como: en
prcticamente cualquier caso. De pronto no es necesario en desarrollos de animacin o
cosas por el estilo..

Consideramos que una base de datos relacional puede ser usada en estos mbitos:

Educativo: es importante conocer cmo estructurar informacin,


adems de aportar un gran conocimiento lgico al estudiante.
Desarrollo web: es bueno tratar de mantener una misma
jerarqua 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 informacin siempre sea
consistente.
Rama de negocios: inteligencia de negocios, anlisis de
negocios, bodegas de datos, minera de datos, minera de texto son
temas que requieren el uso de SQL para facilitar el consumo de la
informacin y la identificacin de patrones en los datos.
Empresarial: El software a la medida y el software empresarial,
ambos de escritorio, poseen la caracterstica de mantener informacin
con una estructura consistente y SQL es ideal para sta tarea,

23

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Cundo usar NoSQL?


Si realizamos el ejercicio en Google, encontramos un poco ms de informacin al
respecto y es ms sencillo orientarse en sta nueva tecnologa.

Consideramos que las tecnologas NoSQL pueden ser usadas en los siguientes mbitos:

Redes sociales: Es obligatorio. Gracias a las redes sociales, sta


tecnologa comenz a despegar y mostrar utilidad en el campo de la
informtica y la estadstica.
Desarrollo Web: Considero ms pertinente el uso de stas
tecnologas en sta rea, debido a la poca uniformidad de la informacin
que encontramos en Internet, sin embargo, es posible realizar estos
desarrollos con SQL, como expuse anteriormente.
Desarrollo Mvil: En estos momentos, las empresas estn
lidiando con un problema grande conocido como Bring Your Own
Device en realidad no es un problema, es un fenmeno social -, por lo
que la informacin que se recolecta siempre ser diferente por ms que
uno desee estructurarla y mantenerla esttica.
Big Data: Como podemos observar en Search Business
Analytics, la administracin de grandsimas cantidades de informacin
y su evidente heterogeneidad hace de NoSQL un excelente candidato en
sta rea.
Cloud (XaaS): el trmino 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 heterogneos.

24

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

CAPTULO 5. PRUEBA

SQL : Usando mysql su modelo relacional

Figura 1 - Mysql

NOSQL: Usando MongoDB su modelo relacional

25

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Figura 2 - MongoDB

Diferencia en las consultas entre SQL y NOSQL: Usando de Ejemplos MySQL y


MongoDB:

26

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

27

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Figura 3 Diferencias entre bases de datos NoSQL y SQL

CONCLUSIONES

28

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Suponemos que como en todo, habr veces que ser mejor usar bases de datos NoSQL y
en otras no. Eso sin quitar ese toque que ltimamente tienen tantas cosas en ingeniera
software y desarrollo de volver a poner de moda cosas que tienen ya sus aos, como
algo nuevo, pero con cambio de nombre.
Que la base de datos SQL son ms para si se desea seguir usando un estndar
establecido el cual es fcil de aprender pero si desean hacer algo nuevo te limita en
algunos aspectos como bsquedas grandes.
Las base de datos NOSQL son ms para romper con el estndar y crear tu propia forma
de gestionar tu base de datos creando tu propia estructura as como google que trabajan
con base de datos NOSQL para realizar mejores bsquedas.

BIBLIOGRAFA

29

INGENIERA DE SOFTWARE I
TRABAJO ENCARGADO: SQL & NOSQL

Ruano, F.. (2014). Anlisis y Desarrollo de MongoDB y Redis en Java. Espaa:

Francisco Ruano Vzquez.


Daz, J.. (2015). Utilizacin de las bases de datos relacionales en el sistema de

gestin y almacenamiento de datos. UF0348. Espaa: Tutor Formacin.


Rivera, F.. (2015). Base de datos relacionales. Espaa: ITM.
http://www.htmlpoint.com/sql/sql_04.htm
http://basesdedatosnosql.blogspot.pe/
http://academica-e.unavarra.es/bitstream/handle/2454/10203/629103.pdf?

sequence=1
https://www.incibe.es/blogs/post/Seguridad/BlogSeguridad/Articulo_y_comenta

rios/Bases_de_datos_NoSQL
http://academica-e.unavarra.es/bitstream/handle/2454/10203/629103.pdf?

sequence=1
http://www.internetria.com/blog/2013/05/08/nosql/

30

You might also like