Está en la página 1de 23

Actividad 4.

Análisis de ejemplo de base de datos orientada a objetos, mediante la


utilización de softwares manejadores de bases de datos.
Caso de estudio: Gestión de expedientes de imagenología de un centro de especialidad
médicas.

Resumen
El manejo integro y coherente de datos en cualquier tipo de organización es de vital
importancia. Es debido a esto que las organizaciones y sus gerentes necesitan practicar el
manejo de recursos de datos, una actividad gerencial que aplica la tecnología de sistemas
de información y herramientas de manejo para la tarea de administrar los recursos de datos
de la misma. En la actualidad son muchos los expertos que hablan de bases de datos y de
las ventajas que ofrece utilizar este tipo de herramientas en las diferentes empresas,
organizaciones, entes de salud, clínicas, entre otras. Desde que empezó el desarrollo de la
informática como tal, han sido numerosos los cambios que ha sufrido hasta llegar a lo que
conocemos en la actualidad, sin embargo, y a pesar de que instrumentos como éste están
prácticamente asentados en la sociedad, no todo el mundo sabe lo que hay detrás de todos
ellos. Si bien es cierto que las bases de datos son realmente útiles en numerosos sectores,
éstas no nacen de la nada, existe un entramado tras ellas bastante complejo para que
ofrezcan los mejores servicios.
Dicho esto, para conocer la importancia que tiene el uso de sistemas manejadores
de bases de datos en nuestro caso de estudio, antes debemos conocer algunos aspectos tal
como:

Sistema Manejador de Base de Datos: Es la porción más importante del software de una
base de datos, ya que es un conjunto de softwares bastante específicos que sirven de
interfaz (superficie de contacto informatizada, una especie de soporte donde se
interrelacionan los múltiples elementos necesarios para lograr el objetivo deseado), para
unir tres elementos: las bases de datos en sí, los usuarios y las diferentes aplicaciones que
se utilizan para ello.

La finalidad de estos manejadores es manipular todos los datos que le llegan y


convertirlos en una información relevante para el usuario. Dicha información puede ser de
diferentes tipos o utilizarse por varios motivos, como son las técnicas de estrategia. En
cualquier caso, es una herramienta de gran utilidad en todos los aspectos. Para lograr el
objetivo, se crea un conjunto de programas, cada cual, realizando una tarea específica, que
finalmente se interrelacionan entre sí para así facilitar la construcción y la manipulación de
los datos que se archivarán en la base creada.
Lo cierto es que el uso de los manejadores conlleva más ventajas que desventajas,
pues a través del trabajo que realizan se puede definir correctamente todas las bases de
datos que queramos o que hayamos fabricado para una función específica. También ayuda
a una mejor manipulación de los datos obtenidos e incluso facilita la rapidez en la gestión
de los mismos. Sin embargo, no todo son pros, existen algunos contras que hay también
que tener en cuenta para utilizar bien una herramienta como ésta y hay que conocerlos al
detalle. Una de las desventajas más usuales es la inversión que hay que realizar para
obtenerla, tanto en hardware como en software, así como en los conocimientos necesarios
para poder manejarla con soltura. No todo el mundo conoce a la perfección esta parte
tecnológica. Además, a pesar de manejar múltiples datos, no todos se presentan de la
misma manera, es por ello que algunos como los gráficos o los elementos multimedia son
de peor calidad y tienen más de una deficiencia a la hora de utilizarlos.
Por otra parte, saber utilizar estos manejadores no es tarea fácil, pues en su creación
y posterior manipulación se utilizan múltiples lenguajes informáticos que tienen una misión
específica. No todos valen para cualquier cosa. Por norma general se llama Lenguaje de
manipulación de datos al idioma informático que regula las funciones de los manejadores,
sin embargo, existen varios tipos según lo que queramos obtener.
En este sentido, el Structured Query Language (SQL) sirve principalmente para la
realización de consultas y la manipulación de los datos. Por su parte, el Data Definition
Lenguaje (DDL) se utiliza para definir estructuras y funciones en la realización de consulta.
Y el Data Control Language es usado por el administrador para llevar un control exhaustivo
al acceso a los datos que se encuentran en la base creada con los manejadores de base de
datos. Por todos estos motivos, es cierto que el uso de las bases de datos es beneficioso
para tener un control de todo lo que acontece o lo que es importante para nosotros. Sin
embargo, no es tan fácil como parece, pues detrás de lo que simplemente visualizamos hay
un gran entramado para que estas bases ofrezcan el servicio deseado y sea factible acceder
a lo que nos interesa. Por eso siempre hay que contar con expertos que se puedan ocupar
de su correcta gestión.

ARQUITECTURA DEL SISTEMA GESTOR DE BASE DE DATOS


