[{"depth":1,"reference_id":"9781491903063-/preface01.html","ourn":"urn:orm:book:9781491903063:chapter:preface01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:preface01.html/","fragment":"preface","title":"Preface","duration":759.0,"children":[{"depth":2,"reference_id":"9781491903063-/preface01.html","ourn":"urn:orm:book:9781491903063:chapter:preface01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:preface01.html/","fragment":"idm45085131164704","title":"Who Should Read This Book?","duration":759.0,"children":[]},{"depth":2,"reference_id":"9781491903063-/preface01.html","ourn":"urn:orm:book:9781491903063:chapter:preface01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:preface01.html/","fragment":"sec_preface_scope","title":"Scope of This Book","duration":759.0,"children":[]},{"depth":2,"reference_id":"9781491903063-/preface01.html","ourn":"urn:orm:book:9781491903063:chapter:preface01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:preface01.html/","fragment":"idm45085131171856","title":"Outline of This Book","duration":759.0,"children":[]},{"depth":2,"reference_id":"9781491903063-/preface01.html","ourn":"urn:orm:book:9781491903063:chapter:preface01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:preface01.html/","fragment":"idm45085131345248","title":"References and Further Reading","duration":759.0,"children":[]},{"depth":2,"reference_id":"9781491903063-/preface01.html","ourn":"urn:orm:book:9781491903063:chapter:preface01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:preface01.html/","fragment":"idm45085131343152","title":"O’Reilly Online Learning","duration":759.0,"children":[]},{"depth":2,"reference_id":"9781491903063-/preface01.html","ourn":"urn:orm:book:9781491903063:chapter:preface01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:preface01.html/","fragment":"idm45085131336976","title":"How to Contact Us","duration":759.0,"children":[]},{"depth":2,"reference_id":"9781491903063-/preface01.html","ourn":"urn:orm:book:9781491903063:chapter:preface01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:preface01.html/","fragment":"idm45085131334912","title":"Acknowledgments","duration":759.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/part01.html","ourn":"urn:orm:book:9781491903063:chapter:part01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:part01.html/","fragment":"part_foundations","title":"I. Foundations of Data Systems","duration":69.0,"children":[]},{"depth":1,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"ch_introduction","title":"1. Reliable, Scalable, and Maintainable Applications","duration":2553.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"idm45085130921984","title":"Thinking About Data Systems","duration":2553.0,"children":[]},{"depth":2,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"sec_introduction_reliability","title":"Reliability","duration":2553.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"idm45085131135200","title":"Hardware Faults","duration":2553.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"idm45085131268160","title":"Software Errors","duration":2553.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"idm45085131238192","title":"Human Errors","duration":2553.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"idm45085131215024","title":"How Important Is Reliability?","duration":2553.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"sec_introduction_scalability","title":"Scalability","duration":2553.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"sec_introduction_scalability_load","title":"Describing Load","duration":2553.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"sec_introduction_percentiles","title":"Describing Performance","duration":2553.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"sec_introduction_load","title":"Approaches for Coping with Load","duration":2553.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"sec_introduction_maintainability","title":"Maintainability","duration":2553.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"idm45085130597072","title":"Operability: Making Life Easy for Operations","duration":2553.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"idm45085119065008","title":"Simplicity: Managing Complexity","duration":2553.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"sec_introduction_evolvability","title":"Evolvability: Making Change Easy","duration":2553.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch01.html","ourn":"urn:orm:book:9781491903063:chapter:ch01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch01.html/","fragment":"sec_introduction_summary","title":"Summary","duration":2553.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"ch_datamodels","title":"2. Data Models and Query Languages","duration":4209.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"sec_datamodels_history","title":"Relational Model Versus Document Model","duration":4209.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"idm45085118969056","title":"The Birth of NoSQL","duration":4209.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"sec_datamodels_document","title":"The Object-Relational Mismatch","duration":4209.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"sec_datamodels_many_to_many","title":"Many-to-One and Many-to-Many Relationships","duration":4209.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"sec_datamodels_codasyl","title":"Are Document Databases Repeating History?","duration":4209.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"sec_datamodels_document_summary","title":"Relational Versus Document Databases Today","duration":4209.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"sec_datamodels_query","title":"Query Languages for Data","duration":4209.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"idm45085124937664","title":"Declarative Queries on the Web","duration":4209.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"sec_datamodels_mapreduce","title":"MapReduce Querying","duration":4209.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"sec_datamodels_graph","title":"Graph-Like Data Models","duration":4209.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"idm45085124014096","title":"Property Graphs","duration":4209.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"idm45085124013472","title":"The Cypher Query Language","duration":4209.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"idm45085123878528","title":"Graph Queries in SQL","duration":4209.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"idm45085123457104","title":"Triple-Stores and SPARQL","duration":4209.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"idm45085123456640","title":"The Foundation: Datalog","duration":4209.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch02.html","ourn":"urn:orm:book:9781491903063:chapter:ch02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch02.html/","fragment":"idm45085124054144","title":"Summary","duration":4209.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"ch_storage","title":"3. Storage and Retrieval","duration":4485.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_oltp","title":"Data Structures That Power Your Database","duration":4485.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_hash_index","title":"Hash Indexes","duration":4485.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_lsm_trees","title":"SSTables and LSM-Trees","duration":4485.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_b_trees","title":"B-Trees","duration":4485.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_btree_lsm_comparison","title":"Comparing B-Trees and LSM-Trees","duration":4485.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_other_indexing","title":"Other Indexing Structures","duration":4485.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_analytics","title":"Transaction Processing or Analytics?","duration":4485.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_dwh","title":"Data Warehousing","duration":4485.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_analytics_schemas","title":"Stars and Snowflakes: Schemas for Analytics","duration":4485.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_column","title":"Column-Oriented Storage","duration":4485.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_column_compression","title":"Column Compression","duration":4485.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"idm45085121878800","title":"Sort Order in Column Storage","duration":4485.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"idm45085121800192","title":"Writing to Column-Oriented Storage","duration":4485.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"sec_storage_materialized_views","title":"Aggregation: Data Cubes and Materialized Views","duration":4485.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch03.html","ourn":"urn:orm:book:9781491903063:chapter:ch03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch03.html/","fragment":"idm45085122018592","title":"Summary","duration":4485.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"ch_encoding","title":"4. Encoding and Evolution","duration":3588.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"sec_encoding_formats","title":"Formats for Encoding Data","duration":3588.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"idm45085121687344","title":"Language-Specific Formats","duration":3588.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"sec_encoding_json","title":"JSON, XML, and Binary Variants","duration":3588.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"sec_encoding_thrift_protobuf","title":"Thrift and Protocol Buffers","duration":3588.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"sec_encoding_avro","title":"Avro","duration":3588.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"sec_encoding_schemas","title":"The Merits of Schemas","duration":3588.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"sec_encoding_dataflow","title":"Modes of Dataflow","duration":3588.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"sec_encoding_dataflow_db","title":"Dataflow Through Databases","duration":3588.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"sec_encoding_dataflow_rpc","title":"Dataflow Through Services: REST and RPC","duration":3588.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"sec_encoding_dataflow_msg","title":"Message-Passing Dataflow","duration":3588.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch04.html","ourn":"urn:orm:book:9781491903063:chapter:ch04.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch04.html/","fragment":"idm45085120768432","title":"Summary","duration":3588.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/part02.html","ourn":"urn:orm:book:9781491903063:chapter:part02.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:part02.html/","fragment":"part_distributed_data","title":"II. Distributed Data","duration":345.0,"children":[]},{"depth":1,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"ch_replication","title":"5. Replication","duration":5175.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_leader","title":"Leaders and Followers","duration":5175.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_sync_async","title":"Synchronous Versus Asynchronous Replication","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_new_replica","title":"Setting Up New Followers","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_failover","title":"Handling Node Outages","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_implementation","title":"Implementation of Replication Logs","duration":5175.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_lag","title":"Problems with Replication Lag","duration":5175.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_ryw","title":"Reading Your Own Writes","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_monotonic_reads","title":"Monotonic Reads","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_consistent_prefix","title":"Consistent Prefix Reads","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"idm45085120303552","title":"Solutions for Replication Lag","duration":5175.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_multi_leader","title":"Multi-Leader Replication","duration":5175.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"idm45085120257280","title":"Use Cases for Multi-Leader Replication","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_write_conflicts","title":"Handling Write Conflicts","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_topologies","title":"Multi-Leader Replication Topologies","duration":5175.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_leaderless","title":"Leaderless Replication","duration":5175.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"idm45085120006112","title":"Writing to the Database When a Node Is Down","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_quorum_limitations","title":"Limitations of Quorum Consistency","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_sloppy_quorum","title":"Sloppy Quorums and Hinted Handoff","duration":5175.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"sec_replication_concurrent","title":"Detecting Concurrent Writes","duration":5175.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch05.html","ourn":"urn:orm:book:9781491903063:chapter:ch05.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch05.html/","fragment":"idm45085119814336","title":"Summary","duration":5175.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"ch_partitioning","title":"6. Partitioning","duration":2277.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"idm45085106953808","title":"Partitioning and Replication","duration":2277.0,"children":[]},{"depth":2,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"sec_partitioning_key_value","title":"Partitioning of Key-Value Data","duration":2277.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"sec_partitioning_key_range","title":"Partitioning by Key Range","duration":2277.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"sec_partitioning_hash","title":"Partitioning by Hash of Key","duration":2277.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"sec_partitioning_skew","title":"Skewed Workloads and Relieving Hot Spots","duration":2277.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"sec_partitioning_secondary_indexes","title":"Partitioning and Secondary Indexes","duration":2277.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"idm45085106808544","title":"Partitioning Secondary Indexes by Document","duration":2277.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"idm45085106765696","title":"Partitioning Secondary Indexes by Term","duration":2277.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"sec_partitioning_rebalancing","title":"Rebalancing Partitions","duration":2277.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"idm45085106719504","title":"Strategies for Rebalancing","duration":2277.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"idm45085106628320","title":"Operations: Automatic or Manual Rebalancing","duration":2277.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"sec_partitioning_routing","title":"Request Routing","duration":2277.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"idm45085106560128","title":"Parallel Query Execution","duration":2277.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch06.html","ourn":"urn:orm:book:9781491903063:chapter:ch06.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch06.html/","fragment":"idm45085106612144","title":"Summary","duration":2277.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"ch_transactions","title":"7. Transactions","duration":5727.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_overview","title":"The Slippery Concept of a Transaction","duration":5727.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_acid","title":"The Meaning of ACID","duration":5727.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_multi_object","title":"Single-Object and Multi-Object Operations","duration":5727.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_isolation_levels","title":"Weak Isolation Levels","duration":5727.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_read_committed","title":"Read Committed","duration":5727.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_snapshot_isolation","title":"Snapshot Isolation and Repeatable Read","duration":5727.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_lost_update","title":"Preventing Lost Updates","duration":5727.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_write_skew","title":"Write Skew and Phantoms","duration":5727.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_serializability","title":"Serializability","duration":5727.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_serial","title":"Actual Serial Execution","duration":5727.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_2pl","title":"Two-Phase Locking (2PL)","duration":5727.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"sec_transactions_ssi","title":"Serializable Snapshot Isolation (SSI)","duration":5727.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch07.html","ourn":"urn:orm:book:9781491903063:chapter:ch07.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch07.html/","fragment":"idm45085105429552","title":"Summary","duration":5727.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"ch_distributed","title":"8. The Trouble with Distributed Systems","duration":5451.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_partial_failure","title":"Faults and Partial Failures","duration":5451.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_cloud_vs_hpc","title":"Cloud Computing and Supercomputing","duration":5451.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_networks","title":"Unreliable Networks","duration":5451.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_network_faults","title":"Network Faults in Practice","duration":5451.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"idm45085104832912","title":"Detecting Faults","duration":5451.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_queueing","title":"Timeouts and Unbounded Delays","duration":5451.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_sync_networks","title":"Synchronous Versus Asynchronous Networks","duration":5451.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_clocks","title":"Unreliable Clocks","duration":5451.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_monotonic_timeofday","title":"Monotonic Versus Time-of-Day Clocks","duration":5451.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_clock_accuracy","title":"Clock Synchronization and Accuracy","duration":5451.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_clocks_relying","title":"Relying on Synchronized Clocks","duration":5451.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_clocks_pauses","title":"Process Pauses","duration":5451.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_truth","title":"Knowledge, Truth, and Lies","duration":5451.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_majority","title":"The Truth Is Defined by the Majority","duration":5451.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_byzantine","title":"Byzantine Faults","duration":5451.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"sec_distributed_system_model","title":"System Model and Reality","duration":5451.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch08.html","ourn":"urn:orm:book:9781491903063:chapter:ch08.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch08.html/","fragment":"idm45085104228736","title":"Summary","duration":5451.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"ch_consistency","title":"9. Consistency and Consensus","duration":7590.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"idm45085103937104","title":"Consistency Guarantees","duration":7590.0,"children":[]},{"depth":2,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_linearizability","title":"Linearizability","duration":7590.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_lin_definition","title":"What Makes a System Linearizable?","duration":7590.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_linearizability_usage","title":"Relying on Linearizability","duration":7590.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_implementing_linearizable","title":"Implementing Linearizable Systems","duration":7590.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_linearizability_cost","title":"The Cost of Linearizability","duration":7590.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_ordering","title":"Ordering Guarantees","duration":7590.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_causality","title":"Ordering and Causality","duration":7590.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_timestamps","title":"Sequence Number Ordering","duration":7590.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_total_order","title":"Total Order Broadcast","duration":7590.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_consensus","title":"Distributed Transactions and Consensus","duration":7590.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_2pc","title":"Atomic Commit and Two-Phase Commit (2PC)","duration":7590.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_dist_trans","title":"Distributed Transactions in Practice","duration":7590.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_consensus_ft","title":"Fault-Tolerant Consensus","duration":7590.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"sec_consistency_membership","title":"Membership and Coordination Services","duration":7590.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch09.html","ourn":"urn:orm:book:9781491903063:chapter:ch09.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch09.html/","fragment":"idm45085103158480","title":"Summary","duration":7590.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/part03.html","ourn":"urn:orm:book:9781491903063:chapter:part03.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:part03.html/","fragment":"part_systems","title":"III. Derived Data","duration":207.0,"children":[]},{"depth":1,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"ch_batch","title":"10. Batch Processing","duration":5796.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_unix","title":"Batch Processing with Unix Tools","duration":5796.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_log_analysis","title":"Simple Log Analysis","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_unix_philosophy","title":"The Unix Philosophy","duration":5796.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_mapreduce","title":"MapReduce and Distributed Filesystems","duration":5796.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"idm45085102003360","title":"MapReduce Job Execution","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_reduce_joins","title":"Reduce-Side Joins and Grouping","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_map_joins","title":"Map-Side Joins","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_output","title":"The Output of Batch Workflows","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_mr_vs_db","title":"Comparing Hadoop to Distributed Databases","duration":5796.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_beyond_mr","title":"Beyond MapReduce","duration":5796.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_materialize","title":"Materialization of Intermediate State","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_graph","title":"Graphs and Iterative Processing","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"sec_batch_highlevel","title":"High-Level APIs and Languages","duration":5796.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch10.html","ourn":"urn:orm:book:9781491903063:chapter:ch10.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch10.html/","fragment":"idm45085101495456","title":"Summary","duration":5796.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"ch_stream","title":"11. Stream Processing","duration":5796.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_transmit","title":"Transmitting Event Streams","duration":5796.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_messaging","title":"Messaging Systems","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_log","title":"Partitioned Logs","duration":5796.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_databases","title":"Databases and Streams","duration":5796.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_sync","title":"Keeping Systems in Sync","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_cdc","title":"Change Data Capture","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_event_sourcing","title":"Event Sourcing","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_immutability","title":"State, Streams, and Immutability","duration":5796.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_processing","title":"Processing Streams","duration":5796.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_uses","title":"Uses of Stream Processing","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_time","title":"Reasoning About Time","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_joins","title":"Stream Joins","duration":5796.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"sec_stream_fault_tolerance","title":"Fault Tolerance","duration":5796.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch11.html","ourn":"urn:orm:book:9781491903063:chapter:ch11.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch11.html/","fragment":"idm45085100457824","title":"Summary","duration":5796.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"ch_future","title":"12. The Future of Data Systems","duration":7935.0,"children":[{"depth":2,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_integration","title":"Data Integration","duration":7935.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"idm45085099902560","title":"Combining Specialized Tools by Deriving Data","duration":7935.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_batch_streaming","title":"Batch and Stream Processing","duration":7935.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_unbundling","title":"Unbundling Databases","duration":7935.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"idm45085099631888","title":"Composing Data Storage Technologies","duration":7935.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_dataflow","title":"Designing Applications Around Dataflow","duration":7935.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_observing","title":"Observing Derived State","duration":7935.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_correctness","title":"Aiming for Correctness","duration":7935.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_end_to_end","title":"The End-to-End Argument for Databases","duration":7935.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_constraints","title":"Enforcing Constraints","duration":7935.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_integrity","title":"Timeliness and Integrity","duration":7935.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_verification","title":"Trust, but Verify","duration":7935.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"sec_future_ethics","title":"Doing the Right Thing","duration":7935.0,"children":[{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"idm45085098615552","title":"Predictive Analytics","duration":7935.0,"children":[]},{"depth":3,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"idm45085098543296","title":"Privacy and Tracking","duration":7935.0,"children":[]}]},{"depth":2,"reference_id":"9781491903063-/ch12.html","ourn":"urn:orm:book:9781491903063:chapter:ch12.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ch12.html/","fragment":"idm45085098542704","title":"Summary","duration":7935.0,"children":[]}]},{"depth":1,"reference_id":"9781491903063-/glossary01.html","ourn":"urn:orm:book:9781491903063:chapter:glossary01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:glossary01.html/","fragment":"ch_glossary","title":"Glossary","duration":690.0,"children":[]},{"depth":1,"reference_id":"9781491903063-/ix01.html","ourn":"urn:orm:book:9781491903063:chapter:ix01.html","url":"https://learning.oreilly.com/api/v2/epub-chapters/urn:orm:book:9781491903063:chapter:ix01.html/","fragment":"idm45085098385792","title":"Index","duration":7590.0,"children":[]}]