Реляционные
          СУБД и их
          нереляционные
          реализации
          Олег Царёв



10.4.10
NoSQL это...
●   Эффективность
●   Простота
●   Масштабируемость
●   Популярность

    10.4.10
SQL
●   Можно выполнять запросы
●   Эффективные реализации
●   Типизированные данные
●   Наглядный и лаконичный синтаксис

10.4.10
Строчная архитектура
Партиция #1         Партиция #2




10.4.10
Колоночная архитектура
      Партиция #1            Партиция #2
Колонка #1 Колонка #2   Колонка #1 Колонка #2




10.4.10
Плюсы row-based
●   Эффективная выборка полных кортежей
●   Эффективное обновление данных
●   Предсказуемое время выполнения
●   Хорошее кеширование данных

10.4.10
Плюсы column-based
●   Эффективная выборка частичных кортежей
●   Вертикальное шардирование данных
●   Эффективное расширение кортежей
●   Большое число оптимизаций

10.4.10
Реализации
    Строчные              Колоночные
●   PostgreSQL        ●   SyBase IQ
●   MySQL             ●   Monetdb
●   MS SQL
●   Oracle
10.4.10
Нереляционные аспекты
●
    Таблицы (table scan)
●   Расширения (extension)
●   Индексы (index scan / index join)
●   Хеш-контейнеры (hash index / hash join)

10.4.10
Таблицы
●   Последовательная выборка из таблиц
●   Выбор из таблицы по региону
●   Кластерный индекс



10.4.10
Расширение (extension)
●   «Протаскиваем» Row ID вместо данных
●   По Row ID расширяем кортеж
●   Расширяем лишь когда это необходимо
●   Расширять можно несколько раз

10.4.10
Индексы
●   B-Tree — большие объемы данных
●   R-Tree — геоинформация
●   GIN — полнотекстовой поиск
●   GiST — поиск по произвольному критерию
●   Hash — linear hashing
10.4.10
Join
●   Merge
●   Merge-index
●   Index
●   Hash
●   Nested loop

10.4.10
Декомпозиция запросов
●   Сложные запросы разбиваются на простые
●   Простые запросы требуют один контейнер
●   Простых запросов конечное число
●   Оптимизатор это делает автоматически

    10.4.10
Параллельное выполнение
●   CPU, RAM, IO — ключевая тройка
●   Ресурсы независимы
●   Управление ресурсами — задача оптимизатора
●   Простые запросы выполняются без блокировок



10.4.10
Общие данные
●   Большинство запросов имеют одинаковый план
●   Контейнеры используются совместно
●   Кеш запросов
●   Кеш данных
●   Статистика
●   Гистограммы
10.4.10
Переупорядочевание
●   В запросах есть зависимость по данным
●   Порядок выполнения выбирает СУБД
●   Ресурсы не должны простаивать
●   Минимальное время отклика
●   Минимальное время выполнения

10.4.10
Выводы
●   В SQL базах доступны полноценные запросы
●   Простые запросы работают сравнимое время
●   Сложные запросы бьются на простые
●   СУБД эффективно управляет ресурсами
●   Запросы работают параллельно
10.4.10
Вопросы?


          zabivator@gmail.com



10.4.10

Rit 2010 реляционные олег царев субд и их нереляционные реализации

  • 1.
    Реляционные СУБД и их нереляционные реализации Олег Царёв 10.4.10
  • 2.
    NoSQL это... ● Эффективность ● Простота ● Масштабируемость ● Популярность 10.4.10
  • 3.
    SQL ● Можно выполнять запросы ● Эффективные реализации ● Типизированные данные ● Наглядный и лаконичный синтаксис 10.4.10
  • 4.
  • 5.
    Колоночная архитектура Партиция #1 Партиция #2 Колонка #1 Колонка #2 Колонка #1 Колонка #2 10.4.10
  • 6.
    Плюсы row-based ● Эффективная выборка полных кортежей ● Эффективное обновление данных ● Предсказуемое время выполнения ● Хорошее кеширование данных 10.4.10
  • 7.
    Плюсы column-based ● Эффективная выборка частичных кортежей ● Вертикальное шардирование данных ● Эффективное расширение кортежей ● Большое число оптимизаций 10.4.10
  • 8.
    Реализации Строчные Колоночные ● PostgreSQL ● SyBase IQ ● MySQL ● Monetdb ● MS SQL ● Oracle 10.4.10
  • 9.
    Нереляционные аспекты ● Таблицы (table scan) ● Расширения (extension) ● Индексы (index scan / index join) ● Хеш-контейнеры (hash index / hash join) 10.4.10
  • 10.
    Таблицы ● Последовательная выборка из таблиц ● Выбор из таблицы по региону ● Кластерный индекс 10.4.10
  • 11.
    Расширение (extension) ● «Протаскиваем» Row ID вместо данных ● По Row ID расширяем кортеж ● Расширяем лишь когда это необходимо ● Расширять можно несколько раз 10.4.10
  • 12.
    Индексы ● B-Tree — большие объемы данных ● R-Tree — геоинформация ● GIN — полнотекстовой поиск ● GiST — поиск по произвольному критерию ● Hash — linear hashing 10.4.10
  • 13.
    Join ● Merge ● Merge-index ● Index ● Hash ● Nested loop 10.4.10
  • 14.
    Декомпозиция запросов ● Сложные запросы разбиваются на простые ● Простые запросы требуют один контейнер ● Простых запросов конечное число ● Оптимизатор это делает автоматически 10.4.10
  • 15.
    Параллельное выполнение ● CPU, RAM, IO — ключевая тройка ● Ресурсы независимы ● Управление ресурсами — задача оптимизатора ● Простые запросы выполняются без блокировок 10.4.10
  • 16.
    Общие данные ● Большинство запросов имеют одинаковый план ● Контейнеры используются совместно ● Кеш запросов ● Кеш данных ● Статистика ● Гистограммы 10.4.10
  • 17.
    Переупорядочевание ● В запросах есть зависимость по данным ● Порядок выполнения выбирает СУБД ● Ресурсы не должны простаивать ● Минимальное время отклика ● Минимальное время выполнения 10.4.10
  • 18.
    Выводы ● В SQL базах доступны полноценные запросы ● Простые запросы работают сравнимое время ● Сложные запросы бьются на простые ● СУБД эффективно управляет ресурсами ● Запросы работают параллельно 10.4.10
  • 19.
    Вопросы? zabivator@gmail.com 10.4.10