La arquitectura de un SGBD especifica sus componentes (descripción funcional) y sus
interfaces. Trata de conceptos distintos que la arquitectura de la base de datos. Los
componentes principales de un SGBD son:
Interfaces externos:
Medios para comunicarse con el SGDB en ambos sentidos (E/S) y explotar a todas sus
funciones. Pueden afectar a la base de datos o a la operación del SGBD, por ejemplo:
Operaciones directas con la base de datos:
Definición de tipos, asignación de niveles de seguridad, actualización de datos,
interrogación de la base de datos...
Operaciones relativas a la operación del SGBD:
Copia de seguridad y restauración, recuperación tras una caída, monitoreo de seguridad,
gestión del almacenamiento, reserva de espacio, monitoreo de la configuración, monitoreo
de prestaciones, afinado, las interfaces externas bien pueden ser utilizadas por usuarios
(p.e. administradores) o bien por programas que se comunican a través de un API.
Intérprete o procesador del lenguaje:
La mayor parte de las operaciones se efectúan mediante un lenguaje de base de datos.
Existen lenguajes para definición de datos, manipulación de datos (p.e. SQL), para
especificar aspectos de la seguridad y más. Las sentencias en ese lenguaje se introducen en
el SGBD mediante el interfaz adecuado. Se procesan las expresiones en dicho lenguaje (ya
sea compilado o interpretado) para extraer las operaciones de modo que puedan ser
ejecutadas por el SGBD.
Optimizador de consultas:
Realiza la optimización de cada pregunta y escoge el plan de actuación más eficiente para
ejecutarlo.
Motor de la base de datos
Realiza las operaciones requeridas sobre la base de datos, típicamente representándolo a
alto nivel.
Mecanismo de almacenamiento
Traduce las operaciones a lenguaje de bajo nivel para acceder a los datos. En algunas
arquitecturas el mecanismo de almacenamiento está integrado en el motor de la base de
datos.
Motor de transacciones
Para conseguir corrección y fiabilidad la mayoría de las operaciones internas del SGBD se
realizan encapsuladas dentro de transacciones. Las transacciones pueden ser especificadas
externamente al SGBD para encapsular un grupo de operaciones. El motor de transacciones
sigue la ejecución de las transacciones y gestiona su ejecución de acuerdo con las reglas que
tiene establecidas (p.e. control de concurrencia y su ejecución o cancelación).

Gestión y operación de SGBD


Comprende muchos otros componentes que tratan de aspectos de gestión y operativos del
SGBD como monitoreo de prestaciones, gestión del almacenamiento, mapas de
almacenamiento...
Importancia de un Sistema Manejador de Base de Datos (SMBD)
Su importancia radica en que es la aplicación que interacciona con los usuarios de los
programas de aplicación y la base de datos. En general, un SGBD proporciona los siguientes
servicios:
• Permite la definición de la base de datos mediante el lenguaje de definición de
datos. Este lenguaje permite especificar la estructura y el tipo de los datos, así como
las restricciones sobre los datos. Todo esto se almacenará en la base de datos.

• Permite la inserción, actualización, eliminación y consulta de datos mediante el


lenguaje de manejo de datos. El hecho de disponer de un lenguaje para realizar
consultas reduce el problema de los sistemas de ficheros, en los que el usuario tiene
que trabajar con un conjunto fijo de consultas, o bien, dispone de un gran número
de programas de aplicación costosos de gestionar.

Hay dos tipos de lenguajes de manejo de datos: los procedurales y los no procedurales.
Estos dos tipos se distinguen por el modo en que acceden a los datos. Los lenguajes
procedurales manipulan la base de datos registro a registro, mientras que los no
procedurales operan sobre conjuntos de registros. En los lenguajes procedurales se
especifica qué operaciones se deben realizar para obtener los datos resultado,
mientras que en los lenguajes no procedurales se especifica qué datos deben
obtenerse sin decir cómo hacerlo. El lenguaje no procedural más utilizado es el SQL
(Structured Query Language) que, de hecho, es un estándar y es el lenguaje de los
SGBD relacionales.

Dicho lenguaje proporciona acceso controlado a la base de datos mediante:


• Un sistema de seguridad, de modo que los usuarios no autorizados no puedan
acceder a la base de datos.
• Un sistema de integridad que mantiene la integridad y la consistencia de los datos.
• Un sistema de control de concurrencia que permite el acceso compartido a la base
de datos.
• Un sistema de control de recuperación que restablece la base de datos después de
que se produzca un fallo del hardware o del software.
• Un diccionario de datos o catálogo accesible por el usuario que contiene la
descripción de los datos de la base de datos.

A diferencia de los sistemas de ficheros, el SGBD gestiona la estructura física de los


