BASES DE DATOS

DATAWAREHOUSE

Un almacén de datos (del inglés data warehouse) es una colección de datos orientada a un determinado ámbito (empresa, organización, etc.), integrado, no volátil y variable en el tiempo, que ayuda a la toma de decisiones en la entidad en la que se utiliza. No siendo un producto, lenguaje o copia del sistema transaccional.

Se trata, sobre todo, de un expediente completo de una organización, más allá de la información transaccional y operacional, almacenado en una base de datos diseñada para favorecer el análisis y la divulgación eficiente de datos (especialmente OLAP, procesamiento analítico en línea). El almacenamiento de los datos no debe usarse con datos de uso actual.

Los almacenes de datos contienen a menudo grandes cantidades de información que se subdividen a veces en unidades lógicas más pequeñas dependiendo del subsistema de la entidad del que procedan o para el que sea necesario (data marts).

Uso del Almacén de Datos.

En un almacén de datos lo que se quiere es contener datos que son necesarios o útiles para una organización, es decir, que se utiliza como un repositorio de datos para posteriormente transformarlos en información útil para el usuario. Un almacén de datos debe entregar la información correcta a la gente indicada en el momento óptimo y en el formato adecuado. El almacén de datos da respuesta a las necesidades de usuarios expertos, utilizando Sistemas de Soporte a Decisiones (DSS), Sistemas de información ejecutiva (EIS) o herramientas para hacer consultas o informes. Los usuarios finales pueden hacer fácilmente consultas sobre sus almacenes de datos sin tocar o afectar a la operación del sistema.

En el funcionamiento de un almacén de datos son muy importantes las siguientes ideas:

  • Integración de los datos provenientes de bases de datos distribuidas por las diferentes unidades de la organización y que con frecuencia tendrán diferentes estructuras (fuentes heterogéneas).
  • Separación de los datos usados en operaciones diarias de los datos usados en el almacén de datos para los propósitos de explotación, de ayuda en la toma de decisiones, para el análisis y para operaciones de control.
  • Periódicamente, se importan datos al almacén de datos desde las distintas fuentes de información (aplicaciones ERP, ficheros, etc.) realizando las transformaciones necesarias y aplicando las reglas de negocio oportunas.

Ventajas e Inconvenientes del Almacén de Datos

Aunque una empresa que no posee un datawarehouse tiene riesgo de seguir siendo competitiva y que sea capaz de gestionar eficientemente su negocio, debemos analizar las ventajas y los inconvenientes que se tienen a la hora de abordar un proyecto de datawarehousing.

Ventajas

Hay muchas ventajas por las que es altamente recomendable usar un almacén de datos son:

  • Los almacenes de datos hacen más fácil el acceso a una gran variedad de datos a los usuarios finales.
  • Facilitan el funcionamiento de las aplicaciones de los sistemas de apoyo a la decisión tales como informes de tendencia, por ejemplo: obtener los ítems con la mayoría de las ventas en un área en particular dentro de los últimos dos años; informes de excepción, informes que muestran los resultados reales frente a los objetivos planteados a priori, etc.
  • Los almacenes de datos pueden trabajar en conjunto y, por lo tanto, aumentar el valor operacional de las aplicaciones empresariales, en especial la gestión de relaciones con clientes.

Inconvenientes

Utilizar almacenes de datos también plantea algunos inconvenientes, como:

  • A lo largo de su vida los almacenes de datos pueden suponer altos costos. El almacén de datos no suele ser estático. Los costos de mantenimiento son elevados.
  • Los almacenes de datos se pueden quedar obsoletos relativamente pronto.
  • A veces, ante una petición de información estos devuelven una información poco óptima, que también supone una pérdida para la organización.

A menudo existe una delgada línea entre los almacenes de datos y los sistemas operacionales. Hay que determinar qué funcionalidades de estos se pueden aprovechar y cuáles se deben implementar en el data warehouse. Resultaría costoso implementar operaciones no necesarias o dejar de implementar alguna que sí vaya a necesitarse.

 

