Está en la página 1de 6

1

J. W. Autor, Senior Member, IEEE, y L. L. Autor, Fellow, IEEE

Preparación de un Trabajo en Formato de dos Filiación Completa(Institución, Dirección, email)

Columnas Para RATE



actualizarla. Una de sus características principales de algebra
Resumen—Las bases de datos es una temática que se puede y cálculo relacional para efectuar consultas, con el fin de
catalogar como importante al momento de recopilar datos. obtener de una forma sencilla, información registrada dentro
Cuando se busca elegir una base de datos es algo fundamental ya de las bases de datos, así como realizarle cambios.
que tenemos la oportunidad de elegir una estructura de datos
relacional (SQL) o no relacional (NoSQL), cualquiera de las dos
son opciones viables para las diferentes aplicaciones, pero cada La consistencia de las bases de datos relacionales, hacen que
una de ellas tienen unas diferencias claves las cuales se tienen el este lenguaje sea importante y útil para el análisis y el control
cuenta al momento de tomar una decisión. de datos, algunas de sus características son:
En el siguiente documento se busca dar un claro concepto  La integridad de datos : cuando se habla de
y diferencia entre una base de datos SQL Y NoSQL. Si integridad de datos hacemos referencia que se
bien cabe aclarar ambos son viables contienen diferentes asegura que los datos consultados sean válidos,
estructuras y también se demarca una clara diferencia al correctos y completos
momento de realizar una consulta dentro de los registros  lenguaje estandarizado: esto hace referencia a que se
que se almacenan en cualquiera de las dos. puede utilizar diferentes implementaciones del
mismo lenguaje en diferentes sistemas.
Abstract-- Databases is a subject that can be classified as
 sencillez y claridad: SQL es unos lenguajes
important when collecting data. When looking to choose a
database is something fundamental since we have the unificados, claro y simple, lo cual ayuda a que sea de
opportunity to choose a relational (SQL) or non-relational fácil comprensión.
(NoSQL) data structure, either of the two are viable options for  Flexibilidad: su versatilidad ayuda a una mejor
different applications, but each of them They have some key implementación de soluciones y poder observar los
differences which are taken into account when making a datos de diferente forma para lograr satisfacer las
decision. especificaciones requeridas por los usuarios.
The following document seeks to give a clear concept and
difference between a SQL and NoSQL database. Although it
should be clarified, both are viable, they contain different Elementos del Lenguaje SQL
structures and a clear difference is also demarcated when
making a query within the records that are stored in either of Para lograr una buena comodidad para los desarrolladores
the two. de SQL todos los comandos que corresponden a los sistemas
de gestión de bases se ejecutan atravez de una interfaz de
línea de comandos SQL
1. INTRODUCCIÓN  Clausulas : Son componentes de los estados y

E l lenguaje SQL se considera como un lenguaje de


programación estructurado y a su vez aceptado por los
diferentes programadores, cuenta con algunos limitantes los
querys
 Expresiones : producen valores escalares o tablas,
las cuales consisten en filas y columnas
cuales con la evolución constante de la tecnología se buscar  Predicados: son los limitantes que ayudan a los
encontrar una solución a esas limitaciones que cuenta. A efectos de los comando y las consultas para
diferencia del NoSQL no requiere un esquema fijo lo cual cambiar el flujo del programa
podemos considerar que no es muy estrcuturado, las bases de  Query : Una Query o consulta son todos aquellos
datos NoSQL se utilizan especialmente para almacenamientos que se van a recuperar a partir de un criterio
de datos los cuales están distribuidos con una gran cantidad de asignado
almacemiento de datos.  Comandos: los comandos o sentencias SQL se
utilizan para el envió de consultas desde un
Se busca dar énfasis en cada uno de los conceptos y métodos programa cliente a un servidor en donde se
experimentales en donde podamos recalcar las diferencias en encuentra almacenada la base de datos.
los funcionamientos y estructura de cada uno de los lenguajes
planteados, y cual es mas optimo para emplear en el
desarrollo y almacenamiento de registro de una aplicación 2. NoSQL
bien sea a nivel local o en la nube
Cuando hablamos de bases de datos NoSQL, se hace
El lenguaje SQL (Structured Query Language) es un método referencia a una amplia clase de sistemas de gestión de datos,
de programación estándar e interactivo, el cual nos permite el cual a diferencia de los modelos clásicos de relación entre
obtener información de una base de datos administrarla y entidades existentes en los sistemas de bases de datos
 relacionales en donde se destacan los que no usan SQL como