datos y su almacenamiento. Con esta funcionalidad, el SGBD se convierte en una
herramienta de gran utilidad. Sin embargo, desde el punto de vista del usuario, se podría
discutir que los SGBD han hecho las cosas más complicadas, ya que ahora los usuarios ven
más datos de los que realmente quieren o necesitan, puesto que ven la base de datos
completa. Conscientes de este problema, los SGBD proporcionan un mecanismo de vistas
que permite que cada usuario tenga su propia vista o visión de la base de datos. El lenguaje
de definición de datos permite definir vistas como subconjuntos de la base de datos.
Plataformas de Desarrollo más utilizadas
Una plataforma de desarrollo es el entorno de software común en el cual se desenvuelve la
programación de un grupo definido de aplicaciones.
Se puede decir, que es un sistema que sirve como base para hacer funcionar determinados
módulos de hardware o software con los que es compatible como sistemas operativos
(Linux, Windows,Unix,Mac OS, Solaris etc), de software (Java-JDK y JRE, Adobe air, NET
FRAMEWORK etc), de hardware(arquitectura RISC, Macintoch, Arquitectura ARM).

TIPOS DE PLATAFORMAS:
Servidores LAMP (Linux, Apache, My SQL, PHP).
Es un conjunto de diferentes herramientas que utilizadas de manera conjunta nos permiten
implantar de una forma rápida y eficiente soluciones de servidor de páginas web dinámicas.
Los servidores de tipo LAMP presentan dos características que permiten diferenciarlos de
forma categórica de otros servidores (en especial servidores web), como son su fuerte
integración con bases de datos y el gran dinamismo de los contenidos y servicios que
ofrecen.
Estas herramientas son:
• Linux (L). Servidor GNU/Linux donde se instalan los servicios.
• Apache (A). Servidor de páginas web.
• My SQL (M). Servidor de dase de datos para permitir que las páginas sean dinámicas.
• PHP (P). Lenguaje de programación usado para la creación de la web dinámica.

Servidores WAMP (Windows, Apache, My SQL, PHP).


Un servidor WAMP es un PC con Windows que dispone de un servidor Apache, un gestor
de bases de datos MySQL y el lenguaje de programación PHP. Las siglas WAMP son un
acrónimo de Windows + Apache + MySQL + PHP. Al igual que WAMP
Disponer de un Servidor WAMP, nos permitirá instalar aplicaciones web accesibles desde
nuestra red local, y si abrimos el puerto 80 de nuestro router, también serán accesibles
desde Internet. La gran mayoría de las aplicaciones web libres existentes, requieren de
Apache + MySQL + PHP para funcionar. Podemos instalar estas aplicaciones por separado y
después configurarlas, pero instalando un paquete WAMP se instalan y configuran
automáticamente dichas aplicaciones para Windows. Apache + MySQL + PHP son la base
para poder instalar infinidad de aplicaciones web libres, entre las que destacamos:

• Gestores de Contenidos orientados a sitios web: Joomla, Drupal, etc.

• Gestores de Contenidos orientados a educación: Claroline, Moodle, Dokeos,

MediaWiki,etc
• Blogs: WordPress, Serendipity,etc

• Wikis: Mediawiki, Tikiwiki, Dokuwiki,etc

• Foros: phpBB, myBB, etc

• Galerías de imágenes: Gallery, Coppermine, etc

Servidores WISA (Windows, Internet information service, SQL, ASP o ASP.NET).


La plataforma WISA está basada en tecnologías desarrolladas por la compañía Microsoft; se
trata, por lo tanto, de software propietario. La componen los siguientes elementos:
• Windows: Sistema operativo.
• Internet Information Services: servidor web.
• SQL Server: gestor de bases de datos.
• ASP o ASP.NET: como lenguaje para scripting del lado del servidor.

Sistemas Gestores de Bases de Datos (SGBD)


Un sistema de gestión de bases de datos (SGBD o DBMS) es un software que proporcionan
una forma de almacenar y recuperar la información de una base de datos de manera
práctica y enciente.
Básicamente, un SGBD ofrece una interfaz entre la base de datos y los usuarios finales o
aplicaciones, asegurando que los datos estén organizados de manera consistente y que
sean fácilmente accesibles.
De esta manera, los usuarios pueden crear, leer, actualizar y eliminar datos de una BD.
Clasificación de los Sistemas Gestores de Base de Datos
Según la forma como administran los datos se dividen en dos grupos:
• Relacionales de tipo SQL: Las tablas tienen estructuras rígidas, donde cada dato
tiene un tipo definido, no podemos almacenar datos de otro tipo diferente, y no se
vale más de un dato en un mismo campo. Puesto que todos los registros cumplen las
mismas reglas, si tu código funciona con un solo registro, servirá con todos los
demás.
• No relacionales de tipo NOSQL: ninguna exige que definir el tipo de datos que se va
a almacenar. Un día un campo puede ser un número y al otro día un String o Array o
hasta un JSON. Más que saber qué es la data, NoSQL pone mayor prioridad en cómo
acceder dicha data.