BASES DE DATOS

BASES DE DATOS NOSQL

No cabe duda de que la forma en que las aplicaciones web tratan los datos, ha cambiado de forma significativa durante la última década. Cada vez se recopilan más datos y cada vez son más los usuarios que acceden a estos datos al mismo tiempo. Esto significa que la escalabilidad y el rendimiento se han convertido en auténticos retos para las bases de datos relacionales basadas en esquemas.

La evolución de NoSQL

El problema de la escalabilidad de SQL fue reconocido por empresas Web 2.0, con grandes necesidades de datos e infraestructura, como Google, Amazon y Facebook. Ellos solos tuvieron que buscar soluciones propias a este problema, con tecnologías como BigTable, DynamoDB, y Cassandra.

Este interés creciente dio lugar a una serie de sistemas de gestión de base de datos NoSQL (DBMS), con un enfoque en el rendimiento, la fiabilidad y la coherencia. Se reutilizaron y mejoraron varias estructuras de indexación existentes con el propósito de mejorar la búsqueda y el rendimiento de lectura.

En primer lugar, había tipos de bases de datos NoSQL (de origen cerrado), desarrolladas por grandes empresas para satisfacer sus necesidades específicas, como BigTable de Google, que se cree es el primer sistema NoSQL y DynamoDB de Amazon.

El éxito de estos sistemas patentados, inició el desarrollo de varios sistemas de bases de datos de código abierto y de propietarios similiares siendo los más populares Hypertable, Cassandra, MongoDB, DynamoDB, HBase y Redis.

¿Qué hace a NoSQL diferente?

Una diferencia clave entre las bases de datos de NoSQL y las bases de datos relacionales tradicionales, es el hecho de que NoSQL es una forma de almacenamiento no estructurado.

Esto significa que NoSQL no tiene una estructura de tabla fija como las que se encuentran en las bases de datos relacionales.

Ventajas y desventajas de las bases de datos NoSQL

Ventajas

Las bases de datos de NoSQL presentan muchas ventajas en comparación con las bases de datos tradicionales.

  • A diferencia de las bases de datos relacionales, las bases de datos NoSQL están basadas en key-value pairs
  • Algunos tipos de almacén de bases de datos NoSQL incluyen diferentes tipos de almacenes como por ejemplo el almacén de columnas, de documentos, de key value store, de gráficos, de objetos, de XML y otros modos de almacén de datos.
  • Algunos tipos de almacén de bases de datos NoSQL incluyen almacenes de columnas, de documentos, de valores de claves, de gráficos, de objetos, de XML y otros modos de almacén de datos.
  • Podría decirse que las bases de datos NoSQL de código abierto tienen una implementación rentable. Ya que no requieren las tarifas de licencia y pueden ejecutarse en hardware de precio bajo.
  • Cuando trabajamos con bases de datos NoSQL, ya sean de código abierto o tengan un propietario, la expansión es más fácil y más barata que cuando se trabaja con bases de datos relacionales. Esto se debe a que se realiza un escalado horizontal y se distribuye la carga por todos los nodos. En lugar de realizarse una escala vertical, más típica en los sistemas de bases de datos relacionales.

Desventajas

Por supuesto, las bases de datos NoSQL no son perfectas, y no siempre van a ser la elección ideal.

  • La mayoría de las bases de datos NoSQL no admiten funciones de fiabilidad, que son soportadas por sistemas de bases de datos relacionales. Estas características de fiabilidad pueden resumirse en: “atomicidad, consistencia, aislamiento y durabilidad.” Esto también significa que las bases de datos NoSQL, que no soportan esas características, ofrecen consistencia para el rendimiento y la escalabilidad.
  • Con el fin de apoyar las características de fiabilidad y coherencia, los desarrolladores deben implementar su propio código, lo que agrega más complejidad al sistema.
  • Esto podría limitar el número de aplicaciones en las que podemos confiar para realizar transacciones seguras y confiables, como por ejemplo los sistemas bancarios.
  • Otras formas de complejidad encontradas en la mayoría de las bases de datos NoSQL, incluyen la incompatibilidad con consultas SQL. Esto significa que se necesita un lenguaje de consulta manual, haciendo los procesos mucho más lentos y complejos.

