Книжный куб
11.1K subscribers
2.66K photos
6 videos
3 files
1.96K links
Рекомендации интересных книг, статей и выступлений от Александра Поломодова (@apolomodov), технического директора и эксперта в архитектуре
Download Telegram
Примеры иллюстраций из книги Введение в RUP (The Rational Unified Process. An Introduction)
🔥5👍2
Fingerpool и Чапаев (Рубрика #Kids)

Кто в детстве не играл в Чапаева? Я вот играл и решил продолжить традицию со своими детьми, но быстро устал доставать шашки из под всех диванов и кроватей. Дальше я решил поискать игру в этом стиле, но так, чтобы у доски были края. Я быстро нашел игру Карром, но мне показалось, что 15+ тысяч рублей за эту игру дороговато. Потом я нашел игру под названием finger pool, которая представляет собой версию чапаева на маленьком поле для бильярда, где мы играем по правилам пула:) Эта игрушка зашла моим сыновьям и теперь мы играем в нее вместо Чапаева, а мне не приходится искать улетевшие шашки:)

#ForParents #ForKids #BoardGame
👍14🔥75
ChatGPT from Scratch: How to Train an Enterprise AI Assistant • Phil Winder • GOTO 2023 (Рубрика #AI)

Интересное выступление от Phil Winder, CEO компании Winder.AI и автора книги "Reinforcement Learning". В этом видео автор рассказывает базово про chatGPT и показывает забавную демку с файнтюнингом модели для написания лирики, а дальше эту созданную лирику зачитывает на фоне музыки, сгенерированной Stable Audio. Если же переходить к основному контенту, то
- Автор начинает с краткой истории LLM, где автор прослеживает эволюционный путь LLM от их рудиментарных форм до передовых архитектур, таких как GPT-4, и как это влияет на область обработки естественного языка (NLP).
- Дальше он рассказывает про базовую архитектуру и компоненты больших языковых моделей (encoder-decoder в трансформерах и дальше только декодер как в GPT)
- Потом речь идет про методы предварительной обработки наборов данных, специфичных для предметной области, которые приводят к созданию узкоспециализированного и эффективного LLM
- После этого доходит очередь до стратегий эффективного и экономичного обучения моделей: от тонкой настройки предварительно обученных моделей до обучения с нуля.
- Напоследок автор дает рекомендации по развертыванию для LLM, включая использование облачных сервисов, таких как AWS и Azure (и тут он показывает заодно демку)
- Ну и в финале приводятся соображения безопасности и этики при развертывании LLM в бизнес-среде, включая конфиденциальность данных и интерпретируемость модели.

#AI #ML #DataScience
👍4🔥43
Live-трансляция про слайдоцентричное мышление от Кирилла Анастасина и Вани Лукьянова (Рубрика #Speaking)

Сегодня автор комикаки (@komikaki), Кирилл Анастасин, обсудит с Ваней Лукьяновым тему про презентации, в которой поднимет вопросы
— Как мешают слайды готовить доклад?
— Роль слайдов в презентации?
— Как портит жизнь слайдоцентричное мышление в коллективе?
— Что главное в выступлении?

P.S.
Лет 5 назад я проходил обучение у Кирилла и оно помогло мне тогда улучшить публичные выступления. Обкатывал я подходы, готовясь к выступлению на ArchDays 2019, про что я рассказывал 5 лет назад.

#PublicSpeaking #SelfDevelopment
5👍5🔥1
Neural correlates of interspecies perspective taking in the post-mortem Atlantic Salmon: an argument for multiple comparisons correction (Рубрика #Humor)

При изучении книги Дэвида Хэнда "Темные данные" ("Dark data. Why what you don't know matters") наткнулся на разбор этого whitepaper про проведение экспериментов над мозгом мертвого лосося. Этот эксперимент получил Шнобелевскую премию по нейробиологии и он был поставлен следующим образом:
- Мертвому лососю проводили МРТ-сканирование головного мозга
- Одновременно с этим показывали серию фотографий, изображающие людей в различных ситуациях
- А также просили испытуемого определить какие эмоции используют изображенные люди
- Фиксировали определение эмоций при помощи реакции, которая определялась как активность клеток мозга, видимая на вокселях (пикселях МРТ-изображения)
Оказалось, что несколько вокселей оказались активны. Авторы сделали открытие, что
Либо мы наткнулись на поразительное открытие на стыке ихтиологии и посмертных когнитивных функций, либо что-то не так с нашим статистическим подходом. Можем ли мы заключить из этих данных, что лосось выразил свое мнение, отвечая на поставленный вопрос? Конечно, нет. Контролируя когнитивные способности субъекта, в данном случае мы полностью исключили эту возможность


Дэвид Хэнд, автор книги про темные данные, а также президент статистического общества и член Британской академии, вспоминает анекдот на эту тему
Экспериментатор А говорит экспериментатору Б, что у него большие проблемы с воспроизведением результатов, полученных Б. "Неудивительно, - отвечает тот, - ведь я тоже не смог получить их первые 100 раз, когда проводил эксперимент".


А для того, что эксперименты у нас в Тинькофф были защищены от такого мы и делаем внутри компании a/b платформу, про которую я уже рассказывал при публикации вакансии staff инженера в эту платформу. Также есть ряд книг, что полезны тем, кому нравится статистика и эксперименты и про которые я уже рассказывал раньше.
- Как лгать при помощи статистики (How to Lie with Statistics) - на пальцах объясняется как врут с помощью статистики, а отсюда становится ясна мотивация создания системы подведения итогов экспериментов
- Understanding Statistics and Experimental Design. How to Not Lie With Statistics (Статистика и планирование эксперимента для непосвященных) - в этой книге рассказывается про дизайн экспериментов и математику, что стоит за ними
- Доверительное a/b тестирование (Trustworthy Online Controlled Experiments) - а эта книга позволяет еще и понять как сделать платформу для проведения экспериментов на уровне всей компании

#Math #PopularScience #SelfDevelopment #Humor #Statistics
👍83😁2👎1
Вот так whitepaper про лосося и МРТ видится искусственному интеллекту:)
😁16🦄3🔥2
Как и зачем измерять инженерную продуктивность в крупной компании (Рубрика #Management)

Появилась запись моего выступления на MTS True Tech Day, где я рассказывал про инженерную продуктивность. Эта тема является важно для больших компаний, так как достаточно сложно понять насколько эффективно работает организация. Есть общие показатели на всю компанию, но они
— Показывают общую ситуацию в компании и сложно понять вклад отдельных частей организации
— Отображают уже достигнутые результаты причем с сильным лагом — это примерно соответствует тому, чтобы при управлении машиной смотреть не в лобовое стекло, а в зеркало заднего вида
В крупной технологической компании (а в Тинькофф порядка 10к инженеров) большой вклад в эффективность компании вносит эффективность работы инженеров, поэтому мы уделяем этому большое внимание.

Само выступление имело следующий план
- Затравка про важность этого вопроса (я ее уже тут рассказал ввыше)
- Как я предлагаю сузить границы рассмотрения только продуктовыми компаниями и частью delivery без discovery
- Какие подходы были в академической среде: DORA и Accelerate, SPACE, DevEx - тезисы со ссылками на материалы доступны здесь
- Как это делают в Bigtech, например, в Google используют подход QUANTS - тезисы доступны здесь
- Что есть на рынке в виде коммерческих платформ - тезисы и ссылки здесь
- Как это делаем мы в Тинькофф - тут я расскажу про наш инструмент T-Meter
- Ну и какие выводы из этого всего следуют

Расшифровка есть в статье в моем блоге, а также в виде pdf в этом канале.

P.S.
Так как мой доклад - это не питчинг раунда финансирования для стартапа, то я решил исключить часть про влияние AI на developer productivity, что тянет на отдельный доклад (который недавно как раз рассказывал VP of Product из GitHub)

#Processes #Management #Performance #Engineering #Software #SoftwareDevelopment #Leadership
👍15🔥124
Выступление про архитектуру и проектирование на фестивале Т-Двор в Питере (Рубрика #Architecture)

Через неделю я еду в Питер, чтобы выступить на нашем фестивале Т-Двор, который будет с 6 по 9 июня. Последний день будет посвящен технологиям и профессиям будущего и именно там я расскажу кратко про то, как мы проектируем свои решения, которые должны работать надежно и масштабироваться под растущую нагрузку из-за увеличения количества клиентов (у нас их уже 42 млн), количества продуктов (их сложно посчитать), а также усложнение нашей экосистемы. Я расскажу про
- Использование RFC/ADR для описания крупных изменений и их ревью
- Фокус на использовании платформ и as a service решений внутри
- Подходы к architecture as a code, которые пока больше похожи на architecthure documentation as code, но на развитие которых у нас большие планы
- Расскажу про RnD подходы к архитектуре, которые пока у меня в голове или в лучшем случае в бэклоге, но по которым мы планируем сделать большой рывок в будущем

В общем, регистрируйтесь бесплатно и выбирайте 9 июня (там можно выбрать билет на один из четырех дней) и приходите на мое выступление:)

#SoftwareArchitecture #Architecture #Software #SoftwareDevelopment #SystemDesign #DistributedSystems #Management #Leadership
10🔥6👍3
ЦЕХ 4 - Урок #8 "MS Word для работы с большими и сложными текстами. Эксперт — Юлия Потемкина" (Рубрика #Writing)

Перегруз на работе привел к тому, что я чуток выпал из курса по написанию книги, но теперь решил нагонять его. Начал с восьмого урока от Юлии про MS Word и его возможности. Чем-то этот комбайн (MS Word) меня пугает (возможно кучей опций по настройке), поэтому я сам обычно использую Google Docs в онлайн варианте. Но урок про Word было интересно. Кстати, предыдущие посты здесь: 1, 2, 3, 4, 5, 6 и 7. Основные мысли, что я вынес из урока такие:

- Word отлично подходит для работы с большими и сложными текстами
- Word напоминает сложную IDE (аля IntelliJ IDEA от JetBrains) для опытного разработчика, но только для опытного писателя/редактора
- Word можно подстроить под себя так, чтобы работать в нем было естественно. Настройки могут отличаться в зависимости от целевого режима - написание текста vs его редактирование
- Бэкапы наше все - Word делает автосейвы, но хорошо бы и самому их делать (для защиты от шифровальщика багов)
- Важно правильно использовать стили - это важно не только для визуала, но и для дальнейшего редактирования текста
- Важно не заморачиваться сильно с форматирование текста, линейными отступами, дефисами и так далее - все это при редактировании поедет
- Чем-то эта работа со стилями и in-place подкручиванием визуала напоминает веб с его CSS (cascading style sheets) и настройками отображения прямо в HTML
- Важно уметь пользоваться поиском и заменой по документу
- Есть специальные элементы в тексте, которые могут пригодиться: сноски, формулы, таблицы и иллюстрации. Если книгу предполагается отдавать в профессиональную печать, то эти элементы могут разъехатся, если сделаны в лоб
- Word позволяет выстроить процесс ревью, комментариев и предложений по редактированию прямо в документе. Это такой асинхронный коллаборативный формат работы. Чем-то напоминает Google Docs, но там это прямо в онлайне и при помощи CRDT (Conflict-free replicated data type):)
- Ну и напоследок стоит сказать, что в режиме написания книги нужно сделать так, чтобы интерфейс и шрифты поменьше отвлекали от самого письма, так что минимальный интерфейс и невычурные шрифты нам в помощь:)

#Writing #SelfDevelopment
👍8🔥41😁1
Рулетка кейсов: Примеры плохой архитектуры (Рубрика #Architecture)

Появилась запись дискуссии с последней подлодки, куда я пришел поговорить про плохую архитектуру с организаторами, а также Ильей Зоновым и Кириллом Ветчинкиным.
Дискуссия была насыщенной и мы обсудили вопросы
- Что такое архитектура? Когда ее можно считать плохой, а когда хорошей (тут ключом была готовность к изменениям)
- Что такое универсальная архитектура и бывает ли она (нет)?
- А есть ли что-то за hype терминами и подходами (CQRS, GraphQL, микросервисы)?
- Как работать с базой данных и нужен ли ORM или нам поможет паттерн repository?
- Насколько реально мигрировать с одной базы на другую?
- Нужны ли стандарты, а также когда они мешают?
- Как появляется open source в компаниях и что иногда создание собственных инструментов может быть выгоднее, чем использование готовых решений.

Все обсуждение было сдобрено хорошей порцией баек и примеров, которые позволяли обсуждению не скатиться в абстракции, а оставаться на земле:)

P.S.
Спасибо организаторам, что подготовили ссылки на те ресурсы, что мы упоминали

1. Антипатерн «Golden Hammer»
2. Книга В. Хононов «Изучаем DDD. Предметно-ориентированное проектирование» и наш разбор ее в книжном кубе
3. Мой пост про «GraphQL: The Documentary»
4. Мой пост про «GraphQL. Язык запросов для современных веб-приложений»
5. Мой пост про «Adaptive Architectures • Marty Pitt • GOTO 2023»
6. Документация MongoDB. Query MongoDB — Web SDK
7. Олдовая статья «Клиент-сервер 2001»
8. Статья «Diplodoc — открытый набор инструментов для создания документации»
9. Мой пост про . Про документальный фильм про Kubernetes
10. Статья «How Discord Migrated Trillions of Messages to ScyllaDB»
11. Статья «Scaling up the Prime Video audio/video monitoring service and reducing costs by 90%» и мой разбор

#SoftwareArchitecture #Architecture #Software #SoftwareDevelopment #SystemDesign #DistributedSystems #Management #Leadership
🔥18👍84
Корпоративный мессенджер Time

Мы в компании достаточно давно съехали на свой корпоративный мессенджер Time. Это случилось в тот момент, когда Slack отказался работать с русскими компаниями. За эти пару лет само решение прошло испытание огнем, водой и медными трубами и показало то, что этот мессенджер можно использовать для общения в компании с десятками тысяч сотрудников. Также поверх него можно строить бизнес-процессы и автоматизации (аля chat-ops). Какое-то время назад мы начали продавать это решение как коробочный продукт для заказчиков и на него есть устойчивый спрос. Если перед вами стоит вопрос, а какой мессенджер использовать, то вы можете почитать про наш Time и заказать себе демо.

Ну и немного чиселок для гиков о том, какие показатели это решение показывает на одной из инсталляций:)
- 36 тысяч онлайн-подключений в пике
- 2 млн сообщений в день
- 45 тысяч пользователей
- 3,7 млн диалогов инициировано
- 120 тысяч каналов создано
- 99,99% доступность

#Software
🔥32🫡10👍85
Темные данные (Dark Data. Why What We Don’t Know Is Even More Important Than What We Do) (Рубрика #Management) (Part I)

Недавно я прочитал эту книгу Дэвида Хэнда, члена Британской академии, президента Королевского статистического общества. Меня заинтересовал подзаголовок книги на русском "практическое руководство по принятию правильных решений в мире недостающих данных". В итоге, практического руководства я не увидел, но встретил много реальных историй фейлов при работе с данными. Интересно, что больше половины примеров я уже читал в других книгах, плюс большую часть перечисленных проблем встречал на практике. Поэтому книга, как по мне, не содержит какой-то вау информации, но определенно полезна для думающих людей, что планируют принимать решения на основе данных. Суть в том, что обычно решения принимаются на основе данных, что у нас есть. Но часто для принятия решения не менее важны те данные, которых у нас нет. Автор называет такие данные темными и приводит их классификацию, как обычно неполную, но кажется полезную.

В последней части книги автор дает советы о том, как извлекать из темных данных пользу через
- Рандомизированные контролируемые исследования (привет a/b тесты)
- Симуляции (на эту тему я как-то читал книгу "Вероятностное программирование на практике")
- Репликацию данных (тут автор рассказывает про бутстреппинг)
- Баейсовский подход с априорным распределение (тут можно вспомнить про многорукие бандиты)
- Конфиденцильность данных и сбор их без раскрытия чувствительной информации

Ну и в самом конце автор вспоминает анекдот про поиск под фонарем, где светлее
Пьяный мужик что-то ищет под фонарем. К нему подходит милиционер:
— Вы что вы тут делаете?
— Ключи от квартиры ищу
— А где потерял?
— Да вон там, в парке.
— А зачем здесь ищешь?
— А здесь светлее.

И желает читателям найти свои способы расширить маленькое пятно света и осветить окрестности своих данных:)

P.S.
В следующем посте я расскажу подробнее про виды темных данных

#Management #Data #Math #Statistics
👍146🔥5
ЦЕХ 4 - Урок #9 "Рассказываем истории: сторителлинг в книге. Эксперт — Лариса Парфентьева" (Рубрика #Writing)

Продолжаю обучение написанию книг, догоняя программу, что ушла на месяц вперед:) Этот урок был посвящен сторителлингу, который я активно изучал самостоятельно, но интересно было послушать урок Ларисы, которая делилась своим опытом. Предыдущие посты доступны здесь: 1, 2, 3, 4, 5, 6, 7 и 8.
Если возвращаться к самому уроку, то вот основные мысли, что я вынес из него:
- Важно понимать цель и мотивацию написания книги - тут может быть и развитие личного бренда и терапия:)
- Какая цель бы не стояла перед автором, сторителлинг отличный инструмент для привлечения внимания и удержания аудитории
- Дальше автор вспоминает книгу "Сделано, чтобы прилипать" ("Made to Stick") и рассказывает про фреймворк SUCCESs из него. Суть в том, что идеи прилипают если они соотетствуют шести категориям: простота (simplicity, неожиданность (unexpected), конкретность (concrete), достоверность (credentialed), эмоциональность (emotional), истории (story). Кстати, я про эту книгу уже рассказывал раньше
- Потом речь идет про структуру истории, где в простейшем случае у нас есть начало, завязка, конфликт, усиление конфликта, кульминация, развязка и финал. Причем важно соблюдать некоторую последовательность, когда напряжение нарастает, конфликт усиливается и история достигает кульминации.
- Для создания интересных историй можно использовать архетипические сюжеты и здесь автор вспоминает "Морфологию волшебной сказки" Владимира Проппа, про которую я рассказывал раньше
- Также можно использовать правило зебры и контраста - для создания эмоциональной вовлеченности у читателя стоит чередовать периоды напряжения и расслабления в истории
- Для создания персонажей надо использовать яркие и запоминающие детали - это позволяет добавить образам персонажей объема. Для оживления персонажей можно использовать те детали и привычки, что вы подмечали у своих знакомых
- Концовку истории можно организовать по разному - оставить читателей на пике или закончить все выводом (хорошо если не нудным). Кстати не все истории должны иметь happy end - тут можно почитать книгу "Я — легенда" ("I Am Legend"), про которую я рассказывал раньше

P.S.
Про сторителлинг и рассказывание историй я уже рассказывал раньше в этом канале:
- про мастер класс по сторителлингу
- про то, как сторителлинг сделал нас людьми
- про тысячеликого героя - классическая книга про путь героя
- про работу сценаристов - классический подход для написания сценариев
- про создание подкастов и рассказывание историй
- про фрирайтинг для решения задач
- про черную риторику и власть слова
- про искусство словесной атаки
- про публичные выступления с прошлого MBA с Ниной Зверевой
- пример крутого выступления с рассказом истории - последняя лекция Randy Pausch
- про откровения оратора про выступления и истории
- про построение историй и выступления в лекции от Yandex
- про риторику и поэтику от Аристотеля
- про нейробиологию чтения

#SelfDevelopment #PublicSpeaking #Storytelling #Writing
👍73🔥3👏1
The Most Dangerous Phrase • Daniel Terhorst-North • GOTO 2023 (Рубрика #Management)

Интересное выступление Daniel Terhorst-North на тему фразы "We've always done it way" ("Мы всегда делали это так"). Родственником этой фразы является "Так исторически сложилось":) Опасность в том, что, однажды приняв решение и начав действовать определенным способом, дальше мы действуем так по накатанной. Возможно, уже поменялись условия, при которых принималось решение, но образ действия уже стал самоподдерживающейся привычкой. И это плохо, так как наши действия уже могут быть далеки от оптимума. В итоге, автор говорит про
- Наши привычки и смену парадигмы, которая бывает болезненной - на эту тему стоит почитать книгу Томаса Куна "Структура научных революций"
- Идеи устаревают, даже блестящие идеи, но некоторые делают это достойно и адаптируются под реальность, а другие как Скрам или SOLID становятся скорее вредными
- Автор показывает удачную эволюцию идей на примере книги "Цель" Элияху Голдратта, разбирая ее продолжение через пару десятков лет с названием "Beyond the Goal". В этой книге есть интересный алгоритм размышлений о пользе технологий:
1) What is the power of technology?
2) Which limitation does the tehcnology diminish?
3) Which rules enabled us to manage the limitation?
4) Which new rules we need?
В этой книге хорошо описано, что важно измененять правил для использования технологий и их ограничений.
- Дальше автор начинает препарирует SOLID, показывая чем были обусловлены single responsibility principle и open-closed principle примерно 30 лет назад. А дальше становится видно, что в том контексте принятия решений предложенные подходы работали хорошо. Но с тех пор много воды утекло, поменялось окружение и SOLID в том виде, как его рассказывает uncle Bob, стал нерелевантным. Рекомендую посмотреть аргументацию автора выступления - он отличный рассказчик и умеет погружаться в историю возникновения вопроса и вспоминает даже статью Дейкстры "On the role of scientific thought". А потом он примерно также разбирает open closed principle:)
- Потом наступает время Scrum, историю которого автор начинает с Мартины Девос, которая в 1990х создала процесс с шестинедельными спринтами и упрощенными планами на спринт (вместо бесконечного Ганта). Это позволило командам работать более эффективно и быстро реагировать на изменения. Тогда это был прорыв - делать релизы раз в шесть недель на фоне конкурентов, что релизились раз в год или реже. Но с тех пор индустрия научилась релизить изменения в масштабе минут или часов - для этого автор вспоминает про современные подходы к CI/CD. Правда, Скрам как и прежде двигает все в сторону недельных релизов, что сейчас кажется шагом в прошлое:) Но создатели Скрам продают его как чудодейственное средство как ни в чем не бывало - ведь это их способ заработка.

Ну и в финале автор призывает к самостоятельному мышлению и оценке своих инструментов и практик, а также к взгляду на вещи свежим взглядом.

P.S.
А для того, что последовать совету автора, я рекомендую почитать книги по критическому мышлению, про которые я уже как-то рассказывал в отдельном посте.

#Processes #Management #Agile #Leadership #Software #Project #CriticalThinking
12🔥7👍5
Leetcode - прогресс за пятый месяц

Вот уже 5 месяцев я играюсь с leetcode, вспоминая как писать код:) И этот месяц пока вышел самым слабым - часть его я проболел и поэтому подзапустил свой ежедневный ритуал с решением задачек. Плюс курс "Data Structures and Algorithms" почти закончился (я прошел все темы) и там остались только те задачки, что я откладывал на потом, но каждая из них требует больше времени, чем стандартная. Так у меня и получилось в мае, что я в среднем решал 1 задачку в день:) А если говорить в общем, то я вроде как вспомнил базовый синтаксис python и простой код могу писать без IDE и автоподсказок:) В июне попробую пройти курс "System Design for Interviews and Beyond" - уж больно интересно посмотреть на его содержание.

P.S.
Предыдущие посты на эту тему доступны здесь: 1, 2, 3, 4 и 5

#SelfDevelopment #Algorithm #Software #SoftwareDevelopment
23👍17🔥11
Тинькофф теперь Т‑Банк (Рубрика #News)

Сегодня мы объявили о том, что Тинькофф стал Т-Банком. Об этом рассказывает Станислав Близнюк в своем интервью Ведомостям. Если кратко, то для клиентов ничего особо не меняется, кроме названия продуктов.

#News
🎉24👎15🗿10😭7🤡63👍1🥴1💅1
Cassandra: The Definitive Guide, 3rd edition (Рубрика #Architecture)

Уже больше года назад я прочитал эту книгу про популярную NoSQL базу данных и запланировал написать краткое саммари. Но когда я начал писать саммари, то понял, что сначала нужно сделать отдельные посты
- Про CAP теорему
- Про формализацию CAP теоремы и ее доказательство
- Про теорему PACELC (расширение CAP)
- Про модели консистентности от Jepsen

В этих постах изложена вся информация, которая нужна для того, чтобы переходить к изучению книги, что состоит из следующих частей

1. Beyond Relational Databases - в этой главе приводится кратка инфа, из тех постов, что я привел выше
2. Introducing Cassandra - здесь автор приводит ключевые слова, которые характеризуют Cassandra в формате elevator pitch и продает читателям ее крутость: distributed and decentralized, elastic scalability, high availability and fault tolerance, tuneable consistency, Brewer’s CAP Theorem, row-oriented, high performance:)
3. Installing Cassandra - базовое описание установки кластера, создание keyscpace (аналог database в RDBMS) и tables. Этой главы хватит для того, чтобы поднять кластер для экспериментов, но для администрирования стоит почитать доки или книгу для администраторов Cassandra
4. The Cassandra Query Language - эту главу автор начинает с того, что вспоминает модель данных в RDBMS. А дальше он проводит параллели с моделью данных в Cassandra. Все начинается с пар мапы key-value, что вместе с primary key является row в Cassandra. Дальше набор row собирается в партицию. Внутри строки есть primary key, который в Cassandra является составным, который состоит из обязательно partition key и опционального набора clustering columns. Partition key определяет как строки распределены по нодам кластера, а набор clustering columns определеляет порядок размещения строк уже внутри ноды. Еще есть static column для оптимизаций - это колонка, которая не входит в primary key, но все строки внутри partition шарят общее значение. Партиции собираются в таблички, таблички собираются в keyspace, а keyspace размещаются на cluster. Дальше автор рассказывает про типы данных в Cassandra, которых достаточно много и в которых есть интересные типы вида counter, set, list, map, tuples.
5. Data Modeling - самая интересная глава, в которой авторы рассказывают про моделирование внутри Cassandra и как оно отличается от моделирования внутри RDBMS. Если говорить про RDBMS, то там мы идем от концептуальной модели предметной области. Мы нормализуем данные и раскладываем их удобно с точки зрения консистентного хранения данных. Дальше мы можем относительно просто писать нужные нам деларативные запросы на получение данных, где мы спокойно используем joins, соединяя таблицы как нам требуется. И если нам надо писать другие запросы на выбор данных, то это с высокой вероятностью можно сделать достаточно просто.

В Cassandra мы моделируем данные совсем по другому. Авторы книги показывают это на примере моделирования сервиса для букинга отелей. В Cassandra надо идти не от концептуальной модели предметной области, а от модели запросов (query model) и авторы дают такой совет
Think of the most common query paths your application will use, and then create the tables that you need to support them.

Целью является создание такой модели данных в Cassandra, который минимизирует количество партиций, которые нам надо потрогать, чтобы ответить на запрос. Суть в том, что партиция является единицей хранения и если мы попадаем в одну партицию, то обычно получаем оптимальную производительность. Отдельно стоит отметить, что сортировка данных в Cassandra тоже является дизайн решением, так как данные на ноде внутри партиции раскладываются в том порядке, что определен набором clustering columns.
Кстати, для моделирования данных в Cassandra используются Chebotko diagrams, на которых моделирование как раз идет от query, которые поддерживаются табличками, а дальше для таблицы указываю входящие колонки и все виды ключей.

Обзор оставшейся части книги в следующих постах: 2 и 3.

#Software #Architecture #DistributedSystems #SystemDesign
👍155🔥1