Para poder tener una idea clara sobre que sistema gestor de base de datos podríamos
utilizar en nuestro caso de estudio haremos referencia a los mas importante usados
actualmente en el mercado:

My SQL:
Es el gestor de base de datos de código abierto más popular utilizado en la web,
principalmente con el lenguaje de programación PHP.
La eficacia, fiabilidad y facilidad de uso son las principales características de esta base de
datos utilizada en aplicaciones web como Facebook y Twitter.
Características:
• Compatibilidad con SQL.
• Arquitectura cliente/servidor.
• Procedimientos almacenados.
• Soporte multiplataforma.
• Soporte de Unicode.
• Consulta de caché.
• Soporte SSL.
SQL Server:
es un gestor de base de datos desarrollado por Microsoft y que se basa en el lenguaje de
consultas estructurado SQL.
Además, cuenta con diferentes versiones que se adaptan a diferentes cargas de trabajo y
demandas.
Características:
• Admite una amplia variedad de aplicaciones de procesamiento de transacciones.
• SQL está vinculado a Transact-SQL (T-SQL).
• Visualización de datos e informes en dispositivos móviles.
• Compatibilidad con nube híbrida.
• Escalabilidad y seguridad.

PosgreSQL:
Es un potente gestor de bases de datos relacionales orientado a objetos que extiende las
funciones de SQL.
Disponible para múltiples plataformas, PostgreSQL admite transacciones, sub selecciones,
disparadores, vistas, integridad referencial de clave externa y bloqueo sofisticado.
Características:
• Tipos definidos por el usuario.
• Herencia de tablas.
• Extensibilidad.
• Mecanismo de bloqueo sofisticado.
• Clave foránea de integridad referencial.
• Integridad de datos.
• Vistas, reglas, subconsultas.
• Control de concurrencia multi-versión (MVCC).
Mongo Db:
Se trata de la base de datos NoSQL más popular del mundo orientada a documentos, con
gran escalabilidad y flexibilidad.
Almacena los datos en documentos similares a JSON, lo que significa que los campos pueden
variar de un documento a otro y la estructura de los datos se puede cambiar con el tiempo.
• Características:
• Gratuito y de código abierto.
• Alta disponibilidad.
• Escalado horizontal.
• Colecciones de tamaño fijo.
• Duplicación de datos.
• Distribución geográfica.
• Balanceo de carga.
• Indización y replicación.

SQ Lite:
Es un motor de base de datos SQL autónomo, de alta confiabilidad, integrado, completo y
de dominio público.
El término “Lite” en SQLite significa poco peso en términos de configuración, administración
de bases de datos y recursos necesarios.
Características:
• Configuración cero.
• Sin servidor.
• Archivo de base de datos único.
• Compacto.
• Registro de longitud variable.
• Código fuente legible.
Redis:
Acrónimo de Remote DIctionary Server, es un motor de base de datos donde las claves
pueden contener cadenas, hashes, listas, conjuntos y conjuntos ordenados.
A diferencia de otros sistemas, Redis es utilizado principalmente para el almacenamiento
en caché y la administración de sesiones.
Características:
• Increíblemente rápido.
• Simplicidad.
• Operaciones atómicas.
• Admite varios lenguajes de programación.
• Replicación maestra/esclavo.
• Persistencia instantánea.
• Fácil de usar, instalar y mantener.

María DB:
Es un SGBD relacional derivado de MySQL, con licencia GPL y las mismas características de
MySQL (con algunas extensiones).
El sistema se basa en SQL y admite el procesamiento de datos de estilo ACID con atomicidad,
consistencia, aislamiento y durabilidad garantizados para las transacciones.
Características:
• Admite API de JSON.
• Replicación de datos en paralelo.
• Múltiples motores de almacenamiento.
• Notablemente escalable.
• Amplia selección de motores de almacenamiento.
• Utiliza un lenguaje de consulta estándar y popular.
• Velocidad y alta seguridad.
Oracle:
Es el sistema de BD relacional que compite con SQL Server en el mercado de las bases de
datos empresariales.
Al igual que SQL Server, cuenta con diferentes versiones de software, según los requisitos y
el presupuesto. Además, es compatible con la mayoría de las plataformas principales,
incluidos Windows, UNIX, Linux y Mac OS.
Características:
• Totalmente escalable.
• Inteligencia de negocios.
• Agrupamiento
• Gestión de contenidos.
• Servicios de localización.
• Gestión del servidor.
• Alto rendimiento, seguridad y análisis.

