Designing Data-Intensive Applications (Рубрика Architecture)
Я прочитал эту книгу в 2018 году и она реально помогла мне подтянуть знание в проектировании приложений, которые интенсивно работают с данными. Я писал про нее в своей популярной статье "Как прокачаться в проектировании программного обеспечения", где советовал 16 крутых книг по проектированию, которые отвечали на вопросы "Что делаем", "Как делаем" и "Как это эксплатируем". Но в этом канале эту книгу я не вспоминал, поэтому решил исправить это упущение, особенно с учетом того, что я уже начал читать готовящееся второе издание книги на платформе O'Reilly (там пока есть только 3 главы, а вся книга будет готова к концу 2025 года). Поэтому пока актуально еще первое издание, я расскажу о своих впечатлениях
- У меня есть бумажная версия книги на русском и на английском языках - книжка заслуживает быть в моей библиотеке в бумажном виде
- Иллюстрации в книге отличные (в новом издании они тоже хороши)
- Книгу в первый раз я читал долго, но теперь она читается очень легко
- Сама книга состоит из трех частей и 12 глав, ниже перечислены названия частей -- Основы информационных систем -- Распределенные данные -- Производные данные
Первая часть является вводной и состоит из глав:
- Надежные, масштабируемые и удобные в сопровождении системы
- Модели данных и языки запросов — SQL, NoSQL, Map Reduce, Cypher и SparQL
- Подсистемы хранения и извлечения данных — SSTables, LSM, B-Tree, Звезды и снежинки, столбцовое хранение данных
- Кодирование и эволюция — json, xml, thrift, protobuf, avro. Миграции данных:)
Вторая часть включает в себя главы: 5. Репликация — синхронная/асинхронная, master/slave, master/master, no-master 6. Секционирование — типа ключ/значение, по диапазонам ключе, секционирование и репликация, секционирование и вторичные индексы, перебалансировка секций 7. Транзакции — ACID/BASE, 2PL(two-phase locking), SSI (serializable snapshot isolation) 8. Проблемы распределенных систем — сбои и отказы, ненадежные сети, ненадежные часы, знание/истина/ложь 9. Согласованность и консенсус
Часть 3 состоит из глав: 10. Пакетная обработка 11. Потоковая обработка 12. Будущее информационных систем
P.S. Книга позволяет увидеть хорошее overview разных тем для тех, кому приходится проектировать/разрабатывать системы, которые хранят/обрабатывают данные:)
P.P.S. С момента первого прочтения книги я прочел много других книг и мой изначальный восторг от книги Мартина Клеппмана поблек, но второе издание книги я жду с большим интересом. А чуть позже я сделаю обзор тех частей, что доступны в early preview этого второго издания.
#DistributedSystems #Architecture #SystemDesign #Software #SoftwareArchitecture