Este documento proporciona información sobre bases de datos. Explica qué son las bases de datos SQL y NoSQL, y describe algunas de las bases de datos más populares como SQL Server, Oracle, MongoDB, Cassandra y Oracle NoSQL. También define conceptos clave como lenguaje SQL, bases de datos relacionales y no relacionales, y características de almacenamiento de datos distribuidos.
1. CURSO NACIONAL
FORMACIÓN DISCIPLINAR
DOCENTES DE EDUCACIÓN MEDIA SUPERIOR
INSTITUCIONES DE EDUCACIÓN PÚBLICA DE EDUCACIÓN
MEDIA SUPERIOR
CURSO: INFORMÁTICA
Actividad de Aprendizaje No. 4
Base de datos
Prof. Rigoberto Fermín Pérez Céspedes
2.
3. ¿Qué es una base de datos?
Una base de datos o banco de datos es un conjunto de datos pertenecientes a un
mismo contexto y almacenados sistemáticamente para su posterior uso. En este
sentido; una biblioteca puede considerarse una base de datos compuesta en su
mayoría por documentos y textos impresos en papel e indexados para su consulta.
Actualmente, y debido al desarrollo tecnológico de campos como la informática y la
electrónica, la mayoría de las bases de datos están en formato digital, siendo este un
componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango
de soluciones al problema del almacenamiento de datos.
4. ¿Qué es una base de datos de tipo SQL?
El término SQL es el acrónimo en inglés –cuyo significado es sigla que se pronuncia como una palabra y
que por el uso termina por lexicalizarse- de Structured Query Language (Lenguaje de Consulta
Estructurado). Esta sigla fue introducida por primera vez, en 1979, por Oracle, en una base de datos
comercial. Anteriormente se llamaba SEQUEL – Structured English Query Language- y servía como
interfaz para un sistema experimental de base de datos llamado SYSTEM R, se adoptó la nueva
denominación por cuestiones legales.
Puede admitirse como su definición: es un lenguaje de base de datos normalizado, que utilizan los
diferentes motores de bases de datos para efectuar determinadas operaciones sobre los datos o sobre
su estructura.
También puede darse como su concepto: lenguaje estándar de comunicación con bases de datos.
Tratándose de esta manera de un lenguaje normalizado que permite que se trabaje con todo tipo de
lenguaje (ASP o PHP) en combinación con todo tipo de base de datos (MS Access, SQL Server, MySQL,
etc. Entre sus características, se pueden mencionar:
• Permite el acceso a las bases de datos.
• Aprovecha el poder y la flexibilidad de los sistema relacionales, facilitando las
operaciones sobre ellos.
• Se considera un lenguaje declarativo de alto nivel.
• Acepta negación y concesión de permisos, restricciones de integridad, controles
a la transacción, entre otros.
• Se puede usar interactivamente, para lograr esto, sus sentencias se escriben y se
llevan en líneas de comandos.
• Otra de sus versiones es el FSQL, que es el Structured Query Language, pero
basado en lógica difusa, para ser implementado, en bases de datos difusas.
5. ¿Qué es una base de datos No- SQL?
En informática, NoSQL (a veces llamado
"no sólo SQL") es una amplia clase de
sistemas de gestión de bases de datos que
difieren del modelo clásico de SGBDR
(Sistema de Gestión de Bases de Datos
Relacionales) en aspectos importantes,
siendo el más destacado que no usan SQL
como lenguaje principal de consultas. Los
datos almacenados no requieren
estructuras fijas como tablas, normalmente
no soportan operaciones JOIN, ni
garantizan completamente ACID
(atomicidad, consistencia, aislamiento y
durabilidad), y habitualmente escalan bien
horizontalmente. Los sistemas NoSQL se
denominan a veces "no sólo SQL" para
subrayar el hecho de que también pueden
soportar lenguajes de consulta de tipo SQL.
Por lo general, los investigadores
académicos se refieren a este tipo de bases
de datos como almacenamiento
estructurado, término que abarca también
las bases de datos relacionales clásicas. A
menudo, las bases de datos NoSQL se
clasifican según su forma de almacenar los
datos, y comprenden categorías como
clave-valor, las implementaciones de
BigTable, bases de datos documentales, y
bases de datos orientadas a grafos.
Los sistemas de bases de datos NoSQL
crecieron con las principales redes sociales,
como Google, Amazon, Twitter y Facebook.
Estas tenían que enfrentarse a desafíos con
el tratamiento de datos que las
tradicionales SGBDR no solucionaban
En ese sentido, a menudo, las bases de datos NoSQL están altamente optimizadas para las
operaciones recuperar y agregar, y normalmente no ofrecen mucho más que la funcionalidad de
almacenar los registros (p.ej. almacenamiento clave-valor). La pérdida de flexibilidad en tiempo de
ejecución, comparado con los sistemas SQL clásicos, se ve compensada por ganancias significativas en
escalabilidad y rendimiento cuando se trata con ciertos modelos de datos.
7. SQL Server
Características
Soporte de transacciones.
Soporta procedimientos almacenados.
Incluye también un entorno gráfico de administración,
que permite el uso de comandos DDL y DML
gráficamente.
Permite trabajar en modo cliente-servidor, donde la
información y datos se alojan en el servidor y los
terminales o clientes de la red sólo acceden a la
información.
Además permite administrar información de otros
servidores de datos.
Este sistema incluye una versión reducida, llamada MSDE con
el mismo motor de base de datos pero orientado a proyectos
más pequeños, que en sus versiones 2005 y 2008 pasa a ser
el SQL Express Edition, que se distribuye en forma gratuita.
Es común desarrollar proyectos completos empleando
Microsoft SQL Server y Microsoft Access a través de los
llamados ADP (Access Data Project). De esta forma se
completa la base de datos (Microsoft SQL Server), con el
entorno de desarrollo (VBA Access), a través de la
implementación de aplicaciones de dos capas mediante el
uso de formularios Windows.
Microsoft SQL Server es un sistema de
manejo de bases de datos del modelo
relacional, desarrollado por la empresa
Microsoft.
El lenguaje de desarrollo utilizado (por línea
de comandos o mediante la interfaz gráfica
de Management Studio) es Transact-SQL
(TSQL), una implementación del estándar
ANSI del lenguaje SQL, utilizado para
manipular y recuperar datos (DML), crear
tablas y definir relaciones entre ellas (DDL).
El código fuente original de SQL Server que
fue utilizado en las versiones previas a la
versión 7.0 habría sido comprado de
Sybase, pero fue actualizado en las
versiones 7.0 y 2000, y reescrito en la
versión 2005. Generalmente, cada 2-3 años,
una nueva versión es lanzada y, entre estos
lanzamientos, se proponen service packes
con mejoras y correcciones de bugs, y
hotfixes por problemas urgentes en el
sistema de seguridad o bugs críticos.
8. Oracle
Historia
Oracle surge en 1977 bajo el nombre de SDL (Software
Development Laboratories).
En 1979, SDL cambia su nombre por Relational Software, Inc. (RSI).
La fundación de SDL fue motivada principalmente a partir de un
estudio sobre los SGBD (Sistemas Gestores de Base de Datos) de
George Koch. Computer World definió este estudio como uno de
los más completos jamás escritos sobre bases de datos. Este
artículo incluía una comparativa de productos que dirigía a
Relational Software como el más completo desde el punto de vista
técnico. Esto se debía a que usaba la filosofía de las bases de
datos relacionales, algo que por aquella época era todavía
desconocido.
En la actualidad, Oracle (Nasdaq: ORCL) todavía encabeza la lista.
La tecnología Oracle se encuentra prácticamente en todas las
industrias alrededor del mundo y en las oficinas de 98 de las 100
empresas Fortune 100. Oracle es la primera compañía de software
que desarrolla e implementa software para empresas cien por
ciento activado por Internet a través de toda su línea de
productos: base de datos, aplicaciones comerciales y herramientas
de desarrollo de aplicaciones y soporte de decisiones. Oracle es el
proveedor mundial líder de software para administración de
información, y la segunda empresa de software.
Oracle Database es un sistema de gestión
de base de datos de tipo objeto-relacional
(ORDBMS, por el acrónimo en inglés de
Object-Relational Data Base Management
System), desarrollado por Oracle
Corporation.
Su dominio en el mercado de servidores
empresariales había sido casi total hasta que
recientemente tiene la competencia del
Microsoft SQL Server y de la oferta de otros
RDBMS con licencia libre como PostgreSQL,
MySQL o Firebird.
Las últimas versiones de Oracle han sido
certificadas para poder trabajar bajo
GNU/Linux.
9. Mongo DB ¿Cómo funciona MongoDB?
MongoDB está escrito en C++, aunque las consultas se hacen
pasando objetos JSON como parámetro. Es algo bastante
lógico, dado que los propios documentos se almacenan en
BSON. Por ejemplo:
db.Clientes.find({Nombre:"Pedro"});
La consulta anterior buscará todos los clientes cuyo nombre
sea Pedro.
MongoDB viene de serie con una consola desde la que
podemos ejecutar los distintos comandos. Esta consola está
construida sobre JavaScript, por lo que las consultas se
realizan utilizando ese lenguaje. Además de las funciones de
MongoDB, podemos utilizar muchas de las funciones propias
de JavaSciprt. En la consola también podemos definir
variables, funciones o utilizar bucles.
¿Dónde se puede utilizar MongoDB?
Aunque se suele decir que las bases de datos NoSQL tienen
un ámbito de aplicación reducido, MongoDB se puede utilizar
en muchos de los proyectos que desarrollamos en la
actualidad.
Cualquier aplicación que necesite almacenar datos semi
estructurados puede usar MongoDB. Es el caso de las típicas
aplicaciones CRUD o de muchos de los desarrollos web
actuales.
MongoDB es una base de datos
orientada a documentos. Esto quiere
decir que en lugar de guardar los datos
en registros, guarda los datos en
documentos. Estos documentos son
almacenados en BSON, que es una
representación binaria de JSON.
Una de las diferencias más importantes
con respecto a las bases de datos
relacionales, es que no es necesario
seguir un esquema. Los documentos de
una misma colección - concepto similar
a una tabla de una base de datos
relacional -, pueden tener esquemas
diferentes.
¿Dónde no se debe usar MongoDB?
En esta base de datos no existen las transacciones. Aunque nuestra aplicación puede utilizar alguna técnica
para simular las transacciones, MongoDB no tiene esta capacidad. Solo garantiza operaciones atómicas a
nivel de documento. Si las transacciones son algo indispensable en nuestro desarrollo, deberemos pensar
en otro sistema.
10. Oracle NoSQL.
Características
La primera definición que nos dan en su web: “Escalable,
distribuida, diseñada para proveer una gestión de datos
altamente fiable, flexible y disponible a través de un
conjunto configurable de nodos de almacenamiento.
Se trata de una base de datos cuyo almacenamiento
soporta el uso de discos SSD y utiliza la memoria caché
para la agilización de las consultas. Utiliza Map and
Reduce y soporta transacciones en sus consultas.
Oracle NoSQL, aunque anuncia ser una base de datos
clave-valor, ofrece distintas maneras de modelar los
datos:
tablas estilo base de datos relacional.
documentos JSON.
pares de clave-valor.
Oracle NoSQL organiza los registros usando claves. Todos
los registros tienen uno o más componentes "major key"
y, opcionalmente, uno o más componentes "minor key".
Si los componentes minor key están en uso, la
combinación de los componentes mayores y menores
identifica de forma exclusiva un único registro.
Oracle NoSQL es una base de datos
distribuida de tipo clave-valor lanzada en
Septiembre de 2011. Está escrita en Java y C
y su última versión estable es de Diciembre
de 2015.
Podemos encontrarla en dos ediciones:
Server Community bajo licencia AGPL y
Enterprise Edition bajo la licencia comercial
de Oracle.
Es configurable para ser o bien C/P o A/P
según el teorema CAP.
Por un lado, si las escrituras son
configuradas para ser síncronas en todas las
réplicas, el dato no es legible hasta que
todas terminan, por lo que es consistente y
particionada pero no está disponible (CP).
Por otra parte, si las lecturas están
configuradas para ser atendidas desde
cualquier réplica,
el sistema está siempre disponible, pero no
hay garantía de consistencia (AP).
11. Cassandra
Características
El modelo de datos de Cassandra consiste en particionar
las filas, que son reorganizadas en tablas .3 Las claves
primarias de cada tabla tiene un primer componente que
es la clave de partición. Dentro de una partición, las filas
son agrupadas por las columnas restantes de la clave. Las
demás columnas pueden ser indexadas por separado de
la clave primaria.
Las tablas se pueden crear, eliminar y alterar en tiempo
de ejecución sin bloquear actualizaciones y
consultas. Cassandra no soporta joins o subqueries, sino
que enfatiza en la desnormalización a través de
características como colecciones.
En las versiones iniciales utilizaba un API propia para
poder acceder a la base de datos. En los últimos tiempos
están apostando por un lenguaje denominado CQL
(Cassandra Query Language, no confundir con
Contextual Query Language) que posee una sintaxis
similar a SQL aunque con muchas menos funcionalidades.
Esto hace que iniciarse en el uso de la misma sea más
sencillo. Permite acceder en Java desde JDBC.
Apache Cassandra es una base de datos
NoSQL distribuida y basada en un modelo
de almacenamiento de «clave-valor», de
código abierto que está escrita en Java.
Permite grandes volúmenes de datos en
forma distribuida. Por ejemplo, lo usa Twitter
para su plataforma. Su objetivo principal es
la escalabilidad lineal y la disponibilidad. La
arquitectura distribuida de Cassandra está
basada en una serie de nodos iguales que
se comunican con un protocolo P2P con lo
que la redundancia es máxima. Está
desarrollada po Apache Software
Foundation.
Cassandra ofrece soporte robusto para
múltiples centros de datos,1 con la
replicación asincrónica sin necesidad de un
servidor maestro, que permiten operaciones
de baja latencia para todos los clientes.
12. Continua Cassandra…
Características principales
Descentralizado
Todos los nodos del clúster tiene el mismo rol. No hay un único punto de fallo. Los
se distribuyen a través del clúster (por lo que cada nodo contiene datos diferentes). No
existe un nodo maestro por lo que cada nodo puede dar servicio a cualquier solicitud.
Soporta replicación y replicación de múltiples data center
Las estrategias de replicación son configurables .22 Cassandra está diseñado como un
sistema distribuido, para el despliegue de un gran número de nodos a través de
centros de datos. La arquitectura distribuida de Cassandra está diseñado para
desplegarse sobre múltiples data center, tener redundancia y recuperarse ante
Escalabilidad
El rendimiento de leer y escribir aumenta linealmente a medida que se añaden nuevos
nodos. Se pueden agregar nuevos nodos sin necesidad de interrumpir la ejecución de
aplicación.
Tolerancia a fallos
Los datos se replican automáticamente a múltiples nodos para recuperarse frente a
Cassandra soporta replicación a través de múltiples datacenter. Se puede reemplazar
nodos que presenten fallos sin tiempo de inactividad o interrupción de la aplicación.
Consistencia
Se ofrece la elección de el nivel de consistencia para las lecturas y escrituras.