Базы данных (Data Base) – Telegram
Базы данных (Data Base)
8.21K subscribers
567 photos
468 videos
19 files
546 links
Базы данных (Data Base). По всем вопросам @evgenycarter
Download Telegram
Детализированные стратегии кэширования динамических запросов

Сегодня я хотел бы поговорить о стратегиях кэширования для совокупных запросов к часто обновляемым данным, основанным на времени. На предыдущем месте работы я провел немало «мозговых циклов» и с удовольствием поделюсь некоторыми своими находками.

https://jensrantil.github.io/posts/fast-aggregate-queries-on-dynamic-data/

#db

👉 @database_info
👍7
PostgreSQL

Лекция 1: Основы SQL
Лекция 2: Простые SELECT
Лекция 3: Сложные SELECT
Лекция 4: Анализ запросов | Часть 1
Лекция 4: Анализ запросов | Часть 2
Лекция 5: Индексы | Часть 1
Лекция 5: Индексы | Часть 2
Лекция 6: Транзакции
Лекция 7: Блокировки

источник

#db

👉 @database_info
👍13🎉2🔥1
SQL: история, теория и практика

Основы SQL Тема 1.1: История возникновения
Основы SQL Тема 1.2: Нормализация
Основы SQL Тема 1.3: Проектирование схемы данных
Основы SQL Тема 2.1: Операторы и практика работы с запросами
Основы SQL Тема 2.2 : Практика работы с запросами
SQL Тема 3.1: Вложенные запросы
SQL Тема 3.2: Вложенные запросы
SQL Тема 4: Приемы анализа и оптимизации запросов
SQL Тема 5.1: Дополнительные средства некоторых баз данных
Тема 5.2: Дополнительные средства некоторых баз данных

источник

#db

👉 @database_info
👍92🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Компания Uber создала собственную базу данных с нуля. Она получила название Schemaless DB.
В ее рамках они хотели добиться высокой доступности операций записи.

Uber сделала это возможным благодаря использованию умной и простой техники под названием Buffered Writes.
В двух словах, Buffered Writes означает, что каждый запрос на запись хранится как минимум на двух узлах - Primary Leader и Secondary Leader.

Вот как это работает:

Клиент делает запрос в обработчик запросов.

Обработчик запросов отправляет запросы на запись на Secondary Leader. Данные сохраняются в специальной буферной таблице на Secondary Leader.

Затем он также отправляет запрос на запись на Primary Leader. Только если обе записи прошли успешно, клиент получает подтверждение успешной записи.

Задача Primary Leader заключается в репликации данных.

Но если leader выходит из строя до успешной асинхронной репликации, Secondary Leader служит временной резервной копией данных.

Background Worker следит за Primary Follower, чтобы узнать, когда появится запись после репликации

Как только запись появляется на Primary Follower, Background Worker удаляет запись из Buffer Table.

Здесь следует отметить несколько важных моментов:

- Количество вторичных лидеров настраивается

- Secondary leader выбирается случайным образом

- Буферизованные записи используют идемпотентность. Если существует несколько записей с одинаковыми идентифицирующими полями, то не имеет значения, сколько раз был сделан запрос.

#db

👉 @database_info
5👍4🥱1