martes, 20 de agosto de 2019

Funciones BDA, Manejadores de BD relacionales y manejadores de BD NOSQL.

Funciones BDA.



Gestión General de Base de Datos
El DBA es la persona con más conocimientos sobre base de datos en una organización. Como tal, debe entender las reglas básicas de la tecnología de base de datos relacional y ser capaz de comunicarlos con precisión a los demás.
Modelado de Datos y Diseño de Base de Datos
Un DBA debe ser un profesional experto en la recopilación y análisis de las necesidades del usuario para obtener modelos de datos conceptuales y lógicos. Esta tarea es más difícil de lo que parece. Un modelo conceptual de datos describe los requisitos de datos a un nivel muy alto, un modelo de datos lógico proporciona en profundidad los detalles de los tipos de datos, longitudes, relaciones y cardinalidad. El DBA utiliza técnicas de normalización para ofrecer modelos de datos que reflejen las necesidades de los datos de la empresa.
Auditoria
Una de las tareas de un DBA es identificar qué usuarios tienen acceso a insertar, actualizar o eliminar datos, y cuándo. Una auditoría NO sólo podría ser necesaria por un tiempo limitado, para usuarios específicos o datos específicos. También puede ser requerida  24/7 para todos los datos que se introduzcan en el DBMS. Regularmente, para realizar las funciones de autorías los DBAs tienen que trabajar en combinación con los auditores internos y externos de la empresa.
Integración con aplicaciones
La mayoría de las empresas hoy en día utilizan aplicaciones de terceros (casi nadie ya desarrolla sus propias aplicaciones in-house), muy pocas de estas aplicaciones funcionan de manera aislada. En otras palabras, las aplicaciones tienen que interconectarse unas con otras, generalmente utilizando base de datos como el medio para compartir los datos. Los DBAs a menudo se involucran en los procesos de integrar las aplicaciones existentes con las bases datos que administran. Esto puede incluir la creación de aplicaciones a medida, scripts, etc.
Resguardo y recuperación de datos
Uno de los aspectos más fundamentales del trabajo del DBA es proteger los datos de la organización. Esto incluye hacer copias de seguridad periódicas de los datos y mantenerlos a salvo de la destrucción accidental o intencional. Además, diseñar, implementar y probar un plan de recuperación para que cuando se presenten los problemas, los datos se pueden restaurar rápidamente.
Inteligencia de negocios y almacenamiento de datos
Una de las áreas de mayor crecimiento para el DBA es la Inteligencia de Negocios (BI) y almacenamiento de datos. Esto se debe a que cada vez más organizaciones están tratando de extraer toda la información que pueda con el fin de tomar mejores decisiones de negocios.
Planificación de capacidad
En la mayoría de las organizaciones, el número y tamaño de las bases de datos crece rápidamente. Es la responsabilidad del DBA gestionar el creciente volumen de datos y diseñar los planes apropiados para administrarlos. Esto incluye también la gestión del hardware donde se almacenan los datos.
Administración de cambios
La configuración del servidor SQL Server o MySQL, el esquema de base de datos, el código de Transact-SQL, y muchas otras facetas del ecosistema de aplicaciones cambian con el tiempo. A menudo es la responsabilidad del DBA realizar el análisis de impacto antes de realizar los cambios dentro de una DBMS. Implementar cambios, hacer pruebas piloto y documentar todos los cambios y procedimientos es parte del trabajo de un DBA.


Sistemas Gestores de bases de datos Relacionales (SQL)

Desde que se comenzó a usar el modelo de bases de datos relacionales, en 1970, ha ido sufriendo una serie de transformaciones hasta convertirse, hoy en día, en el modelo más utilizado para administrar bases de datos.

Este modelo se basa fundamentalmente en establecer relaciones o vínculos entre los datos, imaginando una tabla aparte por cada relación existente con sus propios registros y atributos.

Los principales Sistemas gestores de bases de datos relacionales (SGBD SQL) actualmente son:

MySQL

Es el sistema gestor de bases de datos relacional por excelencia.
Es un SGBD multihilo y multiusuario utilizado en la gran parte de las páginas web actuales. Además es el más usado en aplicaciones creadas como software libre.
Ver las imágenes de origen


