DISEÑO DE APLICACIONES MEDIANTE EL USO INTENSIVO DE DATOS
-5%

DISEÑO DE APLICACIONES MEDIANTE EL USO INTENSIVO DE DATOS

KLEPPMANN,MARTIN

44,00 €
41,80 €
IVA incluido
Editorial:
MARCOMBO
Año de edición:
2022
Materia
Software
ISBN:
978-84-267-3467-9
Páginas:
618
Encuadernación:
Rústica
Colección:
INFORMATICA
44,00 €
41,80 €
IVA incluido

Prefacio ........................................................................................................................................................ xi
Parte I. Fundamentos de los sistemas de datos
1. Aplicaciones confiables, escalables y mantenibles .................................................................... 3
Reflexiones sobre los sistemas de datos ............................................................................. 4
Confiabilidad ......................................................................................................................... 6
Fallos de hardware .......................................................................................................... 7
Errores de software ......................................................................................................... 9
Errores humanos ............................................................................................................ 9
¿Cuál es la importancia de la confiabilidad? .............................................................11
Escalabilidad ........................................................................................................................11
Descripción de la carga ................................................................................................11
Descripción del rendimiento ......................................................................................14
Enfoques para hacer frente a la carga ........................................................................18
Mantenimiento ...................................................................................................................20
Operatividad: facilitar la vida a las operaciones .......................................................20
Simplicidad: gestión de la complejidad .....................................................................22
Evolución: facilitar el cambio ......................................................................................23
Resumen ..............................................................................................................................24
Referencias ...........................................................................................................................25
2. Modelos de datos y lenguajes de consulta ................................................................................ 29
El modelo relacional frente al modelo de documentos .................................................30
El nacimiento de NoSQL .............................................................................................31
El desajuste objeto-relacional ......................................................................................32
Relaciones de muchos a uno y muchos a muchos ....................................................35
¿Están las bases de datos de documentos repitiendo la historia? ...........................38
Bases de datos relacionales frente a las de documentos en la actualidad ..............41
Lenguajes de consulta de datos .........................................................................................45
Consultas declarativas en la web .................................................................................47
Consultas de MapReduce ............................................................................................49
Modelos de datos de tipo grafo .........................................................................................52
Grafos de propiedades ..................................................................................................53
Lenguaje de consulta Cypher ......................................................................................55
Consulta de gráficos en SQL .......................................................................................57
Almacenes triples y SPARQL ......................................................................................59
Los fundamentos: Datalog ...........................................................................................63
Resumen ...............................................................................................................................66
Referencias ...........................................................................................................................67
3. Almacenamiento y recuperación ....................................................................................................... 73
Estructuras de datos que potencian la base de datos .....................................................74
Índices hash ...................................................................................................................76
SSTables y árboles LSM ................................................................................................80
Árboles B ........................................................................................................................85
Comparación de los árboles B con los árboles LSM ................................................89
Otras estructuras de indexación .................................................................................91
¿Procesamiento de transacciones o análisis?...................................................................96
Almacén de datos ..........................................................................................................98
Estrellas y copos de nieve: esquemas para el análisis ............................................ 100
Almacenamiento orientado a columnas ....................................................................... 102
Compresión de columnas ......................................................................................... 104
Orden de clasificación en el almacenamiento por columnas .............................. 107
Escritura en el almacenamiento orientado a columnas ........................................ 108
Agregación: cubos de datos y vistas materializadas .............................................. 109
Resumen ............................................................................................................................ 111
Referencias ........................................................................................................................ 112
4. Codificación y evolución .................................................................................................................. 119
Formatos de codificación de datos ................................................................................ 120
Formatos específicos para cada lenguaje ................................................................ 121
JSON, XML y variantes binarias .............................................................................. 122
Thrift y Protocol Buffers ........................................................................................... 125
Avro ............................................................................................................................. 130
Méritos de los esquemas ........................................................................................... 136
Modos de flujo de datos .................................................................................................. 137
Flujo de datos a través de bases de datos ................................................................ 137
Flujo de datos a través de servicios: REST y RPC .................................................. 140
Flujo de datos por paso de mensajes ....................................................................... 146
Resumen ............................................................................................................................ 148
Referencias ........................................................................................................................ 150
Parte II. Datos distribuidos
5. Replicación .................................................................................................................................. 161
Líderes y seguidores ......................................................................................................... 162
Replicación síncrona frente a asíncrona ................................................................. 163
Cómo configurar nuevos seguidores ....................................................................... 165
Gestión de las interrupciones de los nodos ............................................................ 166
Implementación de logs de replicación ................................................................... 169
Problemas de retardo en la replicación ......................................................................... 172
Lectura de nuestras propias escrituras .................................................................... 173
Lecturas monotónicas ............................................................................................... 175
Lecturas de prefijos coherentes ................................................................................ 176
Soluciones para el retardo en la replicación ........................................................... 178
Replicación multilíder ..................................................................................................... 178
Casos de uso de la replicación multilíder ............................................................... 179
Gestión de conflictos de escritura ............................................................................ 182
Topologías de replicación multilíder ...................................................................... 186
Replicación sin líder ........................................................................................................ 188
Escritura en la base de datos cuando un nodo no funciona ................................. 189
Limitaciones de la coherencia del quorum ............................................................. 192
Quorum descuidados y transferencias indirectas .................................................. 195
Detección de escrituras simultáneas ....................................................................... 196
Resumen ............................................................................................................................ 204
Referencias ........................................................................................................................ 206
6. Particionado ................................................................................................................................ 213
Particionado y replicación .............................................................................................. 214
Particionado de datos clave-valor .................................................................................. 215
Particionado por rangos de claves ........................................................................... 216
Particionado por hash de claves ............................................................................... 217
Cargas de trabajo desbalanceadas y mitigación de puntos calientes .................. 219
Particionado e índices secundarios ............................................................................... 220
Particionado de índices secundarios por documento ........................................... 220
Particionado de índices secundarios por término ................................................. 222
Rebalanceo de particiones .............................................................................................. 223
Estrategias de rebalanceo .......................................................................................... 224
Operaciones: rebalanceo automático o manual ..................................................... 227
Enrutamiento de solicitudes ........................................................................................... 228
Ejecución de consultas en paralelo .......................................................................... 230
Resumen ............................................................................................................................ 231
Referencias ........................................................................................................................ 232
7. Transacciones ............................................................................................................................. 237
El resbaladizo concepto de «transacción» .................................................................... 238
El significado de ACID.............................................................................................. 239
Operaciones con un solo objeto y con varios objetos ........................................... 244
Niveles de aislamiento débil ........................................................................................... 249
Lectura confirmada.................................................................................................... 250
Aislamiento de instantáneas y lectura repetitiva ................................................... 253
Cómo evitar que se pierdan las actualizaciones ..................................................... 259
Escritura desviada y fantasmas ................................................................................ 263
Serializabilidad ................................................................................................................. 269
Ejecución en serie ...................................................................................................... 270
Bloqueo en dos fases (2PL) ....................................................................................... 275
Aislamiento de instantáneas serializable (SSI) ....................................................... 279
Resumen ............................................................................................................................ 284
Referencias ........................................................................................................................ 287
8. El problema de los sistemas distribuidos ................................................................................ 293
Fallos y averías parciales ................................................................................................. 294
Computación en la nube y supercomputación ...................................................... 295
Redes poco fiables ............................................................................................................ 298
Fallos de red en la práctica ........................................................................................ 299
Detección de fallos ..................................................................................................... 300
Tiempos de espera y retardos ilimitados ................................................................ 301
Redes síncronas frente a asíncronas ........................................................................ 305
Relojes poco fiables .......................................................................................................... 308
Relojes monotónicos frente a relojes en tiempo real ............................................ 309
Sincronización y precisión del reloj ........................................................................ 310
Confianza en los relojes sincronizados ................................................................... 312
Pausas del proceso ..................................................................................................... 317
Conocimiento, verdades y mentiras .............................................................................. 322
La verdad la define la mayoría ................................................................................. 323
Fallos bizantinos......................................................................................................... 326
Modelos de sistemas y realidad ................................................................................ 329
Resumen ............................................................................................................................ 333
Referencias ........................................................................................................................ 335
9. Coherencia y consenso .............................................................................................................. 345
Garantías de coherencia .................................................................................................. 346
Linealizabilidad ................................................................................................................ 348
¿Qué hace que un sistema sea linealizable? ............................................................ 349
Confianza en la linealizabilidad ............................................................................... 354
Implementación de sistemas linealizables .............................................................. 357
El coste de la linealizabilidad .................................................................................... 360
Garantías del ordenamiento ........................................................................................... 364
Ordenamiento y causalidad ...................................................................................... 364
Ordenamiento por números de secuencia ............................................................. 369
Difusión de orden total ............................................................................................. 373
Transacciones distribuidas y consenso ......................................................................... 378
Confirmación atómica y confirmación en dos fases (2PC) ................................. 380
Transacciones distribuidas en la práctica ............................................................... 386
Consenso tolerante a fallos ....................................................................................... 391
Servicios de afiliación y coordinación ..................................................................... 397
Resumen ............................................................................................................................ 401
Referencias ........................................................................................................................ 403
Parte III. Datos derivados
10. Procesamiento por lotes ......................................................................................................... 417
Procesamiento por lotes con herramientas Unix ........................................................ 419
Análisis de un log sencillo ......................................................................................... 419
La filosofía Unix ........................................................................................................ 422
MapReduce y sistemas de archivos distribuidos ......................................................... 426
Ejecución de trabajos MapReduce ........................................................................... 428
Agrupaciones y uniones de lados reducidos .......................................................... 432
Uniones del lado del mapa ....................................................................................... 438
Resultado de los flujos de trabajo por lotes ............................................................ 441
Comparación de Hadoop con las bases de datos distribuidas ............................. 445
Más allá de MapReduce .................................................................................................. 450
Materialización del estado intermedio .................................................................... 450
Grafos y procesamiento iterativo ............................................................................. 455
API y lenguajes de alto nivel ..................................................................................... 458
Resumen ............................................................................................................................ 461
Referencias ........................................................................................................................ 463
11. Procesamiento de flujos ......................................................................................................... 471
Transmisión de flujos de eventos .................................................................................. 472
Sistemas de mensajería .............................................................................................. 473
Logs particionados ..................................................................................................... 479
Bases de datos y flujos ..................................................................................................... 484
Necesidad de mantener los sistemas sincronizados .............................................. 485
Captura de datos de cambios ................................................................................... 487
Aprovisionamiento de eventos ................................................................................ 490
Estado, flujos e inmutabilidad .................................................................................. 493
Procesamiento de flujos .................................................................................................. 498
Usos del procesamiento de flujos ............................................................................ 499
Razonamiento sobre el tiempo ................................................................................. 503
Uniones de flujos ....................................................................................................... 507
Tolerancia a fallos ...................................................................................................... 511
Resumen ............................................................................................................................ 515
Referencias ........................................................................................................................ 517
12. El futuro de los sistemas de datos ........................................................................................ 525
Integración de datos ........................................................................................................ 525
Combinación de herramientas especializadas
mediante la derivación de datos .............................................................................. 526
Procesamiento por lotes y procesamiento de flujos .............................................. 530
Desagregación de bases de datos ................................................................................... 535
Composición de las tecnologías de almacenamiento de datos ............................ 536
Diseño de aplicaciones en torno al flujo de datos ................................................. 540
Observación del estado derivado ............................................................................. 546
En busca de la corrección ............................................................................................... 552
Argumento de las bases de datos de extremo a extremo ...................................... 553
Aplicación de restricciones ....................................................................................... 558
Puntualidad e integridad .......................................................................................... 562
Confíe, pero verifique ................................................................................................ 567
Hacer lo correcto ............................................................................................................. 571
Análisis predictivo ..................................................................................................... 572
Privacidad y seguimiento .......................................................................................... 576
Resumen ............................................................................................................................ 583
Referencias ........................................................................................................................ 585
Glosario .............................................................................................................................................. 593