https://blog.pandorafms.org/es/bases-de-datos-nosql/

BASES DE DATOS, CLOUD COMPUTING

GOOGLE CLOUD DATASTORE

Cloud Datastore es un almacén de datos de NoSQL sin esquema en la nube de Google.

datastore

  • Las aplicaciones utilizan Datastore para consultar los datos mediante consultas del tipo SQL compatibles con filtros y con la ordenación de elementos.
  • Datastore replica los datos en varios centros de datos, lo que reporta un alto nivel de disponibilidad de lectura/escritura.
  • Datastore también ofrece capacidad de ajuste automático del tamaño, mayor coherencia para lecturas y consultas de antecedentes, coherencia eventual para el resto de consultas, transacciones atómicas y ningún tiempo de inactividad planificado.

https://support.google.com/cloud/answer/6250992?hl=es

BASES DE DATOS, CLOUD COMPUTING

FIREBASE REALTIME DATABASE

Almacena y sincroniza datos con la base de datos NoSQL alojada en la nube. Los datos se sincronizan con todos los clientes en tiempo real y se mantienen disponibles cuando la app no tiene conexión.

social.png

irebase Realtime Database es una base de datos alojada en la nube. Los datos se almacenan en formato JSON y se sincronizan en tiempo real con cada cliente conectado. Cuando se compila apps multiplataforma con los SDK de iOS, Android y JavaScript, todos los clientes comparten una instancia de Realtime Database y reciben actualizaciones automáticamente con los datos más recientes.

Firebase Realtime Database permite compilar aplicaciones ricas y colaborativas, ya que permite el acceso seguro a la base de datos directamente desde el código del cliente. Los datos persisten de forma local. Además, incluso cuando no hay conexión, se siguen activando los eventos en tiempo real, lo que proporciona una experiencia adaptable al usuario final. Cuando el dispositivo vuelve a conectarse, Realtime Database sincroniza los cambios de los datos locales con las actualizaciones remotas que ocurrieron mientras el cliente estuvo sin conexión, lo que combina los conflictos de forma automática.

Realtime Database proporciona un lenguaje flexible de reglas basadas en expresiones, llamado reglas de seguridad de Firebase Realtime Database, para definir cómo se deberían estructurar los datos y en qué momento se pueden leer o escribir. Integrar Firebase Authentication permite que los programadores definan quién tiene acceso a qué datos y cómo acceden a ellos.

Realtime Database es una base de datos NoSQL y, como tal, tiene diferentes optimizaciones y funcionalidades en comparación con una base de datos relacional. La API de Realtime Database está diseñada para permitir solo operaciones que se puedan ejecutar rápidamente. Eso permite crear una excelente experiencia de tiempo real que puede servir a millones de usuarios sin afectar la capacidad de respuesta. Es importante pensar cómo deben acceder a los datos los usuarios y estructurarlos según corresponda.

BASES DE DATOS, CLOUD COMPUTING

CLOUD SQL

Cloud SQL es un servicio de base de datos totalmente administrado que facilita la  configuración, el mantenimiento y la administración de bases de datos relacionales de PostgreSQL BETA y MySQL en la nube. Cloud SQL ofrece alto rendimiento, escalabilidad y comodidad. Cloud SQL se aloja en Google Cloud Platform y proporciona una infraestructura de base de datos para aplicaciones que se ejecutan en cualquier ubicación.google-cloud-sql

