Курс лекций по базам данных

для Computer Science Center

10.09.2012 - 03.12.2012

направление Software Engineering

Домашние задания

Требования:

  • первая и пятая части - обязательно
  • одна (или несколько) на выбор: вторая, третья или четвертая части
  • язык реализации - Java или Python или другой скриптовой, кроссплатформенный (понятный лектору)

Первая часть

  • телефонная книга - фио + телефон - на arrayList
  • CRUD операции
  • доступ к через какой-либо api ( console / http / socket - на выбор )
  • возможность сохранить в файл, дабы можно было перезапустить сервер ( flush / commit / snapshot )

Вторая часть

  • подключить механизм партиционирования - шардирования
  • журнал операций - для восстановления, если не сделали flush перед выключением
  • master - slave репликация ( через сделанный ранее api - передаем журнал на slave и применяем его там )

Третья часть

  • несколько коллекций в базе
  • составной ключ ( имя коллекции + id в пределах коллекции )
  • CRUD операции с поддержкой нескольких коллекций ( например get student:7 )
  • операции создания и удаления коллекций

Четвертая часть

  • распределенная база данных из К нод
  • каждая запись в кластере на N нодах, где N < K (строго меньше)
  • сохранение делается на W нод
  • при чтении - читаем с R нод из N
  • настраиваемые параметры N, R, W
  • выключаем M нод из K (M < N) и демонстрируем что данные живы / доступны по ключу

Пятая часть (пояснительная записка)

  • Техническое описание системы:
    • как собрать систему
    • как запустить (на кластере)
    • как использовать - список команд и примеры
    • известные ограничения системы (по памяти, выживаемость етс)
  • Предложение по использованию системы: (реальное или выдуманное)
    • какие проблемы может решить
    • как может их решить
    • какие ожидаемые результаты
  • Объем записки:
    • Минимальный - 1 лист А4 шрифтом 10 pt
    • Максимальный - 5 листов А4 шрифтом 12 pt