Cassandra:
Apache Cassandra es una base de datos distribuida para administrar grandes cantidades de
datos estructurados en muchos servidores de productos básicos.
Características:
• Disponibilidad continua.
• Rendimiento a escala lineal.
• Simplicidad operativa.
• Escalabilidad y alta disponibilidad.
• Fácil distribución de datos.
• Tolerancia a fallas.
Luego de evaluar algunos modelos de gestores de bases de datos y su clasificación ¿cómo
podemos decir para nuestro caso de estudio cual debemos utilizar?
Según las necesidades:
Si lo que necesitamos es que los datos se mantengan exactos y consistentes a través del
tiempo, una base de datos SQL nos lo puede garantizar. Esto es lo ideal en muchos sistemas
intolerantes a las fallas, donde mientras menos aberturas existan, mejor (por ejemplo, la
mayoría, quizá totalidad, del software bancario y empresarial). Aquí SQL cuida las espaldas.

Según la estructura:
Pero también, si la estructura de datos es propensa a cambiar, el SQL nos podría
perjudicar al imponer una estructura rígida (por ejemplo, si estamos en las fases de prototipo
o lanzamiento temprano de una app, donde los datos que se guardan son más maleables).
Mientras que añadir llaves nuevas a un documento NoSQL suele ser muy fácil, modificar
tablas SQL puede traer muchos inconvenientes si ya el sistema funciona con cierta
estructura, y más aún si hablamos de introducir cosas como llaves primarias.
Esto último no es necesariamente malo, pues nos obligaría a pensar dos veces antes de
cambiar las estructuras de datos, ahorrando bugs y modificaciones innecesarias en toda la
app.

Según operaciones atómicas:


Una operación atómica es cuando se hace un cambio que afecta a múltiples
entidades de la base de datos al mismo tiempo. Esto suele acompañarse con el concepto de
“transacciones”: decirle a la BD que, o cambian todas las tablas que queremos al mismo
tiempo, o no cambia nada y la base de datos queda intacta (el famoso “rollback”, todo o
nada).
SQL: Las bases de datos relacionales tienen atomicidad gracias a que sus tablas están
conectadas y pueden “ponerse de acuerdo” para no aceptar cambios nuevos hasta que
termine una transacción. Si nuestro sistema posee operaciones donde necesitemos cambiar
datos de varias entidades al mismo tiempo, ya es una alerta roja para usar SQL, pues
reconocemos que hay relaciones entre los datos, y que éstas son importantes.
Si además hablamos de operaciones delicadas (como procesar una factura, donde se suelen
actualizar más cosas, por ejemplo, el stock de un producto), es casi seguro que la atomicidad
nos podría salvar de situaciones como en las que dos personas traten de pagar por el último
de un producto al mismo tiempo.
NoSQL: (Datos no relacionales), no hay relaciones sobre las que hacer una transacción
atómica. Simplemente, cuando se desea hacer cambios en 5 entidades diferentes, de frente
o detrás de cámaras habrá 5 llamadas diferentes a la base de datos una detrás de otra.
Es posible que, entre tantos viajes de la data, algún otro cliente haga una solicitud a la base
de datos que modifique lo mismo que nosotros y se produzca una “race condition”: 2
clientes queriendo tener una versión diferente del mismo dato, y esto termina muy mal
cuando hablamos de compras, reservaciones y cosas así.
Los SGBD NoSQL no cuenta con atomicidad, y ésta es vital para ciertos sistemas.
¿La desventaja? La atomicidad no es barata para la máquina, consume capacidad de
procesamiento y afecta el rendimiento de la base de datos, pues ésta su trabajo es garantizar
que nadie más se intercale en una transacción.

Según La Escalabilidad:
En cuanto a esto debemos hacernos la siguiente pregunta ¿qué tanto podemos
crecer con la base de datos? Este suele ser un punto controversial cuando hablamos de
cantidad de registros que podemos almacenar antes que la BD empiece a dar problemas. ¿La
realidad? Depende totalmente de la base de datos específica que usemos.
Para empezar, cuando pensamos en escalabilidad es muy probable que realmente pensemos
en escalabilidad vertical, aumentar el poder de una máquina para que pueda aguantar una
mayor cantidad de datos.

