синхронизации -> DELETE, UPDATE, INSERT): https://habr.com/ru/company/tensor/blog/492464/ - там КЛАДР таким образом обновляют, я их не сам придумал 🙈
> Вы же данные о name_servers так фактически удаляете, или важно наличие "пустой" записи почему-то?
я физически строки не хочу удалять, по факту можно отказаться от того чтоб менять поле name_servers, когда я проставляю поле deleted_at, но мне почему-то показалось что так pg подчистит за собой в этом месте, чтоб каждый день уделенные и ненужные домены не занимали лишнее место на ns сервера )
> И зачем там этот странный синтаксис для anti join, да и вообще лишний self join, на первый взгляд?
я не смог его по-другому переписать, чтоб он работал также 😄
> Я бы его сначала переписа
А что тут можно изменить, чтоб запрос не поломался? Там ведь вся соль в том, что у нас есть таблица t1 с 150 млн строк со вчерашнего дня (да и вообще - с прошлых дней), я в новую t2 заливаю новые данные (где может быть от силы обновится всего 150 тысяч строк из 150 млн), потом через эти апдейты с антиджоинами / инсеры делаю следующее:
1. вначале помечаю в t1 те строки, что отсутствуют в t2 (удаляю фактически, но без физического удаления)
2. обновляю в t1 измененные в t2 строки
3. те что были удалены в t1 ранее, но снова появились в t2 - тоже меняю, чтоб сменить у них crated_at
4. вставляю все строки из t2, которые отсутствуют в t1
вот такая логика там, чтоб таблица t1 содеражала всё что было в предыдущие дни, но новые/обновленные данные из t2 там тоже присутствовали, то есть состояние базы всегда должно быть актуальным 🙂
UPD: Полный пример для воспроизведения выложил тут: https://pastebin.com/2bpcmqAT
> там КЛАДР таким образом обновляют, я их не сам придумал 🙈 Лучше б Вы их сами придумали, судя по их виду (статью не смотрел). ;) > я физически строки не хочу удалять, Мне вот и непонятно, почему, если Вы информацию в них, фактически, уничтожаете. Я бы понял, если бы name_servers не менялось (можно было бы "исторические" запросы делать, допустим), а так-то зачем? > я не смог его по-другому переписать, чтоб он работал также 😄 А Вы с [NOT] EXISTS попробуйте. > вот такая логика там И логику эту тоже можно было бы поменять, особенно, если бы записи действительно удалялись. В общем, нашли бы Вы образец для подражания получше где-нибудь (лично мне это даже править не хочется, хочется сразу выкинуть). ;)
Обсуждают сегодня