Los datos están en el centro de muchos desafíos que se presentan actualmente en el diseño de sistemas. Hay que resolver cuestiones complejas, como la escalabilidad, la coherencia, la fiabilidad, la eficiencia y el mantenimiento. Además, existe una abrumadora variedad de herramientas, incluyendo bases de datos relacionales, almacenes de datos NoSQL, procesadores de flujo o por lotes y gestores de mensajes. ¿Cuáles son las opciones correctas para nuestra aplicación? ¿Cómo podemos entender todos estos conceptos que están de moda? En esta guía práctica, el autor Martin Kleppmann le ayuda a navegar por este variado panorama examinando los pros y los contras de las distintas tecnologías destinadas al procesamiento y almacenamiento de datos. El software cambia constantemente, pero los principios fundamentales siguen siendo los mismos. Con este libro, los ingenieros y arquitectos de software aprenderán a aplicar esas ideas en la práctica y a aprovechar al máximo los datos en las aplicaciones modernas. ' Analizar detalladamente el funcionamiento interno de los sistemas que ya utiliza, aprender a operar con ellos y utilizarlos con mayor eficacia. ' Adoptar decisiones informadas, identificando los puntos fuertes y débiles de las diferentes herramientas. ' Encontrar el equilibrio en relación con la coherencia, la escalabilidad, la tolerancia a fallos y la complejidad de las aplicaciones. ' Comprender la investigación sobre sistemas distribuidos en la que se fundamentan las bases de datos modernas. ' Echar un vistazo a lo que hay entre bambalinas en los principales servicios online y aprender de sus arquitecturas. Martin Kleppmann es investigador de sistemas distribuidos en la Universidad de Cambridge, Reino Unido. Antes desarrolló las funciones de ingeniero de software y empresario en empresas de Internet como Linkedln y Rapportive, donde trabajó en infraestructuras de datos a gran escala. Martin imparte habitualmente conferencias, es bloguero y desarrollador de código abierto.

