powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / SQL [закрыт для гостей] / Задача для срача, Поиск: Искать сообщения, созданные автором: Antonariy  
10 сообщений из 10, страница 1 из 1
SQL / Задача для срача
    #158977
Antonariy
Скрыть профиль Поместить в игнор-лист
Участник
Просто Трёп  22.09.2022, 08:08
[игнорируется]
В аттаче вирус!
он заразил блокнот буквами!
...
Рейтинг: 0 / 0
SQL / Задача для срача
    #158983
Antonariy
Скрыть профиль Поместить в игнор-лист
Участник
Doublekey  22.09.2022, 07:39
[игнорируется]
Задачка в аттаче. На мой взгляд весьма неоднозначная.
тестовое задание (1).sql
я бы добавил 3й вопрос на совсем засыпку: нахуя в задании первая таблица?
...
Рейтинг: 0 / 0
SQL / Задача для срача
    #158989
Antonariy
Скрыть профиль Поместить в игнор-лист
Участник
Script Date: 31.08.2021 10:46:02

потребуй посвежее!
...
Рейтинг: 0 / 0
SQL / Задача для срача
    #158991
Antonariy
Скрыть профиль Поместить в игнор-лист
Участник
Горбатый ёж  22.09.2022, 08:17
[игнорируется]
Antonariy  22.09.2022, 08:14
[игнорируется]
я бы добавил 3й вопрос на совсем засыпку: нахуя в задании первая таблица?
Для примера она, типа она для логирования.
Но вопрос конечно интересный, ибо эту таблицу логируем, а триггер на абстрактной таблице висит.
а может это ответ на второй вопрос? в триггере нужно поменять SomeAbstractTable на TablesForLogging!
...
Рейтинг: 0 / 0
SQL / Задача для срача
    #158994
Antonariy
Скрыть профиль Поместить в игнор-лист
Участник
Горбатый ёж  22.09.2022, 08:22
[игнорируется]
Antonariy  22.09.2022, 08:21
[игнорируется]
а может это ответ на второй вопрос? в триггере нужно поменять SomeAbstractTable на TablesForLogging!
Возможно.
Помимо вопроса к 1 таблице у меня ещё вопрос, действительно ли данные в логируемую таблицу только вставляются и удаляются, или нас просто не интересует апдейт.
или нужно добавить в триггер проверку, что SomeAbstractTable есть в конфигах. может триггер узнать имя таблицы, на которой висит?
...
Рейтинг: 0 / 0
SQL / Задача для срача
    #158998
Antonariy
Скрыть профиль Поместить в игнор-лист
Участник
Горбатый ёж  22.09.2022, 08:22
[игнорируется]
действительно ли данные в логируемую таблицу только вставляются и удаляются, или нас просто не интересует апдейт.
чего это не интересует? AFTER DELETE,UPDATE,INSERT

а inserted называется одинаково и для обновления и для вставки.

этот нюанс нужно учесть в процедуре восстановления - проверить, что в целевой таблице есть запись с id и если есть, обновить данными из лога, или вставить.
...
Рейтинг: 0 / 0
SQL / Задача для срача
    #159014
Antonariy
Скрыть профиль Поместить в игнор-лист
Участник
Горбатый ёж  22.09.2022, 08:34
[игнорируется]
Горбатый ёж  22.09.2022, 08:32
[игнорируется]
Antonariy  22.09.2022, 08:28
[игнорируется]
inserted называется одинаково и для обновления и для вставки.

этот нюанс нужно учесть в процедуре восстановления - проверить, что в целевой таблице есть запись с id и если есть, обновить данными из лога, или вставить.
Откат инсёрта - это удаление.
И если у тебя запись есть, то её надо удалить.
Тогда получается, что надо искать более раннюю запись среди инсёртов, если она есть, то это изменение и данные восстанавливать из более ранней записи.
Логично
...
Рейтинг: 0 / 0
SQL / Задача для срача
    #159279
Antonariy
Скрыть профиль Поместить в игнор-лист
Участник
Doublekey  22.09.2022, 11:34
[игнорируется]
eNose  22.09.2022, 11:09
[игнорируется]
Doublekey  22.09.2022, 11:04
[игнорируется]
там есть много тонких непонятных моментов
как по таблице tablesForLogging создать скрипт для восстановления и заполнить его данными из tableLoggingData?

это тебе непонятно или что-то еще?
Все там понятно, просто убогая архитектура и куча дырок. Задача чисто синтетического плана.
Собственнно что я им ответил