Se ofrece bajo la GNU GPL aunque también es posible adquirir una licencia para empresas que quieran incorporarlo en productos privativos (Desde la compra por parte de Oracle se está orientando a este ámbito empresarial).
Las principales ventajas de este Sistema Gestor de Bases de datos son:


  • Facilidad de uso y gran rendimiento
  • Facilidad para instalar y configurar
  • Soporte multiplataforma
  • Soporte SSL


La principal desventaja es la escalabilidad, es decir, no trabaja de manera eficiente con bases de datos muy grandes que superan un determinado tamaño.


MariaDB



Este SGBD es una derivación de MySQL que cuenta con la mayoría de características de este e incluye varias extensiones.
Nace a partir de la adquisición de MySQL por parte de Oracle para seguir la filosofía Open Source y tiene la ventaja de que es totalmente compatible con MySQL.
Ver las imágenes de origen
Entre las principales características de este Sistema Gestor de Bases de datos se encuentran:
  • Aumento de motores de almacenamiento
  • Gran escalabilidad
  • Seguridad y rapidez en transacciones
  • Extensiones y nuevas características relacionadas con su aplicación para Bases de datos NoSQL.
No tiene desventajas muy aparentes salvo algunas pequeñas incompatibilidades en la migración de MariaDB y MySQL o pequeños atrasos en la liberación de versiones estables.

SQLite

Más que un Sistema Gestor de bases de datos como tal, SQLite es una biblioteca escrita en C que implementa un SGBD y que permite transacciones sin necesidad de un servidor ni configuraciones.
Ver las imágenes de origen
Es una biblioteca utilizada en multitud de aplicaciones actuales ya que es open source y las consultas son muy eficientes.
Las principales características de SQLite son:
  • El tamaño, al tratarse de una biblioteca, es mucho menor que cualquier SGBD
  • Reúne los cuatro criterios ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) logrando gran estabilidad
  • Gran portabilidad y rendimiento
La gran desventaja de SQLite es la escalabilidad ya que no soporta bases de datos que sean muy grandes.

PostgreSQL

