- Артикул:00-01047275
- Автор: Клеппман М.
- ISBN: 978-601-08-3514-6
- Обложка: Мягкая обложка
- Издательство: Sprint book (все книги издательства)
- Город: Астана
- Страниц: 640
- Формат: 70х100/16
- Год: 2024
- Вес: 1596 г
- Серия: Бестселлеры O’Reilly (все книги серии)
В этой книге вы найдете ключевые принципы, алгоритмы и компромиссы, без которых не обойтись при разработке высоконагруженных систем для работы с данными. Материал рассматривается на примере внутреннего устройства популярных программных пакетов и фреймворков. В книге три основные части, посвященные, прежде всего, теоретическим аспектам работы с распределенными системами и базами данных. От читателя требуются базовые знания SQL и принципов работы баз данных.
Содержание
Предисловие
Кому стоит прочесть эту книгу
Что рассматривается в издании
Структура книги
Ссылки и дополнительная литература
Благодарности
Часть I. Основы информационных систем
Глава 1. Надежные, масштабируемые и удобные в сопровождении приложения
1.1. Подходы к работе над информационными системами
1.2. Надежность
Аппаратные сбои
Программные ошибки
Человеческий фактор
Насколько важна надежность
1.3. Масштабируемость
Описание нагрузки
Описание производительности
Как справиться с нагрузкой
1.4. Удобство сопровождения
Удобство эксплуатации
Простота: регулируем сложность
Возможность развития: облегчаем внесение изменений
1.5. Резюме
1.6. Библиография
Глава 2. Модели данных и языки запросов
2.1. Реляционная модель в сравнении с документоориентированной моделью
Рождение NoSQL
Объектно-реляционное несоответствие
Связи "многие-к-одному" и "многие-ко-многим"
Повторяется ли история в случае документоориентированных баз данных
Реляционные и документоориентированные базы данных сегодня
2.2. Языки запросов для данных
Декларативные запросы в Интернете
Выполнение запросов с помощью MapReduce
2.3. Графоподобные модели данных
Графы свойств
Язык запросов Cypher
Графовые запросы в SQL
Хранилища тройных кортежей и SPARQL
Фундамент: Datalog
2.4. Резюме
2.5. Библиография
Глава 3. Подсистемы хранения и извлечение данных
3.1. Базовые структуры данных БД
Хеш-индексы
SS-таблицы и LSM-деревья
В-деревья
Сравнение В- и LSM-деревьев
Другие индексные структуры
3.2. Обработка транзакций или аналитика?
Складирование данных
"Звезды" и "снежинки": схемы для аналитики
3.3. Столбцовое хранилище
Сжатие столбцов
Порядок сортировки в столбцовом хранилище
Запись в столбцовое хранилище
Агрегирование: кубы данных и материализованные представления
3.4. Резюме
3.5. Библиография
4.1. Форматы кодирования данных
Форматы, ориентированные на конкретные языки
JSON, XML и двоичные типы данных
Thrift и Protocol Buffers
Avro
Достоинства схем
4.2. Режимы движения данных
Поток данных через БД
Поток данных через сервисы: REST и RPC
Поток данных передачи сообщений
4.3. Резюме
4.4. Библиография
Часть II. Распределенные данные
Глава 5. Репликация
5.1. Ведущие и ведомые узлы
Синхронная и асинхронная репликация
Создание новых ведомых узлов
Перебои в обслуживании узлов
Реализация журналов репликации
5.2. Проблемы задержки репликации
Читаем свои же записи
Монотонные чтения
Согласованное префиксное чтение
Решения проблемы задержки репликации
5.3. Репликация с несколькими ведущими узлами
Сценарии использования репликации с несколькими ведущими узлами
Обработка конфликтов записи
Топологии репликации с несколькими ведущими узлами
5.4. Репликация без ведущего узла
Запись в базу данных при отказе одного из узлов
Ограничения согласованности по кворуму
Нестрогие кворумы и направленная передача
Обнаружение конкурентных операций записи
5.5. Резюме
5.6. Библиография
6.1. Секционирование и репликация
6.2. Секционирование данных типа "ключ - значение"
Секционирование по диапазонам значений ключа
Секционирование по хешу ключа
Асимметричные нагрузки и разгрузка горячих точек
6.3. Секционирование и вторичные индексы
Секционирование вторичных индексов по документам
Секционирование вторичных индексов по термам
6.4. Перебалансировка секций
Методики перебалансировки
Эксплуатация: автоматическая или ручная перебалансировка
6.5. Маршрутизация запросов
6.6. Резюме
6.7. Библиография
Глава 7. Транзакции
7.1. Неустоявшаяся концепция транзакции
Смысл аббревиатуры ACID
Однообъектные и многообъектные операции
7.2. Слабые уровни изоляции
Чтение зафиксированных данных
Изоляция снимков состояния и воспроизводимое чтение
Предотвращение потери обновлений
Асимметрия записи и фантомы
7.3. Сериализуемость
Последовательное выполнение
Двухфазная блокировка (2PL)
Сериализуемая изоляция снимков состояния (SSI)
7.4. Резюме
7.5. Библиография
Глава 8. Проблемы распределенных систем
8.1. Сбои и частичные отказы
8.2. Ненадежные сети
Сетевые сбои на практике
Обнаружение сбоев
Время ожидания и неограниченные задержки
Асинхронные и синхронные сети
8.3. Ненадежные часы
Монотонные часы и часы истинного времени
Синхронизация часов и их точность
Ненадежность синхронизированных часов
Паузы при выполнении процессов
8.4. Знание, истина и ложь
Истина определяется большинством
Византийские сбои
Модели системы на практике
8.5. Резюме
8.6. Библиография
Глава 9. Согласованность и консенсус
9.1. Гарантии согласованности
9.2. Линеаризуемость
Что делает систему линеаризуемой
Опора на линеаризуемость
Реализация линеаризуемых систем
Цена линеаризуемое
9.3. Гарантии упорядоченности
Порядок и причинность
Упорядоченность по порядковым номерам
Рассылка общей последовательности
9.4. Распределенные транзакции и консенсус
Атомарная и двухфазная фиксация (2РС)
Распределенные транзакции на практике
Отказоустойчивый консенсус
Сервисы членства и координации
9.5. Резюме
9.6. Библиография
Часть III. Производные данные
III. 1. Системы записи и производные данные
III.2. Обзор глав
Глава 10. Пакетная обработка
10.1. Пакетная обработка средствами Unix
Простой анализ журнала
Философия Unix
10.2. MapReduce и распределенные файловые системы
Выполнение задач в MapReduce
Объединение и группировка на этапе свертки
Объединения на этапе отображения
Выходные данные пакетных потоков
Сравнение Hadoop и распределенных баз данных
10.3. За пределами MapReduce
Материализация промежуточного состояния
Графы и итеративная обработка
API и языки высокого уровня
10.4. Резюме
10.5. Библиография
Глава 11. Потоковая обработка
11.1. Передача потоков событий
Системы обмена сообщениями
Секционирование журналов
11.2. Базы данных и потоки
Синхронизация систем
Перехват изменений данных
Источники событий
Состояние, потоки и неизменяемость
11.3. Обработка потоков
Применение обработки потоков
Рассуждения о времени
Объединения потоков
Отказоустойчивость
11.4. Резюме
11.5. Библиография
Глава 12. Будущее информационных систем
12.1. Интеграция данных
Объединение специализированных инструментов путем сбора информации
Пакетная и потоковая обработка
12.2. Отделение от баз данных
Объединение технологий хранения данных
Проектирование приложений на основе потока данных
Наблюдение за производными состояниями
12.3. Стремление к корректности
Принудительные ограничения
Своевременность и целостность
Доверяй, но проверяй
12.4. Делать что должно
Предсказательная аналитика
Конфиденциальность и отслеживание
12.5. Резюме
12.6. Библиография