Базы данных без сервера

Катаев Денис

Мы все используем базы данных

привыкли к серверам

они решают много проблем которые бывают если сервера нет

BDE, FoxPro, ...

Зачем нужны СУБД

Много

пользовательские

Конкурентность

Сеть

Отказоустойчивость

Кластера

СУБД это хоть и сервис

но данные хранит в сотне+ файлах

Поймешь как работает база из одного файла поймешь как работает СУБД

Вся база в одном файле

sqlite3

 

Вспомните любимую вашу фичу из sql и узнайте есть ли она в sqlite3

+ начальный слайд с sqlalchemy #1

Полноценная база данных

возможности

работа в памяти

Как она устроена

мастер страница, другие страницы

мэджик байт

типы данных

iot table?

Блокировки

rw locks

nfs?!!!!

wal режим

+2 файла

конкурентность

История с канатом

когда обрезать wal журнал

всё плохо

мой главный вопрос почему нельзя сделать вот так:

обрезать когда в wal новых страниц нет

zero latency

нет сети

нет конкурентности

нет вакума (внезапного)

нет шумных соседей

картинка про квадратики сравнение задержек в CS

Лучший юзкейс

  1. write once - read over 9000
  2. заменять файл к чертям
  3. переоткрывать раз в Н минут
  • пример про склейку Олега и сотни файлов
  • кеш в памяти
  • тесты
  • мобильные приложения

минусы: динамические типы (лишнее место)

Как чинить?

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