Soluciones SQL como MySQL, Microsoft SQL Server y Postgre han probado su poder
de escalar verticalmente a través de los años, pero NoSQL también tiene sus
soluciones como Hadoop o Riak que, en sus respectivos campos (Big Data y soluciones
distribuidas) aguantan datos como una montaña aguantando gotas de lluvia.
¿Entonces, donde hay mayor diferencia? En la escalabilidad horizontal, es decir, en cuántas
máquinas diferentes podemos dividir la BD para repartir la carga.
SQL: La verdad es que la mayoría de soluciones SQL tienen buen soporte para escalar
verticalmente.
Pero cuando tratas de que la información en tu base de datos se mantenga consistente para
todos los usuarios, los problemas llegan al hablar de miles y millones de registros. Aun con
una máquina muy potente, podemos vernos obligados a dividir la base de datos entre
diferentes procesadores y hasta servidores.
Ahora, las bases de datos distribuidas SQL no son un concepto nuevo y compañías como
Microsoft llevan años trabajando en ello, pero no es algo barato (para el bolsillo ni para el
procesamiento).
Siempre hay cierto riesgo de presentar inconsistencias, pues la BD ahora debe revisar que
todo esté en orden a través de diferentes máquinas.
NoSQL: Cuando no tienes la consistencia de datos como prioridad, distribuir y replicar la
base de datos en múltiples máquinas es trivial, y por eso se considera que el NoSQL es
excelente para bases de datos que necesitan escalar horizontalmente (por ejemplo, en Big
Data, donde una sola máquina se queda corta sumamente rápido).
¿Qué significa esto?
Las bases de datos relacionales ya vienen equipadas para crecer verticalmente, lo cual es
más que suficiente para empresas pequeñas a grandes, proyectos personales, blogs y
demás… hasta cierto punto, y mientras se tenga una buena máquina con la capacidad
requerida.
NoSQL, por el contrario, la tiene más fácil residiendo en muchas máquinas menos potentes.

Según la velocidad:
Esto es que tan rápidas son las lecturas y escrituras a la BD. Una necesidad básica, pero tan
importante que puede definir por sí sola con qué modelo nos quedamos. Si pensáramos por
un momento ¿que se resalta en las publicidades de servicios en la nube como la Realtime
Database de Firebase?
“Sincroniza datos en milisegundos.”
SQL: Las garantías que te dan las relaciones conllevan un precio. Esto es más evidente
cuando empezamos a hacer consultas con “joins” (que involucran múltiples entidades) y de
repente una búsqueda puede tardar minutos y hasta horas debido a la gran cantidad de
datos que está revisando.
Es un problema que se suele aliviar con buen diseño de la BD, pero está ahí y te pasara tarde
o temprano.
NoSQL: Mientras que un buen diseño en SQL sirve para amortiguar un golpe, en NoSQL
determinará que tanto provecho le saquemos a la velocidad con que viene.
Asumiendo que buscamos los datos de una sola entidad, las bases de datos no relacionales
suelen contar con mecanismos de búsqueda sumamente rápida para conseguir un dato
específico entre millones.
¿Qué significa esto?
Que, si sabemos cómo diseñar la base de datos, es casi seguro que una NoSQL bien diseñada
gane por mucho en velocidad a una SQL, haciéndolas sumamente atractivas para
aplicaciones modernas donde los usuarios viven de su plan de datos, y donde si tu app no
carga en un par de segundos ya piensan en desinstalar / volver a Google.
Siempre se puede optimizar ambos modelos hasta obtener un rendimiento aceptable, pero
en NoSQL se puede diseñar la base de datos en función a las consultas que se harán, dándole
una ventaja enorme.

Según la Consistencia vs la Redundancia:


Probablemente la diferencia más marcada entre ambos modelos, y donde más fácil
nos es dejarnos llevar por nuestros conocimientos de SQL.
SQL: La consistencia de datos es asegurarse de que un único dato este una única vez en toda
la base de datos; y se suele lograr con el proceso de “Normalización” (reducir la cantidad de
datos “repetidos” en la BD).
Esto garantiza que, por ejemplo, si se busca el nombre de alguien, el nombre que se
verá es exactamente el mismo que podrían ver tu vecino o alguien en Pekín, si están
conectados a la misma base de datos. Igual de importante, significa que mientras vayas
navegando en tu aplicación, si 10 pantallas diferentes cargan un dato, las 10 veces será el
mismo dato.

NoSQL: La redundancia es repetir adrede los datos a conveniencia en varias partes de la BD


(datos “de-normalizados”).
Por ejemplo, si almacenamos datos de una reservación hotelera, guardamos todos los datos
de una persona en la entidad “Persona”. Pero, además, guardamos una copia del nombre,
teléfono y demás información personal en cada “Reservación” y posiblemente en cada
“Factura” de esta persona.
Si cambian los datos de una persona en “Persona”, no necesariamente se reflejará este
cambio en las otras entidades (ya esto queda a mano y decisión del programador); pero
también hace que, al buscar facturas o reservaciones, no tenemos que dar vueltas extra para
obtener los datos de la persona.
¿Qué significa esto?
Algunas aplicaciones necesitan consistencia de datos, pero otras prefieren el incremento en
velocidad. Debemos recordar que el espacio de almacenamiento es barato y solo se abarata
más cada año, pero el procesamiento y los datos móviles aún son oro para los usuarios
finales. También, al diseñar bases de datos NoSQL, debes tener siempre en mente que la
redundancia está de tu lado. Muchas veces nos quejamos al utilizar servicios como la
Realtime Database de Firebase pues restringen nuestra capacidad para consultar diferentes
colecciones (entidades) al mismo tiempo. En realidad, están diseñados así para optimizar las
consultas rápidas, y el problema más común es que no aprovechamos al máximo la
redundancia para poner la información que necesitamos en un único lugar.