Artículos relacionados

  • PROGRAMACIÓN Y MOTORES DE VIDEOJUEGOS
    CORTES CAMPO, FRANCISCO JAVIER
    Este libro desarrolla los contenidos del módulo Programación y motores de videojuegos, perteneciente al curso de especialización Desarrollo de videojuegos y realidad virtual, recogidos en el Real Decreto 261/2021, de 13 de abril. Gracias a su lectura, aprenderá las bases de la programación y el diseño de videojuegos. Cada capítulo incluye teoría, cuestionarios tipo test y activ...
    En stock

    29,90 €28,41 €

  • CURSO PRACTICO CON UNITY 3D
    CANTON NADALES, DAVID
    El primer libro en español que guía el desarrollo de videojuegos con Unity, desde los fundamentos hasta la creación de builds ejecutables.Dirigido a principiantes y desarrolladores con experiencia, este libro te acompaña paso a paso, desde el uso del Unity Editor hasta la creación de videojuegos completos y optimizados. Aprenderás a manipular GameObjects, programar en C# y Visu...
    En stock

    29,95 €28,45 €

  • CINCO DUROS: LA HISTORIA DEL VIDEOJUEGO EN ESPAÑA PARA TODOS (VOL. 2, 1987-1989
    VARGAS, DIEGO
    Dolmen Editorial y Diego Vargas continúan su labor de documentación ypreservación de la historia del videojuego español con el lanzamientodel segundo volumen de ?CINCO DUROS: La historia del videojuego enEspaña para todos?. Siguiendo la línea del primer tomo, y cubriendodesde 1987 hasta 1989, los años donde la industria del videojuego se?profesionaliza?, esta obra recoge los te...
    En stock

    27,96 €26,56 €

  • QUÉ HACER CUANDO TODO CAMBIA
    ALMIRALL, ESTEVE
    Un libro que transforma en optimismo y oportunidad la inquietud por el futuro y las fronteras tecnológicas de la inteligencia artificialA finales del 2022, ChatGPT hizo que nuestro mundo entrase en ebullición. Se sucedieron los mensajes apocalípticos de pensadores como Yuval Noah Harari o de eminencias en IA como Geoff Hinton, y sus avisos se convirtieron en titulares que diero...
    En stock

    18,90 €17,96 €

  • INTELIGENCIA ARTIFICIAL. INVESTIGACIONES, APLICACIONES Y AVANCES
    ORTEGA CANDEL, JOSE MANUEL
    El campo de la inteligencia artificial (IA) ha experimentado un crecimiento explosivo en las últimas décadas, transformando a fondo numerosos aspectos de nuestra sociedad y tecnología. Desde los sistemas de recomendación en plataformas de entretenimiento hasta los vehículos autónomos y la medicina asistida por IA, los avances en este campo han revolucionado la forma en que inte...
    En stock

    24,95 €23,70 €

  • UNA ARAÑA EN LA RED DEL VIDEOJUEGO
    LUNA, JOSÉ ANTONIO
    Spider-Man es uno de los personajes más icónicos de la historia. Sucarisma, su representación de la fuerza colectiva o la naturalezacotidiana de sus problemas, como las deudas, la inestabilidadlaboral o los alquileres abusivos, lo convierten en un símbolo de actualidad apesar de tener más de 60 años. Por ello, desde que fue presentado enel cómic Amazing Fantasy #15, el éxito de...
    En stock

    23,95 €22,75 €