Главная страница проекта ИНФОРМАТИКА-21

Наука Школе

Все заметки

Тенденции в мире СУБД
Из лекций «Базы данных» Ильи Тетерина (Яндекс)

Подготовка: Ермаков И. Е. (http://ermakov.net.ru/) для проекта «Информатика-21»

С тенденциями в мире СУБД можно познакомиться в курсе лекций сотрудника Яндекса Ильи Тетерина "Базы данных" [http://www.lektorium.tv/course/?id=22828], который посвящён современным нереляционным высокопроизводительным СУБД и их архитектуре, и содержит учебные примеры по самостоятельной разработке СУБД.

Ниже собраны некоторые мысли лектора, резонирующие с основными идеями философии Оберона.

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

Однако для реализации такого подхода от программиста требуется уверенное знание основ алгоритмики и архитектуры программных систем.
Недостаток таких знаний — беда многих «народных ополченцев» от
IT.
Системное решение этой проблемы недообразованности через построение эффективной системы базового образования в
computer science — одна из целей «Информатики-21».    --прим. info21

Лектор на материале СУБД пропагандирует именно такой подход.

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


Из лекции 1:

[На сегодняшний день в системном программировании актуальны] только списки с произвольным доступом и списки с последовательным доступом.

Последовательный поиск оптимален для нескольких Мб данных при современных жёстких дисках. Блок всасывается в память, после чего осуществляется последовательный просмотр в ОЗУ.

Десятилетия всецело господствовал SQL и нормализация.
Все успешные проекты сегодня вдумчиво от этого отказываются.

Нормализация возникла из-за экономии места. Из-за боязни расхождения копий данных в разных местах. Пришли компании, которые сказали "а нам всё равно, мы раскопируем". Целостность данных сейчас потеряла свой приоритет. Считалось, что БД полностью контролируемая среда. Это реалии нашей жизни вы не можете "остановить мир".

Кстати, о подходе "stop-the-world". Например, база Redis, имеющая безумную производительность, внутри однопоточная. Каждый запрос полностью останавливает базу. Если хорошо организовать все данные в памяти... Сеть не может загрузить Redis настолько, чтобы это стало bottle-neck...

Я не вижу баз, написанных на Плюсах. Большое количество баз на Java. Это действительно надёжно и безопасно, действительно просто и понятно. Оно ограничивает вашу фантазию в некоторых вопросах. На Java пишут безопасный, предсказуемый код.

Быстродействие? Вы не пытаетесь мощным куском кода "познать Вселенную". Вы её пилите на кусочки и пишете их маленькие, тупые, неломающиеся куски.

Для чего вам нужны навороченные алгоритмы? Какая часть базы потребует их?

 

Из лекции 2:

По итогам разбора домашних заданий: вы потратили 3-4 часа и получили систему, сравнимую с промышленными стандартами [имеется в виду мир NoSQL].

Пока мы здесь с вами сидим и обсуждаем, кто-то там придумывает новое решение. Сложность этих решений не очень велика. Таким человеком можете быть вы. Вы можете написать базу вечером. Если вы потратите два вечера, она даже будет работать. Живая работающая база на Яве 300 строк. Чем меньше строк кода тем меньше ошибок.

Вопрос из аудитории: "Почему не использовать дерево?" А сколько вы будете искать баги? Отсортированное хранение и маленькая кучка перебираемых элементов.

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

[К вопросу о том, что как самописные решения могут быть выгоднее по времени:] Если бы я дал задание [не написать базу самостоятельно], а сделать домашку на Redis, то я бы не получил ни одной домашки. Её документация - 124 команды.

 

Главная страница проекта ИНФОРМАТИКА-21

Наука Школе