Базы данных без сервера
Катаев Денис
Мы все используем базы данных
привыкли к серверам
они решают много проблем которые бывают если сервера нет
BDE, FoxPro, ...
Зачем нужны СУБД
Много
пользовательские
Конкурентность
Сеть
Отказоустойчивость
Кластера
СУБД это хоть и сервис
но данные хранит в сотне+ файлах
Поймешь как работает база из одного файла поймешь как работает СУБД
Вся база в одном файле
sqlite3
Вспомните любимую вашу фичу из sql и узнайте есть ли она в sqlite3
+ начальный слайд с sqlalchemy #1
Полноценная база данных
возможности
работа в памяти
Как она устроена
мастер страница, другие страницы
мэджик байт
типы данных
iot table?
Блокировки
rw locks
nfs?!!!!
wal режим
+2 файла
конкурентность
История с канатом
когда обрезать wal журнал
всё плохо
мой главный вопрос почему нельзя сделать вот так:
обрезать когда в wal новых страниц нет
zero latency
нет сети
нет конкурентности
нет вакума (внезапного)
нет шумных соседей
картинка про квадратики сравнение задержек в CS
Лучший юзкейс
- write once - read over 9000
- заменять файл к чертям
- переоткрывать раз в Н минут
- пример про склейку Олега и сотни файлов
- кеш в памяти
- тесты
- мобильные приложения
минусы: динамические типы (лишнее место)
Как чинить?
rocksdb
уже не один файл а КАТАЛОГ!
аля кассяндра
k/v + bytes
есть транзакции и они честные
protobuf/avro + прочий бинарный кал
One write many read
Решает проблему каната элегантно
как типичный программист: "всё говно давай по новой"
2 типа файлов
LSM tree
merge sort aka compaction
tombstones (instagram dislike primer)
Шибко быстрый
типа запись быстрее чем чтение?
есть блум фильтр
может оптимизирован под ссд
херава куча настроек (сложно настроить оптимально)
Column Family
structures merge
atomic ops
search values and key, iter by key
ttl, low priority write
Кластер?
kafka - wal журнал
Топология звезда может помочь!
fin
Базы данных без сервера
By Denis Kataev
Базы данных без сервера
- 893