Envíos gratis en compras superiores a $70.000
Inicio/Profesional/TICs y Computación/Programación/Diseño de aplicaciones mediante el uso intensivo de datos

Diseño de aplicaciones mediante el uso intensivo de datos

$57.636

  • Envío gratis en compras superiores a $70.000
  • Autor: Kleppmann, Martin

    Páginas: 618

    Editorial: Alfaomega – Marcombo

    ISBN: 9788426734679 Categoría:

    Descripción

    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.

    Contenidos

    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

    Ir a Arriba