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

$998

Hay existencias

Autor: Kleppmann, Martin

Páginas: 618

Año: 2022

Edición: 1

Editorial: Alfaomega – Marcombo

Apoyos:

Nivel:

Encuadernación: Rústica

Hay existencias

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

Información adicional

Peso .800 kg
Dimensiones 23 × 17 × 3 cm

Título

Ir a Arriba