Este sistema gestor de base de datos relacional está orientado a objetos y es libre, publicado bajo la licencia BSD.
Sus principales características son:
  • Control de Concurrencias multiversión (MVCC)
  • Flexibilidad en cuanto a lenguajes de programación
  • Multiplataforma
  • Dispone de una herramienta (pgAdmin, https://www.pgadmin.org/) muy fácil e intuitiva para la administración de las bases de datos.
  • Robustez, Eficiencia y Estabilidad.
La principal desventaja es la lentitud para la administración de bases de datos pequeñas ya que está optimizado para gestionar grandes volúmenes de datos.

Microsoft SQL Server

Es un sistema gestor de bases de datos relacionales basado en el lenguaje Transact-SQL, capaz de poner a disposición de muchos usuarios grandes cantidades de datos de manera simultánea.

Es un sistema propietario de Microsoft. Sus principales características son:
  • Soporte exclusivo por parte de Microsoft.
  • Escalabilidad, estabilidad y seguridad.
  • Posibilidad de cancelar consultas.
  • Potente entorno gráfico de administración que permite utilizar comandos DDL y DML.
  • Aunque es nativo para Windows puede utilizarse desde hace ya un tiempo en otras plataformas como Linux o Docker.
Su principal desventaja es el precio. Cuenta con un plan gratuito (Express) pero lo normal es la elección de alguno de los planes de pago disponibles (Standard, Developer, Enterprise o SQL Azure, la versión de SQL Server en la nube).

Oracle

Tradicionamente, Oracle ha sido el SGBD por excelencia para el mundo empresarial, considerado siempre como el más completo y robusto, destacando por:
  • Soporte de transacciones.
  • Estabilidad.
  • Escalabilidad.
  • Multiplataforma.

La principal desventaja, al igual que SQL Server, es el coste del software ya que, aunque cuenta con una versión gratuita (Express Edition o XE), sus principales opciones son de pago.
Las opciones de pago disponibles son:
    • 1. Standard Edition (SE)
    • 2. Standard Edition One (SE1)
    • 3. Standard Edition 2 (SE2)
    • 4. Personal Edition (PE)
  • 5. Lite Edition (LE)
  • 6. Entreprise Edition (EE)

Sistemas Gestores de bases de datos No Relacionales (NoSQL)

Una base de datos no relacional (NoSQL) es aquella base de datos que:
  • No requiere de estructuras de datos fijas como tablas
  • No garantiza completamente las características ACID
  • Escala muy bien horizontalmente.
Se utilizan en entornos distribuidos que han de estar siempre disponibles y operativos y que gestionan un importante volumen de datos.
Para la administración de este tipo de bases de datos, actualmente los principales sistemas gestores de bases de datos (SGBD NoSQL) son:

MongoDB

Estamos ante el Sistema Gestor de Bases de Datos no relacionales (SGBD NoSQL) más popular y utilizado actualmente.
MongoDB es un SBGD NoSQL orientado a ficheros que almacena la información en estructuras BSON con un esquema dinámico que permite su facilidad de integración.
Empresas como Google, Facebook, eBay, Cisco o Adobe utilizan MongoDB como Sistema Gestor de Bases de datos.
Las principales características de MongoDB son:
  • Indexación y replicación
  • Balanceo de carga
  • Almacenamiento en ficheros
  • Consultas ad hoc
  • Escalabilidad horizontal
  • Open Source
Como desventaja principal, MongoDB no es un SGBD adecuado para realizar transacciones complejas.

Redis

Redis está basado en el almacenamiento clave-valor. Podríamos verlo como un vector enorme que almacena todo tipo de datos, desde cadenas, hashses, listas, etc.
El principal uso de este SGBD es para el almacenamiento en memoria caché y la administración de sesiones.
Las características principales son:
  • Atomicidad y persistencia
  • Gran velocidad
  • Simplicidad
  • Multiplataforma

Cassandra

Al igual que Redis, Cassandra también utiliza almacenamiento clave-valor. Es un SGBD NoSQL distribuido y masivamente escalable.
Facebook, Twitter, Instagram, Spotify o Netflix utilizan Cassandra.
Dispone de un lenguaje propio para las consultas denominado CQL (Cassandra Query Languaje).
Las principales características de este SGBD NoSQL son:
  • Multiplataforma
  • Propio lenguaje de consultas (CQL)
  • Escalado lineal y horizontal
  • Es un SGBD distribuido
  • Utiliza una arquitectura peer-to-peer

Django, Yii y Hadoop.

Django


Django es un framework de aplicaciones web gratuito y de código abierto (open source) escrito en Python. Un framework web es un conjunto de componentes que te ayudan a desarrollar sitios web más fácil y rápidamente.

¿Por qué necesitas un framework?

Para entender para que sirve realmente Django, necesitamos fijarnos en cómo funcionan los servidores. Lo primero es que el servidor necesita enterarse de que tu quieres que te sirva una página web.
Imagina un buzón (puerto) en el que alguien está constantemente mirando si hay cartas entrantes (peticiones). Esto es lo que hace un servidor web. El servidor web lee la carta, y envía una respuesta con la página web. Pero para enviar algo, tenemos que tener algún contenido. Y Django nos ayuda a crear ese contenido.


Yii

Es un framework open source (código abierto) de programación utilizado para desarrollar todo tipo de aplicaciones Web.
Principales características de Yii
  • Usa el patrón de Arquitectura de Software MVC (Modelo Vista Controlador) que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.
  • Provee un Nivel de Abstracción hacia la Base de Datos (DAO, Data Access Object) y se apoya en el patrón de arquitectura de datos Active Record.
  • Incluye soporte para autenticación de usuarios basado en el modelo RBAC role-based access control o control de acceso basado en roles.
  • Herramientas para automatización y validación de Formularios
  • Integración con jQuery.
  • Avanzado control de Themes
  • Web services, herramientas para simplificar la tarea de generar y consumir servicios Web en diferentes formatos.
  • Internacionalización y Localización.
  • Sistema de manejo de cache.
  • Manejo de Errores.
  • Manejo de Seguridad (Sql injection,XSS, CSRF, cookie tampering, etc.).
  • Generador de código automático, muy útil a la hora de implementar formularios o bien operaciones CRUD. Además de que el código generado cumple XHTML standards.
  • Amigable y extensible, por lo cual se pueden usar sin problemas librerías de terceros como Pear, Zend, etc.
  • El manejo de errores y logging. Los errores son manejados y personalizados, y los log de mensajes pueden ser categorizados, filtrados y movidos a diferentes destinos.
  • Las medidas de seguridad incluyen la prevención cross-site scripting (XSS), prevención cross-site request forgery (CSRF), prevención de la manipulación de cookies, etc.
  • Herramientas para pruebas unitarias y funcionales basados en PHPUnit y Selenium.
  • Generación automática de código para el esqueleto de la aplicación, aplicaciones CRUD, etc.
  • Generación de código por componentes de Yii y la herramienta por línea de comandos cumple con los estándares de XHTML.
  • Cuidadosamente diseñado para trabajar bien con código de terceros. Por ejemplo, es posible usar el código de PHP o Zend Framework en una aplicación Yii.



Apache Hadoop



Hadoop es una estructura de software de código abierto para almacenar datos y ejecutar aplicaciones en clústeres de hardware comercial. Proporciona almacenamiento masivo para cualquier tipo de datos, enorme poder de procesamiento y la capacidad de procesar tareas o trabajos concurrentes virtualmente ilimitados.

¿Por qué es importante Hadoop?

  • Capacidad de almacenar y procesar enormes cantidades de cualquier tipo de datos, al instante. Con el incremento constante de los volúmenes y variedades de datos, en especial provenientes de medios sociales y la Internet de las Cosas (IoT), ésa es una consideración importante.
  • Poder de cómputo. El modelo de cómputo distribuido de Hadoop procesa big data a gran velocidad. Cuantos más nodos de cómputo utiliza usted, mayor poder de procesamiento tiene.
  • Tolerancia a fallos. El procesamiento de datos y aplicaciones está protegido contra fallos del hardware. Si falla un nodo, los trabajos son redirigidos automáticamente a otros modos para asegurarse de que no falle el procesamiento distribuido. Se almacenan múltiples copias de todos los datos de manera automática.
  • Flexibilidad. A diferencia de las bases de datos relacionales, no tiene que procesar previamente los datos antes de almacenarlos. Puede almacenar tantos datos como desee y decidir cómo utilizarlos más tarde. Eso incluye datos no estructurados como texto, imágenes y videos.
  • Bajo costo. La estructura de código abierto es gratuita y emplea hardware comercial para almacenar grandes cantidades de datos.
  • Escalabilidad. Puede hacer crecer fácilmente su sistema para que procese más datos son sólo agregar nodos. Se requiere poca administración.



¿Cuáles son los retos de usar Hadoop?

La programación MapReduce no es una opción adecuada para todos los problemas. stepEs adecuada para simples solicitudes de información y problemas que se pueden dividir en unidades independientes, pero no es eficiente para realizar tareas analíticas iterativas e interactivas. MapReduce trabaja con muchos archivos. Como los nodos no se intercomunican salvo a través de procesos de clasificación y mezcla, los algoritmos iterativos requieren múltiples fases de mapeo-mezcla/clasificación-reducción para completarse. Esto da origen a múltiples archivos entre fases de MapReduce y no es eficiente para el cómputo analítico avanzado.
Existe una brecha de talento ampliamente reconocida. Puede ser difícil conseguir programadores principiantes con suficientes conocimientos de Java para que sean productivos con MapReduce. Ésa es una razón por la que los proveedores de distribución se apresuran para colocar tecnología relacional (SQL) sobre Hadoop. Es mucho más fácil encontrar programadores con conocimientos de SQL que con conocimientos de MapReduce. Y la administración de Hadoop parece ser parte arte y parte ciencia, por lo que requiere conocimientos básicos de sistemas operativos, hardware y configuración del kérnel de Hadoop.
Seguridad de datos. Otro reto se centra alrededor de aspectos de seguridad de datos fragmentados, aunque están surgiendo nuevas herramientas y tecnologías. El protocolo de autenticación Kerberos es un paso importante para volver seguros los entornos Hadoop.
Gestión y gobierno de datos completo. Hadoop no tiene herramientas fáciles de usar y repletas de características para la gestión de datos, depuración de datos, gobierno y metadatos. Se carece en especial de herramientas para asegurar la calidad y la estandarización de los datos.