Показать сообщение отдельно
  #1 (permalink)  
Старый 17.02.2019, 13:47
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

Запилить статический кэш для INNER JOIN
В общем разрабатываю движек БД на ABQ(array based queries). Запилен статический JSON кэш для запросов типа select * путем сканирования MD5 всей таблицы и последующей сверки с файлом статики.

Теперь планирую написать API для JOIN запросов, но тут сразу вопрос в реализации кэша.

У меня при любых изменениях DBX создает хэш таблицу в которую сразу после change пишет значение MD5 связанной таблицы и это же значение используется в файле статики JSON: если чексуммы сошлись, то все данные запроса к БД берутся из статики.

Как сделать такое же более грамотно для JOIN? Вот пример:

Код:
SELECT * FROM revolver__nodes, revolver__users WHERE revolver__nodes.field_user = revolver__users.field_nickname
Вариант 1:

Делаем кэш и присваиваем ему время жизни. Херовый вариант так как при появлении нового контента и комментариев он не обновиться сразу же, а контролировать обе таблицы не выходит.

Вариант 2:

Делаем снимок MD5 обоих таблиц и проверяем эти снимки перед самим JOIN. Вариант лучше так как хэш таблицы уже имеются и остается только создать новый статический файл на чанках и проверять суммы у него.

Вариант 3:

Предложите еще варианты как это можно реализовать грамотно.

Код библиотеки:

https://github.com/xShiftx/Revolver_DBX
Ответить с цитированием