Распределённая обработка информации и NoSQL базы данных

Курс повышения квалификации для инженеров-программистов


Project maintained by dluciv Hosted on GitHub Pages — Theme by mattgraham

Распределённая обработка информации и NoSQL базы данных

Лицензия на материалы пока тоже непонятно, какая, но будем считать, что уже есть.

Аннотация

Этот курс составлен по мотивам программы одноименного спецсеминара для 4 курса (бакалавриат) студентов отделения информатики Матмеха СПбГУ.

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

Курс подразумевает занятия, которые объединяют в себе лекции, семинары и совместные лабораторные работы. От участников ожидается активная обратная связь. Мы будем вместе пробовать рассматривать распределённые вычислительные системы и СУБД, обрабатывать данные, пробовать реализовывать свои вычислительные системы.

Расписание

Когда?

По вторникам с 17:30 до 19:00 (внимание, не с 17:10, а с 17:30). Пока так. Наверное и дальше тоже. Длительность курса — 8 пар.

Место встречи изменить можно

Встречаемся у 4337, фактически занятие проводим в помещении, которое способно будет нас вместить. В случае, если нас окажется более двухсот, идём в парк Сергиевка.

А если виртуально?

Общения много, но порой хочется ещё больше, и круглосуточно.

Сей чат как раз на такой случай. Чат запущен на основе системы Matrix. Вы можете зарегистрироваться на сервере создателей, а можете запустить свой — система децентрализованная, подобно Email или XMPP, и разные сервера крепко дружат друг с другом.

Программа

Отметим сразу, что в связи с организационной спецификой, некоторые слушатели по ряду тем могут быть более эрудированы и иметь больший практический опыт, нежели преподаватель. В этом случае очень приветствуется как активное участие (которое приветствуется всегда), так и выступление кого-либо из слушателей с докладом на выбранную тему. Программа может и, вероятно будет меняться по мере исполнения.

Доступны приветсвтенные слайды.

Проблематика

  1. Хочется много
    • Закон Мура — правда, мура́, и где всё-таки правда
    • Закон Амдала
    • Топология задачи и топология вычислителя (пример — станция управления лифтом)
  2. Реляционные БД и СУБД
    • Сложность
    • Масштабируемость и доступность
    • Вопросы программной инженерии — таблицы-объекты-таблицы
    • Вопросы допрограммной инженерии — вспомним табуляторы

Доступны слайды и видеозапись занятия 25.10.2016.

The NoSQL movement и основные свойства NoSQL БД

  1. The NoSQL Movement
    • История
    • Суть
  2. ACID vs BASE, О согласованности в конечном счёте
  3. Консенсус в распределённых вычислительных системах
  4. «Теорема» CAP
  5. «Теорема» PACELC

Доступны слайды и видеозапись занятия 01.11.2016.

Нереляционные СУБД

  1. Графовые
  2. Логические
  3. Ключ-значение
  4. Документо-ориентированные
  5. Колоночные

Доступны слайды и аудиозапись занятия 09.11.2016: можно прослушать и скачать.

Паттерны и технологии

Технологии

  1. ФС кластеров

Паттерны

  1. GRID
  2. Map-Reduce
  3. Pregel

Доступны слайды и видеозаписи занятий 15.11.2016 и 22.11.2016.

Использование NoSQL СУБД

Простой агрегирующий анализ обработанных данных с использованием MongoDB. Практическое занятие.

  1. Вспомогательные технологии
    • Неблокирующий ввод-вывод
    • Минимум функционального программирования; Continuation Passing Style
    • Минимум JavaScript и LiveScript
    • Функциональное программирование и телекоммуникации
  2. Получение и первичная обработка данных
  3. Импорт данных
  4. Анализ данных
    • Хранимый JavaScript в MongoDB
    • MapReduce
    • Результаты

Доступны слайды, видеозапись занятия 29.11.2016, а также исходный код примера MapReduce для MongoDB.

Распределённая обработка данных

Простая вычислительная задача «с нуля»

  1. Краткий экскурс в выбранную платформу, на выбор:
    • Akka (Scala)
    • Erlang (выбран)
    • Microsoft Orleans
  2. Самостоятельно реализуем GRID
    • Решение одной из предложенных задач методом грубой или не очень грубой силы

Доступны слайды и видеозапись занятия 06.12.2016, а также исходный код примера Bruteforce ZIP password для Erlang.

Инженерия ПО и процесса производства ПО

Дискуссия

А NoSQL ли?.. Может что-нибудь на основе PostgreSQL? =)

Доступны слайды и видеозапись занятия 13.12.2016.

Андеграунд

Бонус

  1. Добросовестность сервисов и лояльность пользователей; совесть — лучший котнролёр; что попало в интернет — остаётся там навсегда
  2. ZeroNet, FreeNet, IPFS
  3. «Правильные» мессенджеры — XMPP, Matrix, Tox…
  4. Blockchain и те, кто из него произошёл
  5. Изоляция: две сети в «ящиках»; deaddrops

Доступны слайды и видеозапись занятия 13.12.2016.

Доклад на семинаре кафедры системного программирования

Содержание курса и postmortem

Доступны слайды

Список литературы

… и не только литературы

  1. Christof Strauch NoSQL Databases
  2. Michael Stonebraker Errors in Database Systems, Eventual Consistency, and the CAP Theorem. BLOG@CACM, April 5, 2010. Перевод С.Д. Кузнецова, ИСП РАН
  3. Новиков Б.А., Домбровская Г.Р. Настройка приложений баз данных. БХВ-Петербург, 348 С., 2012. Открыто доступна развёрнутая аннотация
  4. Seth Gilbert, Nancy Lynch. Brewer’s Conjecture and the Feasibility of Consistent Available Partition-Tolerant Web Services. In ACM SIGACT News, 2002
  5. Daniel J. Abadi. Consistency Tradeoffs in Modern Distributed Database System Design, Yale University, 2012
  6. Ian Robinson, Jim Webber, Emil Eifrem. Graph Databases, O’Reilly Media, 2013
  7. Jeffrey Dean, Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters, OSDI, 2004
  8. Toby Segaran. Programming Collective Intelligence, O’Reilly Media, 2007
  9. Grzegorz Malewicz, Matthew H. Austern, Aart J.C Bik, James C. Dehnert, Ilan Horn, Naty Leiser, and Grzegorz Czajkowski. Pregel: A System for Large-Scale Graph Processing. In Proceedings of the 2010 ACM SIGMOD International Conference on Management of data (SIGMOD ‘10). ACM, New York, NY, USA, 135-146. DOI=http://dx.doi.org/10.1145/1807167.1807184
  10. Fred Hébert. Learn You Some Erlang for Great Good, 2013
  11. Суровский Евгений. Очень большой Postgres, 2015