2. QUE ES UNA BASE DE DATOS
Una base de datos es una colección de información organizada de forma que un programa de ordenador pueda seleccionar rápidamente los
fragmentos de datos que necesite. Una base de datos es un sistema de archivos electrónico.
Las bases de datos tradicionales se organizan por campos, registros y archivos. Un campo es una pieza única de información; un registro es un
sistema completo de campos; y un archivo es una colección de registros. Por ejemplo, una guía de teléfono es análoga a un archivo. Contiene una
lista de registros, cada uno de los cuales consiste en tres campos: nombre, dirección, y número de teléfono.
3. QUE ES UNA BASE DE DATOS DE TIPO
SQL
SQL (por sus siglas en inglés Structured Query Language; en españollenguaje de consulta estructurada) es un lenguaje
específico del dominioque da acceso a un sistema de gestión de bases de datos relacionales que permite especificar
diversos tipos de operaciones en ellos. Una de sus características es el manejo del álgebra y el cálculo relacional que
permiten efectuar consultas con el fin de recuperar, de forma sencilla, información de bases de datos, así como hacer
cambios en ellas.
Originalmente basado en el álgebra relacional y en el cálculo relacional, SQL consiste en un lenguaje de definición de datos,
un lenguaje de manipulación de datos y un lenguaje de control de datos. El alcance de SQL incluye la inserción de datos,
consultas, actualizaciones y borrado, la creación y modificación de esquemas y el control de acceso a los datos. También el
SQL a veces se describe como un lenguaje declarativo, también incluye elementos procesales.
SQL fue uno de los primeros lenguajes comerciales para el modelo relacional de Edgar Frank Codd como se describió en su
papel de 1970 El modelo relacional de datos para grandes bancos de datos compartidos. A pesar de no adherirse
totalmente al modelo relacional descrito por Codd, pasó a ser el lenguaje de base de datos más usado.
SQL pasó a ser el estándar del Instituto Nacional Estadounidense de Estándares (ANSI) en 1986 y de la Organización
Internacional de Normalización (ISO) en 1987. Desde entonces, el estándar ha sido revisado para incluir más características.
A pesar de la existencia de ambos estándares, la mayoría de los códigos SQL no son completamente portables entre
sistemas de bases de datos diferentes sin ajustes.
4. BASES DE DATOS MAS POPULARES
Nos encontramos en un momento muy interesante para el sector de las Bases de Datos y hay muchos tipos de
bases de datos en el mercado. Por un lado tenemos las bases de datos relacionales, actualmente más
establecidas. Por otro lado aparecen las bases de datos NoSQL. Decimos aparecen pero ya están en el mercado
desde hace más de 10 años. Junto a estos dos tipos de bases de datos aparecen las bases de datos híbridas
(SQL/NoSQL), bases de datos in-memory y bases de datos as a service.
Si queréis añadir información no dudéis en comentarnos vuestras experiencias para que podamos hacer más
rico este artículo entre todos.
Las bases de datos suelen ser una de las piezas más importantes en cualquier instalación. Esto es debido a su
uso como principal repositorio de datos. Estos datos tienen dos características que los hacen vitales para
cualquier negocio.
Sin ellos nuestro negocio no podría funcionar.
Son datos que deben poder ser accedidos en tiempo real por todos nuestros clientes.
5. Mejores base de datos Comerciales
Hoy en día el mercado sigue siendo dominado por DB2, SQL Server, Oracle e IBM. En Mainframe o Unix/Linux, Oracle y DB2 suelen ser
los líderes, mientas que en sistemas operativos Windows SQL Server suele ser la mejor opción.
Oracle
Base de datos que puede correr en casi cualquier sistema operativo. De Oracle destacamos la abundancia de perfiles con experiencia en
esta tecnología y la gran cantidad de herramientas que hay para su administración y monitorización.
Benchmark de Oracle
IBM DB2
Suele ser la segunda base de datos más utilizada en entornos Unix/Linux después de Oracle. Es claramente un indiscutible ganador en
Mainframe. Hay perfiles profesionales para DB2 pero no tanto como para Oracle. Por otro lado, el perfil de DB2 Mainframe no tiene por
qué saber moverse en DB2 linux/unix.
Benchmark de DB2
Microsoft SQL Server
Base de datos con compatibilidad únicamente para sistemas Windows. Hay muchos perfiles expertos en SQL Server y no es difícil su
adquisición. Su integración con Microsoft Azure ha mejorado mucho su flexibilidad y rendimiento.
Benchmark
Teradata
Destaca sobre los demás tipos de bases de datos por su capacidad de almacenamiento y de análisis de datos. Suele ser utilizado en
grandes instalaciones de Big Data.
SAP Sybase
Aunque ya no vive los momentos de éxito de hace una década, sigue destacando por su escalabilidad y rendimiento.
6. SQL SERVER
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).
Dentro de los competidores más destacados de SQL Server están: Oracle, MariaDB, MySQL, PostgreSQL. SQL
Server ha estado tradicionalmente disponible solo para sistemas operativos Windows de Microsoft, pero
desde 2017 también está disponible para Linux y Docker containers.34
Puede ser configurado para utilizar varias instancias en el mismo servidor físico, la primera instalación lleva
generalmente el nombre del servidor, y las siguientes - nombres específicos (con un guion invertido entre el
nombre del servidor y el nombre de la instalación).
7. Versiones:
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.
Características:
Soporte de transacciones.
Soporta procedimientos almacenados.
Incluye también un entorno gráfico de administración, que permite el uso de comandosDDL 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.
En el manejo de SQL mediante líneas de comando se utiliza el SQLCMD, osql, o PowerShell.
Para el desarrollo de aplicaciones más complejas (tres o más capas), Microsoft SQL Server incluye interfaces de acceso para varias
plataformas de desarrollo, entre ellas .NET, pero el servidor sólo está disponible para Sistemas Operativos.
El tipo NUMERIC fue mejorado para ser usado como identificador de columna a partir de la versión 2008 R2.
8. Programación:
T-SQL
T-SQL (Transact-SQL) es el principal medio de interacción con el Servidor, el cual permite realizar las
operaciones claves en SQL Server, incluyendo la creación y modificación de esquemas de base de datos,
inserción y modificación de datos en la base de datos, así como la administración del servidor como tal. Esto
se realiza mediante el envío de sentencias en T-SQL y declaraciones que son procesadas por el servidor y los
resultados (o errores) regresan a la aplicación cliente.
Cliente Nativo de SQL
Cliente Nativo de SQL, es la biblioteca de acceso a datos para los clientes de Microsoft SQL Server versión
2005 en adelante. Implementa de forma nativa soporte para las características de SQL Server, incluyendo la
ejecución de la secuencia de datos tabular, soporte para bases de datos en espejo de SQL Server, soporte
completo para todos los tipos de datos compatibles con SQL Server, conjuntos de operaciones asíncronas,
las notificaciones de consulta, soporte para cifrado, así como recibir varios conjuntos de resultados en una
sola sesión de base de datos. Cliente Nativo de SQL se utiliza como extensión de SQL Server plug-ins para
otras tecnologías de acceso de datos, incluyendo ADO u OLE DB. Cliente Nativo de SQL puede también
usarse directamente, pasando por alto las capas de acceso de datos.
9. ORACLE
Oracle SQL Developer (internamente a menudo: "sqldeveloper") es un entorno de desarrollo integrado (IDE)
para trabajar con SQL en bases de datos Oracle . Oracle Corporation proporciona este producto gratis ;utiliza
el kit de desarrollo de Java .
Características
Oracle SQL Developer admite productos de Oracle y una variedad de complementos de terceros que los
usuarios pueden desplegar para conectarse a bases de datos que no son de Oracle. Oracle SQL Developer
trabaja con bases de datos IBM DB2 , Microsoft Access , Microsoft SQL Server , MySQL , Sybase Adaptive
Server , Amazon Redshift y Teradata . [2]
Oracle SQL Developer es compatible con las pestañas automáticas, el código de visión, compatibilidad entre
paréntesis y color de sintaxis paraPL / SQL .
Componentes
Los componentes de producto de Oracle SQL Developer incluyen el OWA (Oracle Web Agent o MOD_PLSQL),
un módulo de extensión para el servidor web Apache y ayuda a configurar páginas web dinámicas desde PL /
SQL dentro de Oracle SQL Developer.
10. Extensiones
Además de las extensiones proporcionadas por Oracle, terceras partes han escrito extensiones para
agregar nuevas características a SQL Developer e integrarse con otros productos:
Nuevas características:GeoRaptor , visualizador de datos geoespaciales
Insider , Recopilar estadísticas para una única instancia de Oracle y mostrar en tiempo real
Schema Visualizer le permite crear Diagramas de relación de entidad completos (ERD)
Integración con otros productos de Oracle:SQL Developer Data Modeler opera con y modela
metadatos. Antes de la versión 3 de SQL Developer, constituía una contraparte independiente (pero
integrada) de SQL Developer. A partir de SQL Developer versión 3, el modelado se convirtió en parte
integrante de la herramienta general. "Data Modeler" puede producir (entre otras salidas) archivos .
Integración con otros productos comerciales:Red Gate - Deployment Suite para Oracle (compara
esquemas y datos, implementa todos los cambios).
JDBCWizard (produce código de servicio Web Java para ejecutar sus instrucciones PL / SQL y SQL
existentes)
Rastreo de método R (coleccionador de archivos de seguimiento de clic cero)
Digger (analizador de trazas)
SVCO Extension (control de versiones integrado para objetos de esquema de servidor de base de datos
Oracle)
11. MONGO DB
MongoDB (de la palabra en inglés “humongous” que significa enorme) es un sistema de base de
datos NoSQL orientado a documentos, desarrollado bajo el concepto de código abierto.
MongoDB forma parte de la nueva familia de sistemas de base de datos NoSQL. En lugar de guardar los
datos en tablas como se hace en las base de datos relacionales, MongoDB guarda estructuras de datos en
documentos similares a JSON con un esquema dinámico (MongoDB utiliza una especificación
llamada BSON), haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.
El desarrollo de MongoDB empezó en octubre de 2007 por la compañía de software 10gen.Ahora
MongoDB es una base de datos lista para su uso en producción y con muchas características (features).
Esta base de datos se utiliza mucho en la industria,contando con implantaciones en empresas como MTV
Network, Craiglisto Foursquare.
El código binario está disponible para los sistemas operativos Windows, Linux, OS X y Solaris.
12. Características principales:
Consultas Ad hoc
MongoDB soporta la búsqueda por campos, consultas de rangos y expresiones regulares. Las consultas
pueden devolver un campo específico del documento pero también puede ser una
función JavaScript definida por el usuario.
Indexación
Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible hacer
índices secundarios. El concepto de índices en MongoDB es similar a los encontrados en base de datos
relacionales.
Replicación
MongoDB soporta el tipo de replicación primario-secundario. Cada grupo de primario y sus secundarios
se denomina replica set . El primario puede ejecutar comandos de lectura y escritura. Los secundarios
replican los datos del primario y sólo se pueden usar para lectura o para copia de seguridad, pero no se
pueden realizar escrituras. Los secundarios tiene la habilidad de poder elegir un nuevo primario en caso
de que el primario actual deje de responder.
13. Balanceo de carga
MongoDB se puede escalar de forma horizontal usando el concepto de “shard”. El desarrollador elige una
clave de sharding, la cual determina cómo serán distribuidos los datos de una colección. Los datos son
divididos en rangos (basado en la clave de sharding) y distribuidos a través de múltiples shard. Cada shard
puede ser una replica set. MongoDB tiene la capacidad de ejecutarse en múltiple servidores, balanceando
carga y/o replicando los datos para poder mantener el sistema funcionando en caso que exista un fallo de
hardware. La configuración automática es fácil de implementar bajo MongoDB y se pueden agregar nuevas
servidores a MongoDB con el sistema de base de datos funcionando.
Almacenamiento de archivos
MongoDB puede ser utilizado como un sistema de archivos, tomando la ventaja de la capacidad que tiene
MongoDB para el balanceo de carga y la replicación de datos utilizando múltiples servidores para el
almacenamiento de archivos. Esta función se llama GridFSy es más bien una implementación en los drivers,
en el servidor, por lo que está incluida en los drivers oficiales que la compañía de MongoDB desarrolla.
drivers exponen funciones y métodos para la manipulación de archivos y contenido a los desarrolladores.
un sistema con múltiple servidores, los archivos pueden ser distribuidos y replicados entre los mismos y de
forma transparente, de esta forma se crea un sistema eficiente que maneja fallos y balanceo de carga.
14. Agregación
MongoDB proporciona un framework de agregación que permite realizar operaciones similares a las que se
obtienen con el comando SQL "GROUP BY". El framework de agregación está construido como un pipeline
el que los datos van pasando a través de diferentes etapas en los cuales estos datos son modificados,
agregados, filtrados y formateados hasta obtener el resultado deseado. Todo este procesado es capaz de
utilizar índices si existieran y se produce en memoria. Asimismo, MongoDB proporciona una función
MapReduce que puede ser utilizada para el procesamiento por lotes de datos y operaciones de agregación.
Ejecución de JavaScript del lado del servidor
MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas
directamente a la base de datos para ser ejecutadas.
15. CASANDRA
Cassandra es una base de datos de código abierto cuya principal característica es que fusiona Dynamo, de
Amazon con BigTable, de Google, siendo ambas implementaciones de código cerrado.
El desarrollo de Cassandra fue iniciado por, aunque parezca curioso, Facebook, para intentar solventar la
problemática relacionada con el rendimiento del motor de búsquedas, concretamente con las relacionadas
en la comunicación entre usuarios (“Inbox Search“). Esta funcionalidad implica un gran volumen de datos a
almacenar, con una perpectiva de crecimiento muy alta (el boom de las redes sociales se produjo después
de la implementación de Cassandra) y la necesidad de ofrecer un nivel de calidad de servicio fijado
(SLA, Acuerdo de Nivel de Servicio).
Debido a la verticalidad de soluciones de datos relacionales y a la necesidad de ajustar el coste de la
implementación, se diseñó Cassandra para que las configuraciones de explotación fuesen altamente
escalables, horizontales y relativamente económicas. Con este objetivo en mente, se amplió el espectro de
funcionalidades de la plataforma Facebook a las que daría servicio, y no únicamente la “Inbox Search” como
se provisionó en un inicio.
16. En 2008 Cassandra fue liberada por Facebook, pasando a ser de código abierto, y actualmente es la gente
de Apache (http://cassandra.apache.org) quien la mantiene. Esta característica es la que hace de Cassandra
una base de datos NoSQL realmente interesante, ya que aparte de combinar lo mejor de Dynamo(consistencia
eventual) con lo mejor de BigTable (familias de columnas) es gratuita y de libre uso y distribución. Por cierto,
está desarrollada en Java, un lenguaje de programación cross-platform.
Las características del modelo de datos de Cassandra es el siguiente:
Una tabla de datos por cada instancia de Cassandra.
Cada familia de columnas puede contener o bien columnas o bien supercolumnas. Las supercolumnas son
columnas son la agrupación de n-columnas.
Cada columna contiene elementos de la forma “Clave-Valor-Tiempo”, donde el valor del campo tiempo es
definible por el usuario.
Cada fila de una tabla puede tomar valores en columnas distintas de una familia de columnas que otra fila, es
decir, si se dispone de una familia de 5 columnas (A, B, C, D, E), la fila R1 puede tener valores en A y B mientras
que la fila R2 puede tenerlos en A, C, D y E.
17. Arquitectura y características
Cassandra nos proporciona tolerancia a particiones y disponibilidad, pero a cambio de ser eventualmente
consistente, tal y como define el teorema CAP. El nivel de consistencia puede ser configurado, según nos
interese, incluso a nivel de query.
Es distribuida, lo quiere decir que la información está repartida a lo largo de los nodos del cluster. Además
ofrece alta disponibilidad, de manera que si alguno de los nodos se cae el servicio no se degradará.
Escala linealmente, lo que quiere decir que el rendimiento de forma lineal respecto al número de nodos que
añadamos. Por ejemplo, si con 2 nodos soportamos 100.000 operaciones por segundo, con 4 nodos
soportaremos 200.000. Esto da mucha predictibilidad a nuestros sistemas.
Escala de forma horizontal, lo que quiere decir que podemos escalar nuestro sistema añadiendo nuevos
nodos basados en hardware commodity de bajo coste.