В общем разрабатываю движек БД на 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