Características De Cloud Sql:

  • Escalabilidad: Ajusta la escalabilidad fácilmente hasta un máximo de 64 núcleos de procesador y más de 400 GB de RAM. Para realizar un escalamiento horizontal rápido, puedes agregar réplicas de lectura.
  • Alto rendimiento: Diseñado para realizar un escalamiento desde cargas de trabajo de poco desarrollo hasta cargas de trabajo de rendimiento intensivo.
  • Integrado: Las instancias de Cloud SQL son accesibles desde casi cualquier aplicación y desde cualquier lugar. Puedes conectarte fácilmente desde App Engine, Compute Engine y tu puesto de trabajo.
  • Administración total: Google se encarga de la replicación, la administración y las copias de seguridad para que puedas aprovechar mejor el tiempo.
  • Seguridad: Los datos de Cloud SQL se encriptan cuando se incorporan a las redes internas de Google y cuando se almacenan en tablas de bases de datos, en archivos temporales y en copias de seguridad. Todas las instancias de Cloud SQL incluyen un firewall de red, lo que te permite controlar el acceso de red a tu instancia de base de datos.
  • API estándar. Implementa y desarrolla más rápidamente en la nube, ya que Cloud SQL ofrece bases de datos estándar de MySQL y PostgreSQL BETA. Usa controladores de conexión estándar y herramientas de migración integradas para comenzar rápido.
  • Protección de la disponibilidad. La migración en vivo de instancias de Compute Engine permite que sea transparente el mantenimiento de nuestra infraestructura subyacente. En el caso de que falle una zona, la configuración de alta disponibilidad protege los datos y comienza a ejecutar los sistemas en otra zona rápidamente.
BASES DE DATOS, SEGURIDAD

SQL INJECTION

La inyección SQL es una vulnerabilidad de bases de datos relacionales. Corresponde a un filtrado incorrecto de las variables usadas en las partes del código de un programa que usa sentencias SQL. Para que ese error en el código de un programa pueda ser usado maliciosamente, hace falta que el motor de bases de datos permita la concatenación de consultas. Por defecto, SQL Server trae esa opción habilitada, mientras que motores como MySQL o Access no.

Un usuario malintencionado escribe instrucciones de Transact-SQL en lugar de consultas válidas. Si la entrada se pasa directamente al servidor sin haber sido validada y la aplicación ejecuta el código inyectado por error, el ataque podría dañar o destruir datos.

Para la prevención de ataques SQL se requiere que, en el código de la aplicación, se tengan en cuenta métodos que validen las sentencias SQL y los datos ingresados en los formularios. Se puede, por ejemplo, implementar una función que reemplace los caracteres no deseados, como podrían ser la comilla simple, el punto y coma, los guiones simples juntos (–), etc. Los distintos lenguajes de programación ofrecen mecanismos para modificar estos caracteres. En el caso de PHP por ejemplo, existe la función mysql_real_scape_string(), que toma como parámetro una cadena y la modifica quitando caracteres especiales, retornándola totalmente segura para ser ejecutada dentro de la instrucción SQL.

BASES DE DATOS

ESTRUCTURA DE LA BASE DE DATOS ORACLE

La base de datos de Oracle tiene una capa lógica y otra física. La capa física consiste en archivos que residen en el disco y los componentes de la capa lógica son estructuras que mapean los datos hacia estos componentes físicos.

LA CAPA FÍSICA

Ya se dijo que consiste en archivos físicos que se encuentran en los discos. Estos pueden   ser de tres tipos diferentes:

Uno o más datafiles

Los datafiles almacenan toda la información ingresada en una base de datos. Se pueden tener sólo uno o cientos de ellos. Muchos objetos (tablas, índices) pueden compartir varios datafiles. El número máximo de datafiles que pueden ser configurados está limitado por el parámetro de sistema MAXDATAFILES.

Dos o más archivos redo log (de deshacer)

Los archivos del tipo redo log almacenan información que se utiliza para la recuperación de una base de datos en caso de falla. Estos archivos almacenan la historia de cambios efectuados sobre la base de datos y son particularmente útiles cuando se necesita corroborar si los cambios que la base de datos ya ha confirmado se han efectuado realmente en los datafiles.

Uno o más control files

Estos archivos contienen información que se utiliza cuando se levanta una instancia, tal como la información de dónde se encuentran ubicados los datafiles y los archivos redo log. Estos archivos de control deben encontrarse siempre protegidos.

