Детализированные стратегии кэширования динамических запросов
Сегодня я хотел бы поговорить о стратегиях кэширования для совокупных запросов к часто обновляемым данным, основанным на времени. На предыдущем месте работы я провел немало «мозговых циклов» и с удовольствием поделюсь некоторыми своими находками.
https://jensrantil.github.io/posts/fast-aggregate-queries-on-dynamic-data/
#db
👉 @database_info
Сегодня я хотел бы поговорить о стратегиях кэширования для совокупных запросов к часто обновляемым данным, основанным на времени. На предыдущем месте работы я провел немало «мозговых циклов» и с удовольствием поделюсь некоторыми своими находками.
https://jensrantil.github.io/posts/fast-aggregate-queries-on-dynamic-data/
#db
👉 @database_info
👍7
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
PostgreSQL
Лекция 1: Основы SQL
Лекция 2: Простые SELECT
Лекция 3: Сложные SELECT
Лекция 4: Анализ запросов | Часть 1
Лекция 4: Анализ запросов | Часть 2
Лекция 5: Индексы | Часть 1
Лекция 5: Индексы | Часть 2
Лекция 6: Транзакции
Лекция 7: Блокировки
источник
#db
👉 @database_info
Лекция 1: Основы SQL
Лекция 2: Простые SELECT
Лекция 3: Сложные SELECT
Лекция 4: Анализ запросов | Часть 1
Лекция 4: Анализ запросов | Часть 2
Лекция 5: Индексы | Часть 1
Лекция 5: Индексы | Часть 2
Лекция 6: Транзакции
Лекция 7: Блокировки
источник
#db
👉 @database_info
👍13🎉2🔥1
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
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
Основы 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
👍9❤2🔥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
В ее рамках они хотели добиться высокой доступности операций записи.
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