2

un lenguaje principal dentro de una consulta.


Ahora por la parte de base de datos no SQL manejaremos
Las bases de datos NoSQL cuenta con unas características mongodb con ayuda de su herramienta MongoDBCompass
comunes dentro de todas sus implementaciones las cuales son Esta nos facilita la creación de las colecciones e inserción de
las siguientes: documentos, para la parte de las consultas manejaremos
studio 3T
 Consistencia Eventual : no implementan mecanismos
estrictos de consistencia los cuales garanticen que
cualquier cambio llevado a cabo dentro del sistema
sea visto, al mismo tiempo, en todos los nodos y
asegurando la no violación de posibles restricciones
de integridad de los datos u otras reglas.
 Flexibilidad en el esquema: en la mayoría de bases
de datos NoSQL sus esquemas de datos son
dinámicos, esto quiere decir que cada uno de sus
registros puede contener una información diferente, Primero procedemos a la creación de la base de datos
pudiendo almacenar solo los atributos en cada uno de llamada hospital luego creamos las colecciones de paciente,
ellos facilitando el polimorfismo de datos bajo una doctor y cita, por último insertaremos los documentos de
misma colección. cada uno (serán los mismos registros de la base de datos
 Escalabilidad horizontal: es la posibilidad de SQL).
incrementar el rendimiento del sistema añadiendo
más servidores e indicando al sistema cuales son los
nodos que se encuentran disponibles.
 Estructura distribuida: los datos se distribuyen entre
los diferentes nodos que componen el sistema,
podemos encontrar dos estilos
o Particionado
o Replica

Método

Como base tomaremos el ejercicio de Oracle, específicamente


Imagen 2. Ejemplo creación de la base de datos y de las tablas.
las tablas de doctor, paciente y cita. Generaremos los scrip de
estas 3 tablas y su respectivo dml, debemos instalar un gestor
de base de datos en nuestro caso postgres 11, esta herramienta
nos facilita el manejo de toda nuestra base de datos relacional.

Procedemos a la creación de las tablas Paciente, Doctor y


Citas seguido de esto insertamos nuestros registros de los
nuevos pacientes, los doctores que atenderán las citas y por
ultimo programaremos las citas que tendrán relación con un
paciente y un doctor encargado de revisar al paciente.

Imagen 3. Ejemplo Inserción de datos.

Ahora procedemos a crear la conexión de nuestra base de


datos con la herramienta studio 3T, podemos utilizar el
mismo connection string de mongo DB Atlas que utilizamos
para la conexión con MongoDB Compass. Primero daremos
en el Connect esto abrirá una ventana donde seleccionaremos
new connection para después marcar la casilla de From
Imagen 1. Ejemplo ingreso de tablas e inserciones
URI… (debe modificar el user y password a la que el usuario
de los datos. de la base de datos designo), y pondremos el código de acceso
que nos da el cluster en MongoDB Atlas, finalmente
3

podremos realizar las consultas con ayuda de esta SELECT id_doctor,upper(doctor.nombre) as nombre ,
herramienta. upper(doctor.apellido)as apellido, cedula, telefono, email,
hospitalid_hospital
FROM public. doctor
where doctor.id_doctor = 1;

Imagen 4. Ejemplo conexión.

Imagen 8. Ejemplo SQL de primera consulta.

Para el caso de la base de datos no SQL en mongoDB


tenemos el siguiente resultado:

db.getCollection("Doctor").aggregate
(

{$match : { _id_doctor : 1 }},


{$project:
Imagen 5. Ejemplo conexión. {
_id_doctor:1,
_nombre: { $toUpper: "$_nombre" },
_apellido: { $toUpper: "$_apellido" }
}
}
]
)

Imagen 6. Ejemplo conexión.

Imagen 9. Ejemplo no SQL de primera consulta.

Imagen 7 Ejemplo conexión. Como podremos ver el lenguaje de búsqueda es diferente y


cada uno tiene sus funciones para lograr cierto objetivo
dependiendo únicamente de la necesidad de la búsqueda, esto
lo podremos encontrar en muchos ejemplos a lo largo de
Desarrollo y resultados nuestro paper.

