Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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.
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.
MediaWiki,etc
• Blogs: WordPress, Serendipity,etc
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 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.
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.
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.
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.