Según la Comodidad para el Programador:


Con comodidad podemos referirnos a muchas cosas tales como:
SQL: La comunidad SQL lleva décadas madurando, y esto se traduce no solo en mejores
herramientas administrativas, sino en estándares mejores definidos, mayor documentación,
y hasta comunidades más grandes de desarrolladores listos para ayudarnos con los
diferentes problemas.
NoSQL: Aquí el punto fuerte es la conveniencia: factores como que los datos no necesiten
tipos o que se puedan las redundancias, hacen más flexible el desarrollar con NoSQL.
Si se está elaborando un prototipando, los cambios son más rápidos y tienen menos
consecuencias. Si se sabe qué se quiere mostrar a los usuarios, es fácil diseñar bases de datos
especializadas en servir exacta y rápidamente la información que se quiere.

¿Qué significa esto?


Que las bases de datos NoSQL suelen dar más libertad para experimentar y equivocarnos,
haciendo cambios a diestra y siniestra… pero éstas son necesidades que no siempre se
tendrán.
Cuando se tienes un sistema mejor definido, hará falta contar con buenas herramientas
administrativas o saber que hay más gente ahí afuera lista para apoyarnos o unirse a el
equipo rápidamente, y en esto SQL brilla.
En resumen, se puede decir que NoSQL te da más facilidades como desarrollador y ventajas
a corto plazo, mientras que los beneficios de SQL los sueles ver cuándo va pasando el tiempo
y te toca mantener el sistema.

Por tanto, en nuestro caso de estudio se propone el uso de My SQL como Gestor de
Base de Datos, luego de analizar al tipo de datos que se manejarían (texto, imágenes,
sonido, archivos de tipo multimedia etc), el gran flujo de información que representa un
sistema de registros médicos, un diseño perdurable en el tiempo y con la mínima
recurrencia de errores, obteniendo las siguientes ventajas:
• MySql es multiplataforma, funciona en una amplia lista de sistemas operativos, al
contrario de otros sistemas como por ejemplo MS SQL Server que solo es compatible
con Windows.
• Trae soporte para aproximadamente diez motores de almacenamiento, cada uno
con sus características especiales; entre ellas se deben destacar:
• InnoDB: es el motor de almacenamiento predeterminado a partir de la versión 5.5
de MySql. Su característica principal es que soporta transacciones y bloqueo de
registros.
• MyISAM: motor predeterminado para versiones anteriores a 5.5, con la diferencia
que no soporta transacciones.
• Alta performance, debido a su simplicidad ya que soporta múltiples motores de
almacenamiento, MySql tiene un alto rendimiento comparado con sistemas
similares.
• Bajos costos: la versión Community es libre bajo la licencia GNU y la versión
comercial es relativamente más económica en relación con otros sistemas.
• Cuenta con soporte para aproximadamente diez motores de almacenamiento, cada
uno con sus características.

MySql Workbench
Se trata de una herramienta opcional dentro del paquete Sql.comunity. Básicamente es una
aplicación de entorno visual que permite el diseño de bases de datos, administración y
ejecución de consultas SQL. Facilita la creación de nuevos sistemas relacionales y la edición
de bases de datos ya creadas.
MySql es un sistema open source para gestión de bases de datos relacionales, que brinda
un excelente rendimiento, flexibilidad y velocidad. Junto a su herramienta Workbench
permite la completa administración tanto de registros como de usuarios, permisos y
conexiones. Debido a su estabilidad, seguridad y popularidad, elegir MySql para los
proyectos, brinda un alto grado de profesionalidad y potencia.

Puntos fuertes de la Base de datos MY SQL


• La flexibilidad con todas las versiones de Linux, UNIX y Windows es otra de las
ventajas principales de la base de datos MySQL. Permite personalizarla totalmente
al ser de código abierto.
• Por otro lado, el alto rendimiento que generan las bases de datos MySQL es
increíble tanto si es un sistema de procesamiento de transacciones de alta velocidad
o un sitio web de alto volumen con servicio a mil millones de consultas al día.
• Soluciones de software de código abierto: Las soluciones de software de código
abierto son gratuitas y ofrecen una alta calidad de servicio. Muchas instituciones
pequeñas están adoptando sistemas de EMR utilizando soluciones de código
abierto.

