Fundamentos de Bases de Datos y Sistemas de Información
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 9,35 KB
Fundamentos de Bases de Datos
Cláusulas SQL
WF (campo) OVER (PARTITION BY campo ORDER BY campo) AS name
WITH name AS (SELECT campo FROM tabla)
SELECT campo FROM name
PIVOT (F (campo) FOR campo IN ([col], [col])) name
Administración de Bases de Datos (DBA)
El DBA autoriza y regula el acceso, monitorea y optimiza, adquiere software y hardware, y asegura la disponibilidad.
Bases de Datos Transaccionales
- Envío y recepción de datos rápidos.
- Para análisis de calidad y datos.
- Asegurar consistencia.
- Evitar transacciones incompletas.
- Permiten llevar muchas transacciones.
- Capturar datos históricos.
- Rápidas y operan con baja latencia.
- Limitación para generar informes.
- Limitación para el historial de datos.
Data Warehouse (DWH)
Fuente de datos para Business Intelligence, obtiene información de sistemas, limpia datos, los une, aplica reglas y los almacena en estructura OLAP.
Data Lake (DL)
Repositorio centralizado de datos. Almacena datos estructurados y no estructurados, no transforma ni optimiza. Puede gestionar datos en tiempo real.
Collation
Patrón de bits utilizado para almacenar caracteres, reglas utilizadas para ordenar y comparar caracteres, proporciona la distinción de caracteres. CS/CI, AS/AI.
Si comparas dos collates distintos da error de intercalación, que se resuelve convirtiendo explícitamente a otro collate.
Bases de Datos en Memoria
- Velocidad
- Por el IoT surge la necesidad de procesar datos en tiempo real.
- Datos volátiles.
- Estructura simple.
- Ideal para apps con accesos a internet con pocos datos.
Bases de Datos en Disco
- Lenta.
- Datos persistentes.
- Estructuras complejas.
- Aplicaciones con muchos datos.
- Aplicaciones de gestión de clientes y usuarios.
Tabla Variable
- Alcance en el modelo de ejecución.
- Mantiene en memoria y después va a tempdb.
- Declare @
- Su contenido se pierde.
- No tienen índices ni estadísticas.
Tabla Temporal
- Alcance de sesión.
- Almacena en tempdb.
- Create #
- Su contenido se pierde al cerrar sesión.
- Admite índices y estadísticas.
Tabla en Memoria
- Almacena en memoria.
- Create con cláusula.
- Su contenido no se pierde.
- Admite índice no clúster.
Interfaces de Programación de Aplicaciones (API)
Contrato que permite el acceso a datos de un sistema informático desde otro.
Abiertas: Disponibles para uso general, requieren clave para controlar solicitudes que atiende por cliente.
Privadas: Se usan dentro de una organización.
Socios: Permiten que una organización intercambie información con proveedores, clientes y socios.
Tipos: SOAP, XML, JSON, REST.
Difundidas: API REST o API HTTP.
Plan de Ejecución
Describe el conjunto de operaciones que el motor ejecuta para obtener los datos de una consulta. Detalla a qué, en qué orden y de qué manera accederá. Excelente punto para la resolución de problemas de performance. Se almacena en una caché del motor, donde la próxima vez se verifica si ya existe.
No existe para tablas temporales.
Fase de Compilación
Query parser: Verifica sintaxis y genera parse tree.
Algebrizer: Enlaza objetos y genera query processor tree.
Optimizer: Optimiza y genera plan, utiliza heurística. Evita consultas ad hoc.
Fase de Ejecución
Ejecuta el plan.
Índices
Recurso para acceder rápidamente a datos. Generan copias de los campos, menos el clúster.
Índice Clúster
Determina en qué orden se guardan los registros, solo uno por tabla pero puede ser compuesto. Si no tiene, es una tabla heap.
Índice No Clúster
Genera una copia de los campos indexados, se afecta en cada insert, delete y modify.
Índice de Cobertura
Es un no clúster que incluye todos los campos.
CREATE NONCLUSTERED INDEX nombre ON tabla (campo1, campo2) INCLUDE (campo3, campo4)
Fill Factor
Factor de relleno, dejar un espacio libre en cada hoja reduce el page split.
Page Split
Cuando se llena una estructura se genera una nueva y se enlaza a la anterior, agrega hoja, mueve datos, marca como inválidos los datos de la otra hoja movidos, actualiza referencias para que apunten a la nueva. Si se insertan entradas nuevas se usa ese espacio disponible.
Si la clave del índice es creciente es bueno usar 100% fill factor.
Si no lo es hay que evaluar la fragmentación de los índices buscando reducimos el fill factor gradualmente.
Estadísticas
Información generada y mantenida por el motor acerca de la distribución de los valores de las tablas. El optimizador las utiliza para generar los planes, obtiene de ellas la cardinalidad (estimación de cantidad de filas).
Tienen encabezado: información general de un conjunto de estadísticas.
Grafo de densidad: Selectividad y singularidad de datos.
Histograma: Cuenta de las ocurrencias de valores particulares.
Optimización
- Si hay table scan, hacer índice.
- Si hay tabla heap, hacer índice clúster.
- Si hay diferencia entre estimadas y reales, revisar estadísticas.
- Eliminar tablas temporales.
- Verificar tipo de datos.
- Tablas temporales tienen estadísticas, variables no.
Control de Concurrencia
Trata con los problemas de aislamiento y consistencia del procesamiento de transacciones, los esquemas de control se basan en la propiedad de secuencialidad. Los niveles de aislamiento definen el grado en que una transacción se aísla de las modificaciones realizadas por otra transacción.
Problema:
Lectura sucia: una transacción lee datos escritos por otra transacción no confirmada.
Lectura no repetible: una transacción vuelve a leer datos y los encuentra modificados o eliminados por otra transacción confirmada.
Lectura fantasma: una transacción vuelve a leer datos y encuentra más datos agregados por otra transacción confirmada.
Read uncommitted: se puede leer datos modificadas por otras transacciones no confirmadas.
Read committed: no se puede leer datos modificados por otras transacciones no confirmadas.
Repeatable read: no se puede leer datos modificados por otras transacciones no confirmadas y ninguna transacción puede modificar los datos ya leídos hasta que esta transacción termine.
Serializable: no se puede leer datos modificados por otras transacciones no confirmadas, ninguna transacción puede modificar los datos ya leídos hasta que esta transacción termine y otra transacción no puede insertar filas nuevas hasta que esta transacción termine.
Bloqueo compartido: si la transacción obtiene un bloqueo sobre un elemento Q, la transacción puede leer Q pero no escribirlo.
Bloqueo exclusivo: la transacción puede leer y escribir Q.
Transacciones Distribuidas
Transacción que utilizan varias instancias. Para que se confirme todos los participantes deben garantizar que los cambios serán permanentes. Si esto no se da, se revierten los cambios.
Métricas de Performance
Nos ayudan a entender el uso de la DB y consumo de recursos.
Baseline: necesitamos una referencia para determinar un comportamiento anómalo, debemos conocer el uso normal del sistema para detectar algo raro. Usa row counts y database file IO.
Modelo de Recuperación
Es una propiedad de la DB que controla el mantenimiento del log de transacción.
Simple: el log se libera al completar la transacción sin respaldo. Solo se recuperan estados con backup.
Full: el log se libera cuando se respalda, requiere backups. Puede recuperarse a tiempo determinado.
NoSQL
- No tiene estructura definida.
- La información no se organiza en campos.
- Sistema distribuidos de datos.
BASE
Basically Available: el sistema debe funcionar a pesar de tener una falla parcial.
Soft state: los datos pueden eventualmente...
Eventually Consistent: puede haber momentos que la DB sea inconsistente.
CAP
Consistency: lectura coherente, los datos están sincronizados y replicados en todos los nodos.
Availability: obtiene una respuesta válida y rápida aunque haya nodos inactivos.
Partition tolerance: capacidad para permanecer estable y continuar procesando solicitudes a pesar de que haya una partición entre nodos.
Mongo solo tiene CP.