[23:07, 21.09.2022] Konstantin: я им сказал что архитектура которая вынуждает заниматься динамическими скулями убогая. и решение хоть и есть тоже неэффективное. и что решить можно но не хотелось бы потому я не согласен с таким универсальным архитектурным решением
[23:07, 21.09.2022] Konstantin: касаемо триггера, я обычно правда не любил когда в лог попадают и инсерты тоже. потому как как там правильно показано приходится по типам различать. но над ним может надо подумать отдельно. но скажем если дают ID записи вставки именно новой строки то есть типа 0 то ее нет смысла восстанавливать потому что когда она была одна она не менялась, а когда в строке целевой таблицы что то изменится появится еще одна строка лога и ее надо будет восстанавливать. вообще я не считаю правильным в одном логе хранить и данные совпадающие со строкой логированной таблицы и и ее старые данные. если необходимо хранить факт инсерта и нельзя его отметить через InsertDate в целевой таблице то стоит хранить думаю ПЕРВУЮ запись в виде NULL в джисоновском поле. но это личное мое мнение
[23:08, 21.09.2022] Konstantin: асаемо организации то что мне не очень нравится подобное логирование в JSON потому что усложняет восприятие хотя и дает универсиализацию это наверно лично мое мнение может чем то это и хорошо, хотя я сомневаюсь что тяжелые варчары это хорошо. скорее вопрос в другом. разворачивание JSON-А OpenSON-ом это известная вещь. но там надо ЗАРАНЕЕ знать имена колонок и пути в файле соответственно. если этого не знать то мы получим столбец имен колонок значений и типов потом мы можем развернуть это в две строчки функцией и использовать динамический SQL далее для добавления (тем более что все равно мы изначально не знаем имени таблицы и базы)
[23:08, 21.09.2022] Konstantin: динамический скуль это вообще не очень хорошо он имеет неприятные нюансы . кроме того у нас в логе есть ID и больше этого ID нигде нет. если мы решили забиццо на ID то можно использовать системные sys.all_objects и sys.databases.
[23:08, 21.09.2022] Konstantin: если ID в целевой таблице это Identity то вставка в это поле возможно только при предварительном запуске специальной директивы. (если запись скажем уже удалена) таким образом решение как будто искуственно усложнено чтобы понять что человек знает о джисоне и динамическом скуле. но с точки зрения продуктива я такие решения как человек с 20 летним опытом не одобряю ибо унификация хорошо но тут она на мой взгляд дается слишком большой ценой. Но если в данном случае это жесткая идея я попробую вам описанное выразить в коде. но повторюсь. я считаю это технологически и архитектурно неправильным решением
[23:08, 21.09.2022] Konstantin: И кстати еще на тему триггера и аудита. Смысл аудита/лога в чем? фиксировать изменения в таблице которые так или иначе в целевой таблице будут утрачены. таким образом рассмотрим ситуацию. Предположим что для однообразия мы будем хранить в таблице лога только ПРЕДЫДУЩИЕ данные, это отлично подходит для апдейта и делита. ВОпрос с инсертом. для инсерта как таковых предыдущих данных нет и мы пишем скажем нулл. таким образом мы в логе фиксируем что некий процесс или пользователь внес изменения в целевую таблицу. а какие? а можно посмотреть в целевую таблицу, ведь мы и в случае апдейта и делита НЕ храним новые значения в логе они есть ТОЛЬКО в целевой таблице до тех пор пока не будут оттуда удалены или там изменены. Зачем для инсерта менять этот подход. Ладно можем возразить а ведь кто то изменит эти данные и мы не узнаем больше что вставлял ТОТ САМЫЙ ПЕРВЫЙ. Не-а УЗНАЕМ потому что ТА САМАЯ ПЕРВАЯ запись будет положена в лог при первом же изменении. это ЛОГ ИЗМЕНЕНИЙ!! он не решает задачу восстановления данных после транкейта таблицы. для этого должны быть бэкапы.
"ваше задание говно" - по-моему решил на отлично, я б взял такого спеца.
...
Рейтинг: 0 / 0
SQL / Задача для срача
    #159607
Antonariy
Скрыть профиль Поместить в игнор-лист
Участник
Горбатый ёж  22.09.2022, 12:50
[игнорируется]
кстати, в МС скуле есть sys? я не в курсе просто
есть
...
Рейтинг: 0 / 0
SQL / Задача для срача
    #159629
Antonariy
Скрыть профиль Поместить в игнор-лист
Участник
Дед-Папыхтет  22.09.2022, 14:13
[игнорируется]
Ща тоже в ВТБ, проектируем справочник "финансовые инструменты" - бл разные инструменты в один справочник хуярят и акции и валюты и паи и ресурсы и драгметаллы и возможно что то еще добавится.
Потому что эта ебаная срань в одних случаях функционирует как единый тип объекта, а в других как разные! Какие-то свойства одинаковые, а какие-то разные, и их сотни. Но я базы не касаюсь, даже не смотрел из любопытства, она на орацле. У меня серверное рест апи и я его дрочу клиентом.
pasted_image.png
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / SQL [закрыт для гостей] / Задача для срача, Поиск: Искать сообщения, созданные автором: Antonariy  
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (161): Анонимы (150), Ветер, Bing Bot, Yandex Bot 1 мин., Дед-Папыхтет 1 мин., IT-Клоп 2 мин., пк 4 мин., Капитан Немо 4 мин., Брюквенные годы 4 мин., Буся 4 мин., XEugene 5 мин., anonymous 8 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]