LA CAPA LÓGICA

La capa lógica de una base de datos consta de los siguientes elementos:

  • Uno o más tablespaces
  • El esquema de la base de datos (schema), el cual consiste en objetos como tablas, clusters, índices, vistas, procedimientos almacenados, triggers, secuencias y otros.

LOS TABLESPACES Y LOS DATAFILES

Como se mencionó, una base de datos se encuentra dividida en una o más piezas lógicas llamadas tablespaces, que son utilizados para separar la información en grupos y así simplificar la administración de los datos. Los tablespaces pueden ocupar uno o más datafiles. Si se decide que utilice varios datafiles, el administrador del sistema puede gestionar que éstos queden localizados en discos diferentes, lo que aumentará el rendimiento del sistema, principalmente por la mejora en la distribución de la carga de entrada / salida.

SEGMENTOS, EXTENSIONES Y BLOQUES

Dentro de los tablespaces y datafiles, el espacio utilizado para almacenar datos es controlado por el uso de ciertas estructuras; éstas son las siguientes:

Bloques: Un bloque es la unidad de almacenamiento más pequeña en una base de datos Oracle. Contiene una pequeña porción de información (header) referente al bloque en sí y el resto a los datos que guarda. Generalmente, un bloque de datos ocupará aprox. 2 KB de espacio físico en el disco (asignación típica).

Extensiones: Es un grupo de bloques de datos. Se establecen en un tamaño fijo y crecen a medida que van almacenando más datos. También se pueden redimensionar para aprovechar mejor el espacio de almacenamiento.

Segmentos: Es un grupo de extensiones utilizados para almacenar un tipo particular de datos. Existen 4 tipos de segmentos: datos, índices, rollback y temporales.

EL ESQUEMA DE LA BASE DE DATOS

Un esquema es una colección de objetos lógicos, utilizados para organizar de manera más comprensible la información y conocidos como objetos del esquema. Una breve descripción de los objetos que lo componen es la siguiente:

Tabla: Es la unidad lógica básica de almacenamiento. Contiene filas y columnas (como una matriz) y se identifica por un nombre. Las columnas también tienen un nombre y deben especificar un tipo de datos. Una tabla se guarda dentro de un tablespace (o varios, en el caso de las tablas particionadas).

Cluster: Un cluster es un grupo de tablas almacenadas en conjunto físicamente como una sola tabla que comparten una columna en común. Si a menudo se necesita recuperar datos de dos o más tablas basado en un valor de la columna que tienen en común, entonces es más eficiente organizarlas como un cluster, ya que la información podrá ser recuperada en una menor cantidad de operaciones de lectura realizadas sobre el disco.

Indice: Un índice es una estructur creada para ayudar a recuperar datos de una manera más rápida y eficiente. Un índice se crea sobre una o varias columnas de una misma tabla. De esta manera, cuando se solicita recuperar datos de ella mediante alguna condición de búsqueda (cláusula where de la sentencia), ésta se puede acelerar si se dispone de algún índice sobre las columnas-objetivo.

Vista: Una vista implementa una selección de varias columnas de una o diferentes tablas. Una vista no almacena datos; sólo los presenta en forma dinámica. Se utilizan para simplificar la visión del usuario sobre un conjunto de tablas, haciendo transparente para él la forma de obtención de los datos.

Procedimiento Almacenado: Son programas que permiten independizar el manejo de datos desde una aplicación y efectuarla directamente desde el motor de base de datos, disminuyendo así el tráfico de información a través de la red y mejorando el rendimiento de los procesos implementados mediante estos programas.

Trigger: Un trigger es un procedimiento que se ejecuta en forma inmediata cuando ocurre un evento especial. Estos eventos sólo pueden ser la inserción, actualización o eliminación de datos de una tabla.

Secuencias: El generador de secuencias de Oracle se utiliza para generar números únicos y utilizarlos, por ejemplo, como claves de tablas. La principal ventaja es que libera al programador de obtener números secuenciales que no se repitan con los que pueda generar otro usuario en un instante determinado.