Características de MySQL
MySQL es un sistema de base de datos relacional, lo que quiere decir que archiva
datos en tablas separadas en lugar de guardar todos los datos en un gran archivo, lo que le
permite tener mayor velocidad y flexibilidad. Estas tablas están relacionadas de formas
definidas, por lo que se hace posible combinar distintos datos en varias tablas y conectarlos.
Cualquier persona puede utilizar MySQL y crear modificaciones bajando el código fuente
con el fin de ajustarlo a su medida y para su uso, ya que es un software de código abierto.
Se establece el GPL (General Public License) en donde se define lo que un usuario puede
realizar o no con el software. Si un usuario no se ajusta a las medidas del GPL o requiere el
uso del software para aplicaciones comerciales, se puede comprar una versión comercial
licenciada.
Inicialmente MySQL carecía de características que podrían considerarse esenciales
de las bases de datos relacionales, como integridad referencial y transacciones, aunque a
pesar de esto los desarrolladores web comenzaron a utilizarla debido a su simplicidad. A lo
largo de las versiones y actualizaciones, estos requerimientos se han ido incorporando al
software, tanto por parte de la compañía Oracle como también de desarrolladores de
software libre.

Algunas características de MySQL son:


• Permite escoger múltiples motores de almacenamiento para cada tabla.
• Agrupación de transacciones, pudiendo reunirlas de forma múltiple desde varias
conexiones con el fin de incrementar el número de transacciones por segundo.
• Conectividad segura.
• Ejecución de transacciones y uso de claves foráneas.
• Presenta un amplio subconjunto del lenguaje SQL.
• Replicación
• Disponible en casi todas las plataformas o sistemas.
• Búsqueda e indexación de campos de texto.
• Utiliza varias herramientas para portabilidad.
• Tablas hash en memorias temporales
• Uso de tablas en disco b-tree para búsquedas rápidas con compresión de índice.
• Ofrece un sistema de contraseñas y privilegios seguros de verificación basada en el
host y tráfico de contraseñas encriptado al conectarse a un servidor.
• Uso de multihilos mediante hilos de kernel.
• Soporta gran cantidad de datos, incluso con más de 50 millones de registros.
• En las últimas versiones, se permiten hasta 64 índices por tablas. Cada índice puede
consistir desde 1 a 16 columnas o partes de columnas. El máximo ancho de límite es
de 1000 bytes.

En resumen, esto traería como ventajas para nuestra organización, clínica o ente de
salud:
Ventajas
• MySQL por ser de uso libre y gratuito, proporciona más bajos costos de adquisición.
• Software con Licencia GPL.
• Bajo costo en requerimientos para la elaboración y ejecución del programa.
• No se necesita disponer de Hardware o Software de alto rendimiento para la
ejecución del programa.
• Velocidad al realizar las operaciones y buen rendimiento.
• Facilidad de instalación y configuración.
• Soporte en casi el 100% de los sistemas operativos actuales.
• Baja probabilidad de corrupción de datos.
• Entorno con seguridad y encriptación.

Conclusiones:
Es importante entender que, para elegir el SGBD más adecuado, se debe comenzar
por el estudio del tipo de datos que se van a almacenar y cómo se van a administrar.
Entre los Sistemas Gestores de Base de Datos citados seguro que encontrarás el que más
se adapta a tus necesidades de acuerdo a la inversión a realizar, volumen de información a
almacenar, tipo de consultas a realizar, etc.

Existe gran variedad de herramientas tanto de libre distribución como propietarias,


todas enfocadas a apoyar el desarrollo de software. Cada organización es la encargada de
determinar porque rama enfocarse a la hora de implementar sus soluciones de software.
Así mismo se conocen herramientas que ofrecen más ventajas que otras en cuanto a la
facilidad de diseño, entendimiento de la sintaxis, utilidades, nivel de almacenamiento,
transportabilidad desde y hacia diversas plataformas, entre otras. Es función del equipo de
desarrollo definir por cuales herramientas inclinarse, de tal manera que se logre construir
software de calidad que satisfaga las necesidades de su organización.
Toda aplicación antes de salir a producción tiene todo un proceso de análisis de
requerimientos, estudios de factibilidad, implementación de prototipos, determinación de
los factores críticos de éxito, diseño, plan de pruebas, que el usuario final no ve, lo que nos
permite establecer que el proceso de construcción de software es un proceso complejo y
más aún cuando lo que más interesa es poder lograr que se cumpla con las necesidades por
las que fue concebido.

ELABORADO POR: T.S.U. MARCOS ANDRES ARRIOJAS MONSALVE


CEDULA DE IDENTIDAD: v14.349.945
CURSO: BASE DE DATOS II
FECHA 02/07/2019

También podría gustarte