Fundamentos de bases de datos
(tontinton.com)Fundamentos de bashdb
bashdb, el programa de base de datos más simple, está compuesto por dos funciones de bash.- La función
db_setagrega datos a un archivo y la funcióndb_getbusca los datos. - Entre los problemas de
bashdbestán la durabilidad, la atomicidad, el aislamiento y el rendimiento.
Mejorar bashdb para que sea ACID
- ACID se refiere a las propiedades de las transacciones de base de datos: atomicidad, consistencia, aislamiento y durabilidad.
- Para mejorar la durabilidad de
bashdb, se agrega el comandosyncadb_set. - Para el aislamiento, se añade bloqueo de archivos usando el programa
flock.
Durabilidad
fsyncyfdatasyncson llamadas al sistema que vacían el búfer de escritura al disco.- El comando
syncvacía al disco todas las páginas “sucias”, y la bandera-dllama afdatasync.
Aislamiento
- Se usa
flockpara proporcionar aislamiento entre múltiples procesos enbashdb. flockes un programa de Linux para bloqueo de archivos, y la bandera-spermite lecturas concurrentes.
Malas noticias
- No se encuentra una forma sencilla de garantizar la atomicidad con
bashdb. - Para mejorar el rendimiento, es necesario optimizar el algoritmo
O(n).
Motor de almacenamiento
- El propósito de un motor de almacenamiento es proporcionar una abstracción para leer y escribir datos en almacenamiento persistente.
- El diseño de un motor de almacenamiento busca minimizar la E/S de disco y las búsquedas en disco.
Árbol B mutable
- Un árbol B es una variante del BST con localidad espacial, lo que minimiza la E/S de disco y las búsquedas.
- Un árbol B es un BST generalizado en el que los nodos pueden tener más hijos.
Árbol LSM inmutable
- Un árbol LSM es una estructura de datos inmutable escrita secuencialmente, favorable para cargas de trabajo centradas en escritura.
- Un árbol LSM almacena temporalmente datos en memoria y, al llegar a cierta capacidad, los vacía como SSTables ordenadas.
Filtro de Bloom
- Un filtro de Bloom es una estructura de datos probabilística que permite verificar eficientemente si un elemento no existe en un conjunto.
- Un filtro de Bloom funciona usando funciones hash y tiene complejidad espacial
O(log n).
Write Ahead Log
- WAL es un archivo especial que registra todas las operaciones de transacción y reconstruye el estado cuando se inicia el proceso de la base de datos.
Aislamiento
- Para lograr aislamiento, se puede usar bloqueo pesimista, bloqueo optimista o MVCC.
- El estándar ANSI/ISO SQL 92 define varios niveles de aislamiento de lectura.
Sistemas distribuidos
- Los sistemas distribuidos agregan complejidad, y los datos pueden distribuirse entre varias máquinas para lograr disponibilidad y escalado horizontal.
- Según el teorema CAP, un sistema solo puede garantizar dos de tres propiedades: consistencia, disponibilidad y tolerancia a particiones.
Hashing consistente
- El hashing consistente es un método de partición de datos que reduce la cantidad de elementos que deben migrarse cuando se agregan o eliminan nodos.
Opinión de GN⁺:
- Entender los problemas básicos de las bases de datos y las propiedades ACID es clave en la ingeniería de bases de datos.
- El ejemplo de
bashdbayuda a comprender los problemas que ocurren en sistemas de bases de datos reales. - El diseño de motores de almacenamiento y sistemas distribuidos es un factor importante para determinar el rendimiento y la confiabilidad de una base de datos.
1 comentarios
Comentarios de Hacker News
Resumen del primer comentario:
Resumen del segundo comentario:
Resumen del tercer comentario:
Resumen del cuarto comentario:
Resumen del quinto comentario:
Resumen del sexto comentario:
Resumen del séptimo comentario:
sync; mv; sync.Resumen del octavo comentario:
Resumen del noveno comentario:
Resumen del décimo comentario: