О чём курс
Cassandra – распределенная отказоустойчивая масштабируемая нереляционная система управления базами данных, с равноправными узлами, очень быстрая на запись и просто быстрая на чтение, автоматически восстанавливающая данные при сбоях. Для доступа к данным имеется SQL-подобный язык.
Курс посвящен изучению принципов, на которых она построена, методов создания баз данных для нее, написанию запросов на языке CQL и доступа к данным из прикладных программ посредством API и с использованием высокоуровневых библиотек. Рассматриваются процессы чтения и записи данных, управления кластером, определения потребности в ресурсах, методы настройки производительности, мониторинга.
Цели
- Понимать ключевые концепции и архитектуру Cassandra;
- Проектировать модели данных для Cassandra;
- Разрабатывать запросы на языке CQL;
- Работать с данными Cassandra из программ на Java;
- Иметь представления о высокоуровневых библиотеках/фреймворках для доступа к данным в Cassandra.
Целевая аудитория
Разработчики, архитекторы, разработчики баз данных, администраторы баз данных.
Предварительная подготовка
- Базовые навыки программирования на Java;
-
- Умение работать в командной оболочке Unix/Linux (bash);
-
- Опыт работы с базами данных желателен, но не обязателен.
Темы курса
01
1. Основные концепции Cassandra (теория - 3 ч., практика - 1 ч.)
- Области применения, типичные use case и анти-use case;
- Архитектура, репликация, управление согласованностью данных;
- Процесс записи данных, отложенная запись;
- Процесс чтения данных, восстановление данных;
- Объединение хранимых данных и очистка удаленных данных;
- Практика 1. Установка и развертывание кластера (Docker Compose);
- Практика 2. Использование Nodetool для исследования состояния кластера.
02
2. Язык запросов CQL (теория - 2 ч., практика - 2 ч.)
- Модель данных CQL;
- Первичные ключи и их структура;
- CQL: язык запросов Cassandra;
- CQL: Типы данных, коллекции, вложенные данные, устаревание данных;
- Запросы на CQL;
- Практика 3. Создание таблиц с первичными ключами разной сложности и исследование поведения запросов.
03
3. Проектирование баз данных для Cassandra (теория - 2 ч., практика - 2 ч.)
- Диаграммы Чеботко для логических и физических моделей данных;
- Лучшие практики моделирования данных для Cassandra;
- Проектирование таблиц и выбор ключей;
- Моделирование данных от запросов;
- Вторичные индексы;
- Материализованные представления;
- Практика 4. Проектирование логической и физической модели данных.
04
4. Доступ из приложений (теория - 1 ч., практика - 1 ч.)
- Архитектура Java-драйвера;
- Основы Java API;
- ORM;
- Практика 5. Создание приложения, использующего Java драйвер для доступа к Cassandra.
05
5. Развертывание и мониторинг кластера (теория - 2 ч., практика - 4 ч.)
- Зависимости: версии Java/JDK;
- Развертывание кластера on-premise, в облаке, в Kubernetes;
- Определение потребности в ресурсах: память, CPU, диск;
- Мониторинг: сбор и агрегация метрик;
- Принципы настройки производительности;
- Практика 6. Сбор метрик с кластера;
- Практика 7. Использование Nodetool для наблюдения за процессами в кластере.
06
6. Администрирование кластера (теория - 2 ч., практика 2 ч.)
- Подключение и отключение узлов;
- Обновлений версий;
- Системное пространство ключей;
- Управление хранением данных;
- Управление сжатием (compaction) данных;
- Резервное копирование и мгновенные снимки;
- Исправление поврежденных файлов данных;
- Практика 8. Исследование подключения/отключения узлов и других служебных операций.
Ведущий курса
Брейман Александр
Эксперт в области разработки и архитектуры ПО
Middle
О проектах
Александр занимается разработкой учебных программ, чтением лекций, проведением семинаров, практических и лабораторных работ. Под его руководством уже не один десяток специалистов успешно защитили выпускные квалификационные работы бакалавра и магистерские диссертации.
Среди его кейсов работа в ЗАО «ТИТАН МЕТА», Московском государственном университете приборостроения и информатики, Национальном исследовательском университете «Высшая школа экономики» и Luxoft Training.
Курсы и сертификаты
Александр является членом организаций:
- IEEE, IEEE Computer Society (Institute of Electrical and Electronics Engineers / Институт инженеров электротехники и электроники).
- ACM, ACM SIGMOD (Association for Computing Machinery / Ассоциация вычислительной техники).