Luego de la creación de las tablas o colecciones y la inserción Para nuestro segundo ejemplo escogimos buscar toda la
de los datos escogimos las consultas que nos ayudarían a información de doctor identificado por un campo que no fuera
identificar las diferencias en el manejo de los datos en las dos su llave primaria o id ( en nuestro caso escogimos la cedula).
bases de datos. Como primer ejemplo de consulta tenemos
buscar la información de una tabla de persona (Doctor) SQL:
buscada por su campo primario aplicando alguna función de
columna (en nuestro caso escogimos el uppercase), para SELECT id_doctor,nombre , apellido, cedula, telefono,
nuestra base de datos SQL la consulta seria de la siguiente email, hospitalid_hospital
manera: FROM public.doctor
4

where doctor.cedula= 1234;

Imagen 13. Ejemplo no SQL.

El cuarto ejemplo es buscar en nuestra tabla Citas filtrarlo por


el campo primario de paciente y doctor además de aplicar las
Imagen 10. Ejemplo SQL. funciones de campo upper y lower para obtener lo siguiente.

Para SQL:
No SQL: SELECT id_cita, upper (lugar), fecha,
pacientenumero_identificacion, doctorid_doctor, lower
db.getCollection("Doctor").find({_cedula:1234}) (estado)
FROM public.citas
where
citas.doctorid_doctor=1 and
citas.pacientenumero_identificacion=1234;

Imagen 11. Ejemplo no SQL.

Nuestro tercer ejemplo consiste en buscar los pacientes


nacidos en un rango de fecha establecido del 1990 al 2000
Imagen 14. Ejemplo SQL.
Para SQL:

SELECT numero_identificacion, tipo_identificacion, Para No SQL:


nombre, apellido, direccion, telefono, fecha_nacimiento
FROM public.paciente paciente = 1234
WHERE doctor = 1
paciente.fecha_nacimiento BETWEEN '01/01/1990' AND db.getCollection("Cita").aggregate(
'10/02/2000'; [
{$match : { _doctorid_doctor :
doctor,_pacientenumero_identificacion:paciente }},
{$project:
{
_doctorid_doctor:doctor,
_pacientenumero_identificacion:paciente,
_nombre: { $toUpper: "$_lugar" },
_apellido: { $toLower: "$_estado" }
}
}
Imagen 12. Ejemplo SQL.
]
Para no SQL: )

start = ISODate("1990-01-01T00:00:00Z")
end = ISODate("2000-02-10T00:00:00Z")
db.Paciente.find({"_fecha_nacimiento" : {"$gte" : start, "$lte"
: end}})
5

pacientes registrados que nacieron entre las fechas 01/01/1990


y 10/02/2000.

Para SQL:

SELECT count (numero_identificacion)


FROM public.paciente
where
paciente.fecha_nacimiento BETWEEN '01/01/1990' AND
'10/02/2000';

Imagen 15. Ejemplo no SQL.

Nuestro quinto ejemplo es contar el numero de doctores que


atienden en el hospital numero 1.

Para SQL:
Imagen 18. Ejemplo SQL.
SELECT count (doctor.id_doctor)
FROM public.doctor Para no SQL:
where doctor.hospitalid_hospital =1
db.getCollection("Paciente").count({_fecha_nacimiento:
{"$gte" : start, "$lte" : end}})

Imagen 16. Ejemplo SQL.


Imagen 19. Ejemplo no SQL.
Para no SQL:

db.getCollection("Doctor").count({_hospitalid_hospital:1})
En nuestro ultimo ejemplo queremos que se muestres todas
las citas de doctor identificado con el numero 2 y que están
inactivas.

Para Sql :

SELECT id_cita, lugar, fecha,


pacientenumero_identificacion, doctorid_doctor, estado
FROM public.citas
where citas.estado = 'IN'
and citas.doctorid_doctor =2;

Imagen 17. Ejemplo no SQL.

Para nuestro sexto ejemplo queremos contar el numero de


6

Imagen 20. Ejemplo SQL.

Para no SQL:

db.getCollection("Cita").find({_estado:"IN",_doctorid_doctor:
2})

Imagen 21. Ejemplo SQL.

También podría gustarte