powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / способы записи в таблицу историю
220 сообщений из 220, показаны все 9 страниц
способы записи в таблицу историю
    #38779130
astepan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача следующая: создавать копии при каждом исменении записи в таблице. т. е.
есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись.

1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю.
2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю.


хотелось бы услышать за и против каждого решения.
спасибо.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779140
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггеры зло, только второй способ. Ну и вдобавок, хранить предыдущее значение не имеет смысла, мы не него всегда сможем выйти.
То есть имеем такую структуру:

1. Documents(DocumentId,Value1,Value2,Value3,...)
2. DocumentsHistory(DocumentId,Date,UserId,Value1,Value2,Value3,...)

Соответственно, по DocumentId мы можем поднять всю историю. Надобность хранить предыдущие значения (типа Value1Old,Value2Old,Value3Old) отпадает сама собой.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779141
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astepan,

добавь к опросу ещё вариант обновления хранимой процедурой
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779142
astepan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггеры зло - можно пояснить почему?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779147
astepan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

а запускать процедуру ти имеешь ввиду откуда из кода или из триггера?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779149
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astepan,

я к этому варианту не призываю - просто демострирую ещё одну возможность, но ни в коем случае не из триггера

триггер - это костыль, последний шанс(чужое приложение, потеря исходников и т д)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779152
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astepanТриггеры зло - можно пояснить почему?
Просто верь на слово
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779157
astepan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Поверить то я могу, :)

но хотелось бы услышать более веские причины
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779158
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУastepanТриггеры зло - можно пояснить почему?
Просто верь на слово
чтоб убедиться достаточно разок на грабли наступить
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779162
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astepanно хотелось бы услышать более веские причины
Да они банальны, как перья курицы. Выше дед Изопропил разжевал на пальцах.

Изопропилчтоб убедиться достаточно разок на грабли наступить
До некоторых, порой, не с первого раза доходит.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779186
astepan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Хочешь выразить свой ум урод?! наверное самый "умный" в классе?!
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779190
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поддерживаю предыдущих ораторов - триггеры - зло.

Причину объяснить действительно непросто. Ну вот ты купил в магазине хлеб, принес домой, а в сумке вместо хлеба пчела или кусок навоза. Как-то вот так.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779193
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось-бы предложить делать вставку IDENTITY тоже из приложения, как МАХ(ID) + 1, раз так не любим триггеры. Нарисуем функцию для этого.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779196
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterХотелось-бы предложить делать вставку IDENTITY тоже из приложения, как МАХ(ID) + 1, раз так не любим триггеры. Нарисуем функцию для этого.
что за бред?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779201
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

А вы думаете IDENTITY святым духом вставляется?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779205
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterИзопропил,

А вы думаете IDENTITY святым духом вставляется?
приращение идентити не вызывает блокировки записей в таблице,
при откате транзакции значение идентити не откатывается
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779214
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилRelic HunterИзопропил,

А вы думаете IDENTITY святым духом вставляется?
приращение идентити не вызывает блокировки записей в таблице,
при откате транзакции значение идентити не откатывается

Разве будет блокировка таблицы если в тригере inserted взять в другую таблицу вставить ?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779222
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встроенный механизм Identity никак не является пользовательским механизмом триггеров, зачем вообще обсуждать этот вброс?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779404
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astepanМСУ, Хочешь выразить свой ум урод?! наверное самый "умный" в классе?!
Маленькая упоротая обезьянка, ты о чем?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779457
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astepanзадача следующая: создавать копии при каждом исменении записи в таблице. т. е.
есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись.

1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю.
2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю.


хотелось бы услышать за и против каждого решения.
спасибо.
в enterprice ms sql версии есть capture data source механизм для этого - лучше его использовать
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779460
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrUastepanзадача следующая: создавать копии при каждом исменении записи в таблице. т. е.
есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись.

1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю.
2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю.


хотелось бы услышать за и против каждого решения.
спасибо.
в enterprice ms sql версии есть capture data source механизм для этого - лучше его использоватьИ чем он лучше?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779489
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmonstrUпропущено...

в enterprice ms sql версии есть capture data source механизм для этого - лучше его использоватьИ чем он лучше?

тем что там уже все реализовано и протестировано - можно просто пользоваться.
наворочена большая гора всего - и триггеры, и service broker и еще черт знает что.

не надо изобретать изобретения, которые уже сделаны до вас и протестированы - минимум напишите что-то похожее, а скорее всего по функционалу будет победнее.

хранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779551
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrUнаворочена большая гора всего
Просто эпический аргумент, что сказать. Зачем мне экскаватор, если требуются только плоскогубцы?

monstrUи триггеры
На помойку.

monstrUи service broker
Тем более на помойку это убожество.

monstrUи еще черт знает что.
А это уж точно и даром не нужно.

monstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.
Хранение истории - это тупая табличка с перечислением нужных полей в разрезе сущности, даты и пользователя. Проще даже нельзя придумать.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779567
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.

давай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779711
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmonstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.

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

1. change data capture http://msdn.microsoft.com/en-us/library/cc645937.aspx - если писать правильно
2. разве я собирался что-то куда-то записывать? я просто написал что есть такой пакет. если вас устраивает - можно пользоваться, нет - ну и нет
3. упаси боже кого учить - здоровье дороже.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779725
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrU1. change data capture http://msdn.microsoft.com/en-us/library/cc645937.aspx - если писать правильно
2. разве я собирался что-то куда-то записывать? я просто написал что есть такой пакет. если вас устраивает - можно пользоваться, нет - ну и нет
3. упаси боже кого учить - здоровье дороже.

Если надо просто хранить историю изменений «на всякий», то можно и так. Если же это часть бизнеса (например, требуется возможность интенсивной работы с этой истории на фронте), эти погремушки можно выкинуть на помойку.

Теперь другой вопрос, сам пользовался этим пакетом? Или как обычно, «услышал звон»?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779782
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrUskyANAпропущено...
И чем он лучше?

тем что там уже все реализовано и протестировано - можно просто пользоваться.
наворочена большая гора всего - и триггеры, и service broker и еще черт знает что.

не надо изобретать изобретения, которые уже сделаны до вас и протестированы - минимум напишите что-то похожее, а скорее всего по функционалу будет победнее.

хранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.Какие-то общие слова. А конкретный пример есть?

Вот например каждый противник триггеров наверняка может вспомнить ситуацию, когда в первый раз не мог понять, какого фига из плижения ушли одни данные, а в таблице в итоге другие.
И как долго искал тот самый, с**а, триггер в куче другого кода.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779784
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmonstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.

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


В таблице есть поле ModifyUserID
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779785
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Например . сори что вмешался.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779788
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306hVosttпропущено...


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


В таблице есть поле ModifyUserIDИ что? Прочитайте внимательно вопрос.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779842
Фотография товарищъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAКакие-то общие слова. А конкретный пример есть?
разница механизма CDC и триггеров только в том, что
триггеры - создают нагрузку на рабочую БД (даже если они будут "вставлять" историю во внешнею)
cdc - подключается к логу транзакций, и если развернут на отдельном сервере в другой БД, то практически не увеличивает нагрузку на рабочую БД. тем самым CDC лучше использовать в высоконагруженных системах, там где быстродействие критично.
есть особеность, если триггер можно сделать синхронным, то cdc всегда асинхронный и работает с небольшой задержкой (более того его можно приостанавливать)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779848
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAкакого фига из плижения ушли одни данные, а в таблице в итоге другие.
запись не модифицируется иногда - ну никак

а всё просто - текстовое поле расширили, а про историю, куда триггер пишет - позабыли
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779868
Фотография товарищъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttдавай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру. Предложу простейший вариант: в аудируемую таблицу добавляется служебная колонка LastModifiedUser (пользователь последний внесший изменение в таблицу) - заполняется на уровне бизнес логики (у вас C#), при ее наличии получить пользователя в триггере или cdc - элементарно. Это плохой вариант?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779890
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmonstrU1. change data capture http://msdn.microsoft.com/en-us/library/cc645937.aspx - если писать правильно
2. разве я собирался что-то куда-то записывать? я просто написал что есть такой пакет. если вас устраивает - можно пользоваться, нет - ну и нет
3. упаси боже кого учить - здоровье дороже.

Если надо просто хранить историю изменений «на всякий», то можно и так. Если же это часть бизнеса (например, требуется возможность интенсивной работы с этой истории на фронте), эти погремушки можно выкинуть на помойку.

Теперь другой вопрос, сам пользовался этим пакетом? Или как обычно, «услышал звон»?
Если это часть бизнеса - лучше всего именно CDC и использовать
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779897
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

При апдейте в апликейшене, в это поле пишется айди пользователя, таким образом в истории сформированой триггером имеем историю изменений этого поля .
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779905
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306skyANA,

При апдейте в апликейшене, в это поле пишется айди пользователя, таким образом в истории сформированой триггером имеем историю изменений этого поля .

ну и вот тоже самое

товарищъhVosttдавай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру. Предложу простейший вариант: в аудируемую таблицу добавляется служебная колонка LastModifiedUser (пользователь последний внесший изменение в таблицу) - заполняется на уровне бизнес логики (у вас C#), при ее наличии получить пользователя в триггере или cdc - элементарно. Это плохой вариант?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779927
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТриггеры зло, только второй способ. Ну и вдобавок, хранить предыдущее значение не имеет смысла, мы не него всегда сможем выйти.
То есть имеем такую структуру:

1. Documents(DocumentId,Value1,Value2,Value3,...)
2. DocumentsHistory(DocumentId,Date,UserId,Value1,Value2,Value3,...)

Соответственно, по DocumentId мы можем поднять всю историю. Надобность хранить предыдущие значения (типа Value1Old,Value2Old,Value3Old) отпадает сама собой.OldValue таки лучше хранить. Из таблицы DocumentsHistory старые записи обычно удаляются.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779935
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропила всё просто - текстовое поле расширили, а про историю, куда триггер пишет - позабылиДля хранения лога в общем случае надо использовать EAV с типом данных nvarchar(max).
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779969
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любопытно. почему триггеры зло - можно услышать внятное объяснение? особенно в рамках этой задачи?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779979
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!любопытно. почему триггеры зло - можно услышать внятное объяснение? особенно в рамках этой задачи?логично этот вопрос задать в ветке SQL-сервер
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779985
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Prowinsky!любопытно. почему триггеры зло - можно услышать внятное объяснение? особенно в рамках этой задачи?логично этот вопрос задать в ветке SQL-сервер
наверное. задайте.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779989
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
товарищъskyANAКакие-то общие слова. А конкретный пример есть?
разница механизма CDC и триггеров только в том, что
триггеры - создают нагрузку на рабочую БД (даже если они будут "вставлять" историю во внешнею)
cdc - подключается к логу транзакций, и если развернут на отдельном сервере в другой БД, то практически не увеличивает нагрузку на рабочую БД. тем самым CDC лучше использовать в высоконагруженных системах, там где быстродействие критично.
есть особеность, если триггер можно сделать синхронным, то cdc всегда асинхронный и работает с небольшой задержкой (более того его можно приостанавливать)
оно должно быть ну очень критичным, поскольку триггеры добавляющие что-то во "внешнюю", создают очень небольшую нагрузку. а вот если говорить о стоимости реализации и поддержки - триггеры дешевле как минимум в разы
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779992
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилskyANAкакого фига из плижения ушли одни данные, а в таблице в итоге другие.
запись не модифицируется иногда - ну никак Чего?
Я не писал что приложения выполняет прямой INSERT в таблицу :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38779996
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306skyANA,

При апдейте в апликейшене, в это поле пишется айди пользователя, таким образом в истории сформированой триггером имеем историю изменений этого поля .Вот теперь понятно. Спасибо :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780005
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!наверное. задайте.А мне не нужно, я уже попрыгал по этим граблям.

Я использую триггеры в двух случаях:
- заплатки к старой базе (которая вообще на MSSQL перетащена из Аксесса)
- временная заплатка, для нормальной работы предыдущей версии клиентского приложения одновременно с новой (пока неспешно идет апгрейд пользователей до новой версии)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780018
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!товарищъпропущено...

разница механизма CDC и триггеров только в том, что
триггеры - создают нагрузку на рабочую БД (даже если они будут "вставлять" историю во внешнею)
cdc - подключается к логу транзакций, и если развернут на отдельном сервере в другой БД, то практически не увеличивает нагрузку на рабочую БД. тем самым CDC лучше использовать в высоконагруженных системах, там где быстродействие критично.
есть особеность, если триггер можно сделать синхронным, то cdc всегда асинхронный и работает с небольшой задержкой (более того его можно приостанавливать)
оно должно быть ну очень критичным, поскольку триггеры добавляющие что-то во "внешнюю", создают очень небольшую нагрузку. а вот если говорить о стоимости реализации и поддержки - триггеры дешевле как минимум в разы
наоборот. Поддержка тригерров - очень трудоемка.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780027
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧего?
Я не писал что приложения выполняет прямой INSERT в таблицу :)
это я пример эффекта от триггера приводил - запомнил навсегда
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780040
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!любопытно. почему триггеры зло - можно услышать внятное объяснение? особенно в рамках этой задачи?Трёхзвенщикам триггера неудобны, из них нет доступа к прикладной логике сервера приложения. Пример был приведён выше: нет доступа к контексту безопасности пользователя сервера приложений. Это же касается и SP, View, UDF и т. п. Можно извратиться через временную таблицу, но зачем?

А если логика в хранимых процедурах, то триггера удобны.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780043
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА если логика в хранимых процедурах, то триггера удобны.
то они не нужны
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780046
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КА если логика в хранимых процедурах, то триггера удобны.
то они не нужны Хранимые процедуры?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780049
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astepanзадача следующая: создавать копии при каждом исменении записи в таблице. т. е.
есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись.

1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю.
2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю.


хотелось бы услышать за и против каждого решения.
спасибо.3. Прикрутить к Entity Framework DbContext универсальный механизм логирования любых объектов контекста БД.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780100
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КА если логика в хранимых процедурах, то триггера удобны.
то они не нужны +100500
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780104
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КOldValue таки лучше хранить. Из таблицы DocumentsHistory старые записи обычно удаляются.
Это будет избыточно. Если решили удалить данные из DocumentsHistory, значит не нужна история. А если не нужна история, то какие могут быть вопросы к предыдущим значениям? :)

Алексей КДля хранения лога в общем случае надо использовать EAV с типом данных nvarchar(max).
Вот не нужны тут никакие универсальные маханихмы. Типы полей истории должны строго соответствовать оригиналам. Обобщение - зло.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780115
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КOldValue таки лучше хранить. Из таблицы DocumentsHistory старые записи обычно удаляются.
Это будет избыточно. Если решили удалить данные из DocumentsHistory, значит не нужна история. А если не нужна история, то какие могут быть вопросы к предыдущим значениям? :)Ну не всё же удаляется. Удаляются записи старее, например, 7 суток.

МСУАлексей КДля хранения лога в общем случае надо использовать EAV с типом данных nvarchar(max).
Вот не нужны тут никакие универсальные маханихмы. Типы полей истории должны строго соответствовать оригиналам. Обобщение - зло.Не зло. :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780119
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Prowinsky!наверное. задайте.А мне не нужно, я уже попрыгал по этим граблям.

Я использую триггеры в двух случаях:
- заплатки к старой базе (которая вообще на MSSQL перетащена из Аксесса)
- временная заплатка, для нормальной работы предыдущей версии клиентского приложения одновременно с новой (пока неспешно идет апгрейд пользователей до новой версии)
и мне не нужно :) меня интересует мнение конкретных мемберов ЭТОЙ ветки
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780122
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не говорю, что во всех случаях триггеры - идеальное решение. но почему многие считают их АБСОЛЮТНЫМ злом- непонятно, и хотелось бы увидеть аргументов.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780126
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780130
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306В таблице есть поле ModifyUserID

ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780132
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!и хотелось бы увидеть аргументов.Это нарушает правила форума.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780136
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneзло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются set nocount on поставить в триггере это сложно, да... Какие там ещё особенности?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780137
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneзло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются в общем - пожалуй соглашусь

в сценарии Table -> logTable, где в лог таблицу добавлением пишутся изменения - все до предела просто. у меня где-то даже был скрипт, который для любой таблицы создавал триггеры и таблицу логгирования...
это конечно удобно только в сценариях, когда в контексте запроса известен конкретный пользователь. поскольку у меня долгое время для многих решений именно такой сценарий и работал, задача реашалась на ура.
поэтому триггеры, они, может и зло, но не абсолютное :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780141
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAndrey1306В таблице есть поле ModifyUserID

ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как?

такой себе сценарий
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780142
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КKonst_Oneзло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются set nocount on поставить в триггере это сложно, да... Какие там ещё особенности?

ну некоторые не в курсе , что inserted - это массив строк , например.
а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальные
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780144
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кwinsky!и хотелось бы увидеть аргументов.Это нарушает правила форума. ну да. я забыл, отсутствовал какое-то время :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780145
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!hVosttпропущено...


ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как?

такой себе сценарий

ну так как, с триггерами?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780149
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку не всё же удаляется. Удаляются записи старее, например, 7 суток.
Ну значит мы всегда будем знать прошлое значение. Зачем его где-то еще хранить? Есть DocumentsHistory с полями истории. Этого 100% достаточно.

Алексей КВот не нужны тут никакие универсальные маханихмы. Типы полей истории должны строго соответствовать оригиналам. Обобщение - зло.Не зло. :-)[/quot]
Спорщик! )
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780151
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!пропущено...


такой себе сценарий

ну так как, с триггерами?
да так же как и везде, есть такое слово
Код: sql
1.
WHERE
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780152
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneАлексей Кпропущено...
set nocount on поставить в триггере это сложно, да... Какие там ещё особенности?

ну некоторые не в курсе , что inserted - это массив строк , например.
а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальныеНу любой инструмент надо сначала изучить, потом использовать.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780154
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Ку не всё же удаляется. Удаляются записи старее, например, 7 суток.
Ну значит мы всегда будем знать прошлое значение. Зачем его где-то еще хранить? Есть DocumentsHistory с полями истории. Этого 100% достаточно.Потому что у меня в настоящее время работает такое решение, и оно мне не нравится. :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780155
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneпропущено...


ну некоторые не в курсе , что inserted - это массив строк , например.
а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальныенекоторые, и даже очень многие, не в курсе, что существует MS SQL Server. не будем его использовать?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780156
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КKonst_Oneпропущено...


ну некоторые не в курсе , что inserted - это массив строк , например.
а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальныеНу любой инструмент надо сначала изучить, потом использовать.

ну так об этом и речь. поэтому для многих (кто не до конца изучил), триггеры - зло
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780158
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

Ну значит мы всегда будем знать прошлое значение. Зачем его где-то еще хранить? Есть DocumentsHistory с полями истории. Этого 100% достаточно.Потому что у меня в настоящее время работает такое решение, и оно мне не нравится. :-)
+100500
у меня, ну уже не у меня, но работает несколько решений достаточно активно использующих описанный мной сценарий - никаких нареканий.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780160
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneАлексей Кпропущено...
Ну любой инструмент надо сначала изучить, потом использовать.

ну так об этом и речь. поэтому для многих (кто не до конца изучил), триггеры - зло Согласен. :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780162
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAndrey1306В таблице есть поле ModifyUserID

ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как?


ну во первых не чего ему там править, а во вторых DEFAULT (suser_sname()) FOR [SrvUserName]
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780163
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПотому что у меня в настоящее время работает такое решение, и оно мне не нравится. :-)
Я покажусь бесцеремонным, если спрошу почему?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780166
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

А если учесть что каждое приложение со своей строкой подключения в базу ходит, то знаем еще и какой приложение "делало" правки
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780168
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!hVosttпропущено...


ну так как, с триггерами?
да так же как и везде, есть такое слово
Код: sql
1.
WHERE



и что писать после WHERE?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780169
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое простое объяснение, почему триггера зло :)

Триггер - это бизнес логика на стороне БД. А что такое бизнес логика на стороне БД? Правильно, это дичайшее зло. Исходя из причинно-следственной связи, можем сделать заключение, что триггера пусть и не беспощадное, но эпически отвратительное зло всех зол!
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780171
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСамое простое объяснение, почему триггера зло :)

Триггер - это бизнес логика на стороне БД. А что такое бизнес логика на стороне БД? Правильно, это дичайшее зло. Исходя из причинно-следственной связи, можем сделать заключение, что триггера пусть и не беспощадное, но эпически отвратительное зло всех зол!

только вот не надо тут в форуме то по ораклу
тапками ведь закидают
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780173
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСамое простое объяснение, почему триггера зло :)

Триггер - это бизнес логика на стороне БД. А что такое бизнес логика на стороне БД? Правильно, это дичайшее зло. Исходя из причинно-следственной связи, можем сделать заключение, что триггера пусть и не беспощадное, но эпически отвратительное зло всех зол!


) А если это просто логирование и ничего больше ?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780175
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За триггера к стенке и без суда и следствия.

Он писал триггера
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780177
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneтолько вот не надо тут в форуме то по ораклу
тапками ведь закидают
Ну так мы не на форуме по ораклу :)

Andrey1306) А если это просто логирование и ничего больше ?
Да хоть просто пустой код в теле триггера. Расстрел
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780178
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306hVosttпропущено...


ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как?


ну во первых не чего ему там править, а во вторых DEFAULT (suser_sname()) FOR [SrvUserName]

ясно. никак

триггеры не плохи сами по себе. но если БД пользуется приложение, то оно должно иметь максимальный контроль над изменениями в базе данных. либо все изменяющие запросы 100% переносятся в хранимые процедуры, тогда пжалста, в ином случае в топку триггеры. размазывать логику работы с данными соплями по разным ведомостям -- вполне себе мудацкий подход, для отщепенцев.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780181
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306hVostt,

А если учесть что каждое приложение со своей строкой подключения в базу ходит, то знаем еще и какой приложение "делало" правки

какое еще "каждое"??? я говорил про пользователя приложения , а не пользователя базы данных.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780182
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КПотому что у меня в настоящее время работает такое решение, и оно мне не нравится. :-)
Я покажусь бесцеремонным, если спрошу почему? Запись о последнем изменении документа есть, а о предыдущем изменении нет - предыдущая запись была удалена чистильщиком лога. В результате мы не знаем OldValue.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780184
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttлибо все изменяющие запросы 100% переносятся в хранимые процедуры, тогда пжалста
зачем триггеры в этом случае? логика обновления и так локалиована
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780185
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!пропущено...

да так же как и везде, есть такое слово
Код: sql
1.
WHERE



и что писать после WHERE?

Код: sql
1.
 SUSER_SNAME() <> 'super-mega-admin'
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780189
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAndrey1306hVostt,

А если учесть что каждое приложение со своей строкой подключения в базу ходит, то знаем еще и какой приложение "делало" правки

какое еще "каждое"??? я говорил про пользователя приложения , а не пользователя базы данных.

ну в теории, несколько приложений, десктоп, веб (или их даже не по одной штуке - несколько) работают с одной базой данных
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780190
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЗа триггера к стенке и без суда и следствия.

а есть реальные аргументы, ну правда?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780193
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСамое простое объяснение, почему триггера зло :)

Триггер - это бизнес логика на стороне БД. А что такое бизнес логика на стороне БД? Правильно, это дичайшее зло. Исходя из причинно-следственной связи, можем сделать заключение, что триггера пусть и не беспощадное, но эпически отвратительное зло всех зол! Эльф Баянист 83 LVL.

тынц
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780195
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!hVosttпропущено...


и что писать после WHERE?

Код: sql
1.
 SUSER_SNAME() <> 'super-mega-admin'



не катит. плевать на пользователя базы данных. нужен пользователь приложения.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780197
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306hVosttпропущено...


какое еще "каждое"??? я говорил про пользователя приложения , а не пользователя базы данных.

ну в теории, несколько приложений, десктоп, веб (или их даже не по одной штуке - несколько) работают с одной базой данных

в теории может. на практике, лучше делать одну точку входа, например REST или SOAP или WCF... это надёжнее и лучше поддаётся масштабированию, и сопровождению.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780198
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!пропущено...


Код: sql
1.
 SUSER_SNAME() <> 'super-mega-admin'



не катит. плевать на пользователя базы данных. нужен пользователь приложения.
я выше говорил, что решение хорошо в контексте пользователей базы. и я говорил, что в ТАКОМ случае - триггеры хороши (вы наверное пропустили).
если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780199
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!МСУЗа триггера к стенке и без суда и следствия.

а есть реальные аргументы, ну правда?

есть. на твой карточный счёт в банке навешивается триггер, который сам по своему разумению периодически снимает бабки. вроде бы на нужные вещи, только ты на это повлиять никак не можешь.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780200
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!пропущено...


Код: sql
1.
 SUSER_SNAME() <> 'super-mega-admin'



не катит. плевать на пользователя базы данных. нужен пользователь приложения.

точно также примерно, пользователь приложения по любому в роли, вяжем ктаблице ролей и исключаем некотрые роли из inserted данных.

Но это только теоритическая задача ! Ведь лог он на то и лог что логировать все нужно !!!
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780206
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!hVosttпропущено...


не катит. плевать на пользователя базы данных. нужен пользователь приложения.
я выше говорил, что решение хорошо в контексте пользователей базы. и я говорил, что в ТАКОМ случае - триггеры хороши (вы наверное пропустили).
если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)

если приложение работает с базой данных, то уже только благодаря этому факту, триггеры -- не торты. могут быть исключения, но в общей концепции: кто девушку поит, тот её и танцует.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780208
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!пропущено...

а есть реальные аргументы, ну правда?

есть. на твой карточный счёт в банке навешивается триггер, который сам по своему разумению периодически снимает бабки. вроде бы на нужные вещи, только ты на это повлиять никак не можешь.
послушайте. вы писатель, и не читатель?
мне казалось, я четко описал сценарий. но вы можете продолжать с собой разговаривать. это забавно.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780210
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306hVosttпропущено...


не катит. плевать на пользователя базы данных. нужен пользователь приложения.

точно также примерно, пользователь приложения по любому в роли, вяжем ктаблице ролей и исключаем некотрые роли из inserted данных.

Но это только теоритическая задача ! Ведь лог он на то и лог что логировать все нужно !!!

т.е. поползла логика в базу данных
сказать, чем это всё заканчивается?
неделикатно выражаясь, жопой.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780214
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAndrey1306пропущено...


точно также примерно, пользователь приложения по любому в роли, вяжем ктаблице ролей и исключаем некотрые роли из inserted данных.

Но это только теоритическая задача ! Ведь лог он на то и лог что логировать все нужно !!!

т.е. поползла логика в базу данных
сказать, чем это всё заканчивается?
неделикатно выражаясь, жопой.





та не ), у нас в логе, логики нет. просто история правок.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780216
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttт.е. поползла логика в базу данных
сказать, чем это всё заканчивается?
неделикатно выражаясь, жопой.
какая в хелловорде логика?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780227
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!пропущено...

я выше говорил, что решение хорошо в контексте пользователей базы. и я говорил, что в ТАКОМ случае - триггеры хороши (вы наверное пропустили).
если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)

если приложение работает с базой данных, то уже только благодаря этому факту, триггеры -- не торты. могут быть исключения, но в общей концепции: кто девушку поит, тот её и танцует.
девушку(базу) зачастую танцуют несколько приложений. нужно универсальное решение. так что часто очень даже торт..
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780229
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)Было бы желание. В DAL сервера приложений централизованно при открытии соединения пишем информацию о пользователе, и прочий контекст, во временную таблицу - пользуемся временной таблицей в триггерах, радуемся жизни. :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780233
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!hVosttпропущено...


если приложение работает с базой данных, то уже только благодаря этому факту, триггеры -- не торты. могут быть исключения, но в общей концепции: кто девушку поит, тот её и танцует.
девушку(базу) зачастую танцуют несколько приложений. нужно универсальное решение. так что часто очень даже торт..Все танцуют обычно веб-сервис. :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780234
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306та не ), у нас в логе, логики нет. просто история правок.

если это не вяжется с бизнесом, то подход ок. пишется себе лог и пишется ))
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780236
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кwinsky!если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)Было бы желание. В DAL сервера приложений централизованно при открытии соединения пишем информацию о пользователе, и прочий контекст, во временную таблицу - пользуемся временной таблицей в триггерах, радуемся жизни. :-)
вариант. как один из.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780238
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилhVosttт.е. поползла логика в базу данных
сказать, чем это всё заканчивается?
неделикатно выражаясь, жопой.
какая в хелловорде логика?

ну так всегда бывает. требования изменяются, запросы к функциональности растут.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780239
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кwinsky!пропущено...

девушку(базу) зачастую танцуют несколько приложений. нужно универсальное решение. так что часто очень даже торт..Все танцуют обычно веб-сервис. :-)
вы идеализируете мир :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780240
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...
Я покажусь бесцеремонным, если спрошу почему? Запись о последнем изменении документа есть, а о предыдущем изменении нет - предыдущая запись была удалена чистильщиком лога. В результате мы не знаем OldValue.
Чистильщик лога должен удалять не с конца, а с начала. То есть самые ранние записи. Поэтому актуальная иеформация у нас всегда будет. Текущие данные - в таблице Documents. Предыдущее значение - в DocumentsHistry (max дата).
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780241
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!девушку(базу) зачастую танцуют несколько приложений. нужно универсальное решение. так что часто очень даже торт..

не понял, зачем несколько приложений? одних и тех же в кластере, или разных?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780242
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!Алексей Кпропущено...
Было бы желание. В DAL сервера приложений централизованно при открытии соединения пишем информацию о пользователе, и прочий контекст, во временную таблицу - пользуемся временной таблицей в триггерах, радуемся жизни. :-)
вариант. как один из.Не единственный, но лучше, чем добавлять поле в таблицу, как это предлагалось кем-то выше.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780243
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!девушку(базу) зачастую танцуют несколько приложений. нужно универсальное решение. так что часто очень даже торт..

не понял, зачем несколько приложений? одних и тех же в кластере, или разных?
разных
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780245
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!МСУЗа триггера к стенке и без суда и следствия.

а есть реальные аргументы, ну правда?
А разве "бизнес логика на стороне БД - дичайшее зло" это не аргумент? Триггера - это кривые ржавые гвозди, которыми мы прибиваем свою чистую и не порочную логику. Не нужно тащить этот мусор в базу.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780247
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кwinsky!если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)Было бы желание. В DAL сервера приложений централизованно при открытии соединения пишем информацию о пользователе, и прочий контекст, во временную таблицу - пользуемся временной таблицей в триггерах, радуемся жизни. :-)\

ахахааха

...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780248
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Запись о последнем изменении документа есть, а о предыдущем изменении нет - предыдущая запись была удалена чистильщиком лога. В результате мы не знаем OldValue.
Чистильщик лога должен удалять не с конца, а с начала. То есть самые ранние записи. Поэтому актуальная иеформация у нас всегда будет. Текущие данные - в таблице Documents. Предыдущее значение - в DocumentsHistry (max дата).
Код: sql
1.
delete from Log where LogDate < dateadd(day, -7, getdate())
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780249
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!hVosttпропущено...


не понял, зачем несколько приложений? одних и тех же в кластере, или разных?
разных

а защему так? что это за система такая...
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780250
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!пропущено...

а есть реальные аргументы, ну правда?
А разве "бизнес логика на стороне БД - дичайшее зло" это не аргумент? Триггера - это кривые ржавые гвозди, которыми мы прибиваем свою чистую и не порочную логику. Не нужно тащить этот мусор в базу.

логирование изменений в таблице/таблицах - бизнес-лгика?
можно определение бизнес логики?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780251
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!Алексей Кпропущено...
Все танцуют обычно веб-сервис. :-)
вы идеализируете мир :)Утопия, согласен. :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780254
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!пропущено...

разных

а защему так? что это за система такая...
потому что, я повторюсь, мир не идеален.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780255
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!hVosttпропущено...


не катит. плевать на пользователя базы данных. нужен пользователь приложения.
я выше говорил, что решение хорошо в контексте пользователей базы. и я говорил, что в ТАКОМ случае - триггеры хороши (вы наверное пропустили).
если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)
Строить безопасность на уровне БД - опять беспощадное зло. Так что от хвоста - еще второй аргумент, что триггера зло. В распределенных системах безопасность можно строиться самыми разными способами. Особенно, если у нас фигурируют несколько СУБД, причем различных.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780257
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!можно определение бизнес логики?

новый виток ЖЕСТИ!

Жжём! Не останавливаемся! Пятница ещё не кончилась
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780259
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кwinsky!пропущено...

вариант. как один из.Не единственный, но лучше, чем добавлять поле в таблицу, как это предлагалось кем-то выше.
я не предлагал модифицировать исходную таблицу вообще.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780261
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!можно определение бизнес логики?

новый виток ЖЕСТИ!

Жжём! Не останавливаемся! Пятница ещё не кончилась
ну-ну. выдохните, и скажите, что такое бизнес-логика в вашем понимании
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780263
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей Кпропущено...
Было бы желание. В DAL сервера приложений централизованно при открытии соединения пишем информацию о пользователе, и прочий контекст, во временную таблицу - пользуемся временной таблицей в триггерах, радуемся жизни. :-)\

ахахааха Ты опять ничего не понял. Про не идеальность мира тут уже писали.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780265
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

Чистильщик лога должен удалять не с конца, а с начала. То есть самые ранние записи. Поэтому актуальная иеформация у нас всегда будет. Текущие данные - в таблице Documents. Предыдущее значение - в DocumentsHistry (max дата).
Код: sql
1.
delete from Log where LogDate < dateadd(day, -7, getdate())


И что? Всё нормально будет работать - будут доступна историческая цепочка записей в течении недели. Никаких противоречий.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780268
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!логирование изменений в таблице/таблицах - бизнес-лгика?

Конечно.

winsky!можно определение бизнес логики?
В википедии.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780271
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!пропущено...

я выше говорил, что решение хорошо в контексте пользователей базы. и я говорил, что в ТАКОМ случае - триггеры хороши (вы наверное пропустили).
если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)
Строить безопасность на уровне БД - опять беспощадное зло. Так что от хвоста - еще второй аргумент, что триггера зло. В распределенных системах безопасность можно строиться самыми разными способами. Особенно, если у нас фигурируют несколько СУБД, причем различных.
никто не строит безопасность на уровне БД. я этого не говорил.
вы описываете один сценарий. я - совсем другой. для вашего сценария треггеры - не айс. но кроме вашего есть другие сценарии
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780272
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!логирование изменений в таблице/таблицах - бизнес-лгика?
Причем, как правило, эта информация даже бизнесу важнее, чем админам. Видеть дерево изменений важного документа - почему это не бизнес логика? Очень удобная и важная функция.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780273
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!Алексей Кпропущено...
Не единственный, но лучше, чем добавлять поле в таблицу, как это предлагалось кем-то выше.
я не предлагал модифицировать исходную таблицу вообще.А я не про Вас, а про " кого-то другого ". :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780276
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТы опять ничего не понял. Про не идеальность мира тут уже писали.

значит картинка, всё таки в тему? :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780278
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!логирование изменений в таблице/таблицах - бизнес-лгика?

Конечно.

ок. тогда конечно, транзакшн лог, например, - это сущность, относящаяся к бизнес-логике. да?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780280
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Код: sql
1.
delete from Log where LogDate < dateadd(day, -7, getdate())


И что? Всё нормально будет работать - будут доступна историческая цепочка записей в течении недели. Никаких противоречий.Ну как, если информация о текущей транзакции ссылается на информацию о предыдущей, которая удалена?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780281
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!никто не строит безопасность на уровне БД. я этого не говорил.
Разве?

Код: sql
1.
SUSER_SNAME() <> 'super-mega-admin'



За твоего "сусера" уже нужно прибивать гвоздями к забору :)

winsky!вы описываете один сценарий. я - совсем другой. для вашего сценария треггеры - не айс. но кроме вашего есть другие сценарии
У нас один сценарий. Архитектура безопасности приложений, история изменений бизнес данных. Вроде никто о доярках и коровьих надоях не офтопит.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780282
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!ну-ну. выдохните, и скажите, что такое бизнес-логика в вашем понимании

что значит, в моём? есть общепринятое понимание, моё ни чем не отличается, так как я пользуюсь общим.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780283
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!логирование изменений в таблице/таблицах - бизнес-лгика?
Причем, как правило, эта информация даже бизнесу важнее, чем админам. Видеть дерево изменений важного документа - почему это не бизнес логика? Очень удобная и важная функция.
вот опять - вы описываете совсем отличный от моего сценарий.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780284
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КТы опять ничего не понял. Про не идеальность мира тут уже писали.

значит картинка, всё таки в тему? :)Согласен. :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780288
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!ну-ну. выдохните, и скажите, что такое бизнес-логика в вашем понимании

что значит, в моём? есть общепринятое понимание, моё ни чем не отличается, так как я пользуюсь общим.
конечно есть. вот исходя из описанного мной сцеанария и определения бизнес-логики я не считаю что данные область относится к бизнес-логике.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780289
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСогласен. :-)

а вообще, мы все сегодня молодцы! вот:
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780292
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...
И что? Всё нормально будет работать - будут доступна историческая цепочка записей в течении недели. Никаких противоречий.Ну как, если информация о текущей транзакции ссылается на информацию о предыдущей, которая удалена?
Ну хватит тупить, а? :) Текущая не ссылается на предыдущую! Транзакция ссылается на документ . Дерево строится на иерархии дат.

Еще раз.

1. Таблица документов - Documents (DocumentId, Value1, Value2)
2. История - DocumentsHistory (DocumentId, Value1, Value2, Date, UserId, OperationId)

Всё. Тут нету даже ключа DocumentsHistoryId, он и не нужен. Битых ссылок быть не может априори. Документы из Documents физически удалять нельзя, только маркировать удалением.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780295
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!hVosttпропущено...


что значит, в моём? есть общепринятое понимание, моё ни чем не отличается, так как я пользуюсь общим.
конечно есть. вот исходя из описанного мной сцеанария и определения бизнес-логики я не считаю что данные область относится к бизнес-логике.

нужно определиться, эта история или логирование.. это часть бизнеса или нет? лог будет отображаться в интерфейсе пользователя? им можно как-то из программы управлять? например, отключать? или менять логику записи/ведения истории? если да, то триггеры зло.

если же это историческое логгирование живёт само по себе и никакой связи с приложением нет, то можно и триггеры. даже нужно.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780296
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КСогласен. :-)

а вообще, мы все сегодня молодцы! вот:

Не только сегодня. Всю неделю дотнетные топики в топе. :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780299
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttесли же это историческое логгирование живёт само по себе и никакой связи с приложением нет, то можно и триггеры. даже нужно.
И даже в этом случае не нужно.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780301
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttпропущено...


а вообще, мы все сегодня молодцы! вот:

Не только сегодня. Всю неделю дотнетные топики в топе. :-)

хм, ну мы тогда всю неделю молодцы теперь можно и пивка
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780302
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!никто не строит безопасность на уровне БД. я этого не говорил.
Разве?

Код: sql
1.
SUSER_SNAME() <> 'super-mega-admin'



За твоего "сусера" уже нужно прибивать гвоздями к забору :)

winsky!вы описываете один сценарий. я - совсем другой. для вашего сценария треггеры - не айс. но кроме вашего есть другие сценарии
У нас один сценарий. Архитектура безопасности приложений, история изменений бизнес данных. Вроде никто о доярках и коровьих надоях не офтопит.
МСУ, давайте без гвоздей. просто порассуждайте. представье, что используется только windows аутентификация, пользователь всегда известен в контексте запроса... чем плохо-то? аргументируйте.
аргумент - это плохо потому что плохо и где мои гвозди - не катит
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780303
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttесли же это историческое логгирование живёт само по себе и никакой связи с приложением нет, то можно и триггеры. даже нужно.
И даже в этом случае не нужно.

ну тут уже зависит от степени придроченности ко всяким T-SQL/PL-SQL, некоторых знаешь ли не оторвёшь
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780305
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!что используется только windows аутентификация

сегодня только Windows, а завтра прикрутили двух-факторную на внешнем сервере.. и что делать? всё тут же отвалилось? ну уж нет.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780306
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Ну как, если информация о текущей транзакции ссылается на информацию о предыдущей, которая удалена?
Ну хватит тупить, а? :) Текущая не ссылается на предыдущую! Транзакция ссылается на документ . Дерево строится на иерархии дат.

Еще раз.

1. Таблица документов - Documents (DocumentId, Value1, Value2)
2. История - DocumentsHistory (DocumentId, Value1, Value2, Date, UserId, OperationId)

Всё. Тут нету даже ключа DocumentsHistoryId, он и не нужен. Битых ссылок быть не может априори. Документы из Documents физически удалять нельзя, только маркировать удалением.Ну какая разница, как строится цепочка транзакций, привязанных к документу, через явную ссылку DocHistoryID, или через DocID + LogDate.

Верь мне!
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780314
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!что используется только windows аутентификация

сегодня только Windows, а завтра прикрутили двух-факторную на внешнем сервере.. и что делать? всё тут же отвалилось? ну уж нет.
с какого бодунища, простите? я же вам говорю, не пытайтесь сильно абстрагироваться - есть конткретно окружение, оно не изменится в обозримом будущем. в этом окружении и при описанном мною сценарии все работает просто прекрасно. это просто проверено. это НЕ универсальное решение. И, например, проектируя абсолютно новую систему, я бы врядли использовал такой подход. Но таки он имеет право на жизнь.
я просто противник абсолютизма. есть у триггеров ниша своя...
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780317
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сегодня, пятницо, кстати.
МСУ, какдила? :) я давно не заходил сюда...
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780318
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!МСУ, давайте без гвоздей. просто порассуждайте. представье, что используется только windows аутентификация, пользователь всегда известен в контексте запроса... чем плохо-то? аргументируйте.
аргумент - это плохо потому что плохо и где мои гвозди - не катит
Ок. Сейчас используется только windows аутентификация. Потом еще попросится формс аутентификация. Потом роли. Роли в базе храним. А потом хук с правой, выкинули MS SQL и купили Oracle. В случае с безопасностью уровня сервере приложений - нам пох. В твоем варианте задача не выполнимая.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780319
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУпропущено...

И даже в этом случае не нужно.

ну тут уже зависит от степени придроченности ко всяким T-SQL/PL-SQL, некоторых знаешь ли не оторвёшь
Отрываем с помощью молотка и лома. Ну ты знаешь :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780320
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!МСУ, давайте без гвоздей. просто порассуждайте. представье, что используется только windows аутентификация, пользователь всегда известен в контексте запроса... чем плохо-то? аргументируйте.
аргумент - это плохо потому что плохо и где мои гвозди - не катит
Ок. Сейчас используется только windows аутентификация. Потом еще попросится формс аутентификация. Потом роли. Роли в базе храним. А потом хук с правой, выкинули MS SQL и купили Oracle. В случае с безопасностью уровня сервере приложений - нам пох. В твоем варианте задача не выполнимая.
я выше ответил :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780321
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кwinsky!пропущено...

я не предлагал модифицировать исходную таблицу вообще.А я не про Вас, а про " кого-то другого ". :-)

А она не модифицировалась (таблица) она сразу с этим полем создавалась
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780322
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!с какого бодунища, простите? я же вам говорю, не пытайтесь сильно абстрагироваться - есть конткретно окружение, оно не изменится в обозримом будущем. в этом окружении и при описанном мною сценарии все работает просто прекрасно. это просто проверено. это НЕ универсальное решение. И, например, проектируя абсолютно новую систему, я бы врядли использовал такой подход. Но таки он имеет право на жизнь.
я просто противник абсолютизма. есть у триггеров ниша своя...

а, ну дык етить. работает и ладно. но права на жизнь он всё же не имеет
даже как минимум с экономической точки зрения. кто эти триггеры сопровождать будет?
и зачем козе баян, если без триггеров задачи прекрасно решаются?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780324
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу какая разница, как строится цепочка транзакций, привязанных к документу, через явную ссылку DocHistoryID, или через DocID + LogDate.
Большая разница. Лишнее поле :) Ну так ты и не рассказал, почему у меня прошлое значение нельзя узнать. Можно! ))

Алексей КВерь мне!
Да ты фантазер!
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780326
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОтрываем с помощью молотка и лома. Ну ты знаешь :)

а как иначе-то
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780327
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!сегодня, пятницо, кстати.
МСУ, какдила? :) я давно не заходил сюда...
Норм, виныч :) Вот, всё копашимся тут как видишь )) Как бизнес?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780330
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!с какого бодунища, простите? я же вам говорю, не пытайтесь сильно абстрагироваться - есть конткретно окружение, оно не изменится в обозримом будущем. в этом окружении и при описанном мною сценарии все работает просто прекрасно. это просто проверено. это НЕ универсальное решение. И, например, проектируя абсолютно новую систему, я бы врядли использовал такой подход. Но таки он имеет право на жизнь.
я просто противник абсолютизма. есть у триггеров ниша своя...

а, ну дык етить. работает и ладно. но права на жизнь он всё же не имеет
даже как минимум с экономической точки зрения. кто эти триггеры сопровождать будет?
и зачем козе баян, если без триггеров задачи прекрасно решаются?

задача реашается, если мы проектируем новую систему.
но. когда вот так:
есть база (базы) (MS SQL Server, никаких ораклов не будет никогда.) .
есть набор самых разных (технологически) приложений, у которых общее только - они подключаютсяк серверу БД чз вин аутентификацию.
нужно отслеживать изменения в некоторых таблицах.
что бы вы делали?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780331
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
триггеры:



а чо? вроде стоит
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780332
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!я выше ответил :)
Пойми, триггер - это костыль в архитектуре. Особенно, если бизнес логика у нас решается на стороне сервера приложений (только давай не будем поднимать тему по 2-tier ), как это делают нормальные пацаны :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780333
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttтриггеры:



а чо? вроде стоит

В точку
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780334
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а кто-то с datawarehouse-ами работал?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780335
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Алексей Кпропущено...
А я не про Вас, а про " кого-то другого ". :-)

А она не модифицировалась (таблица) она сразу с этим полем создаваласьНу не у всех такое поле есть.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780336
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!задача реашается, если мы проектируем новую систему.
но. когда вот так:
есть база (базы) (MS SQL Server, никаких ораклов не будет никогда.) .
есть набор самых разных (технологически) приложений, у которых общее только - они подключаютсяк серверу БД чз вин аутентификацию.
нужно отслеживать изменения в некоторых таблицах.
что бы вы делали?

я бы запилил веб-сервис, через которую приложения подключались бы.
никаких прямых подключений к БД.

если же уже всё как-то сбито и работает (см. картинко выше), то лучше ничего не трогать. пусть как-нибудь доживает свой век.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780338
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!сегодня, пятницо, кстати.
МСУ, какдила? :) я давно не заходил сюда...
Норм, виныч :) Вот, всё копашимся тут как видишь )) Как бизнес?
та никак... все наемник. недавно работу поменял вот
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780340
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!я выше ответил :)
Пойми, триггер - это костыль в архитектуре. Особенно, если бизнес логика у нас решается на стороне сервера приложений (только давай не будем поднимать тему по 2-tier ), как это делают нормальные пацаны :)
костыль. поэтому я и говорил, что оно и к бизнес логике не относится..
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780341
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!а кто-то с datawarehouse-ами работал?
Конечно. Какое они имеют отношение к теме?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780342
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttwinsky!задача реашается, если мы проектируем новую систему.
но. когда вот так:
есть база (базы) (MS SQL Server, никаких ораклов не будет никогда.) .
есть набор самых разных (технологически) приложений, у которых общее только - они подключаютсяк серверу БД чз вин аутентификацию.
нужно отслеживать изменения в некоторых таблицах.
что бы вы делали?

я бы запилил веб-сервис, через которую приложения подключались бы.
никаких прямых подключений к БД.

если же уже всё как-то сбито и работает (см. картинко выше), то лучше ничего не трогать. пусть как-нибудь доживает свой век.
приложения, некоторые, по крайней мере вы менять не можете, забыл сказать.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780343
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!МСУпропущено...

Норм, виныч :) Вот, всё копашимся тут как видишь )) Как бизнес?
та никак... все наемник. недавно работу поменял вот
Так а где сейчас крутишься?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780344
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНу какая разница, как строится цепочка транзакций, привязанных к документу, через явную ссылку DocHistoryID, или через DocID + LogDate.
Большая разница. Лишнее поле :) Ну так ты и не рассказал, почему у меня прошлое значение нельзя узнать. Можно! ))Ну его съест чистильщик лога. :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780345
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!приложения, некоторые, по крайней мере вы менять не можете, забыл сказать.

ну что ж делать. видимо для таких случаев триггеры и были созданы. 1-ое травматологическое отделение. вызывается команда триггеров
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780347
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!, датаварехаусы, кубы, меры, процессинг, ETL, всякие SSIS и прочие шалости - это отдельная тема. Которая, кстати, стоит особняком от продуктива. Там свои какашки. Вот пусть там и накручивают грабли уважаемые DBD :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780348
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

Большая разница. Лишнее поле :) Ну так ты и не рассказал, почему у меня прошлое значение нельзя узнать. Можно! ))Ну его съест чистильщик лога. :-)
Он съест неактуальные транзакции. А аткуальная всегда останится. Одна. Если одна, то нельзя есть!
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780349
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!а кто-то с datawarehouse-ами работал?
Конечно. Какое они имеют отношение к теме?

вот предположим такое:

есть некоторые транз. данные, ну например продажи. могут добавлятся/менятся/удалятся.
нужно инкрементально апдейтить олап куб, т.е. скармливать ему на входе только дельту изменений. кто как решает подобную задачу?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780350
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!, датаварехаусы, кубы, меры, процессинг, ETL, всякие SSIS и прочие шалости - это отдельная тема. Которая, кстати, стоит особняком от продуктива. Там свои какашки. Вот пусть там и накручивают грабли уважаемые DBD :) та да, сейчас вспомнилось....
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780351
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!пропущено...

та никак... все наемник. недавно работу поменял вот
Так а где сейчас крутишься?
у одного из наших крупных аутсорсеров. не хочу конкретно называть... проект - страшное уг. скучно.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780352
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!есть некоторые транз. данные, ну например продажи. могут добавлятся/менятся/удалятся.
нужно инкрементально апдейтить олап куб, т.е. скармливать ему на входе только дельту изменений. кто как решает подобную задачу?
Крайне неверно связывать датаварехаус с боевой базой. Нужно всегда понимать, что dwh - это процессинг на отложенных данных. Никакой прямой связи с оперативными данными. Никакой! За такие связи сразу на гиляку! :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780355
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!МСУпропущено...

Так а где сейчас крутишься?
у одного из наших крупных аутсорсеров. не хочу конкретно называть... проект - страшное уг. скучно.
Так ты в айти? Вроде ж распрощался с ним или снова за старое?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780357
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а какже наш любимый ROLAP для оперативной отчётности?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780359
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Ну его съест чистильщик лога. :-)
Он съест неактуальные транзакции. А аткуальная всегда останится. Одна. Если одна, то нельзя есть! А если две? Первая отображается нормально, вторая без OldValue, потому что третья съедена. Такие дела...
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780360
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!есть некоторые транз. данные, ну например продажи. могут добавлятся/менятся/удалятся.
нужно инкрементально апдейтить олап куб, т.е. скармливать ему на входе только дельту изменений. кто как решает подобную задачу?
Крайне неверно связывать датаварехаус с боевой базой. Нужно всегда понимать, что dwh - это процессинг на отложенных данных. Никакой прямой связи с оперативными данными. Никакой! За такие связи сразу на гиляку! :)
да. но если таки нужно получать данные в олапе оперативно, ну с отставанием в минуты. вот надо и все. как бустро получить слепок последних изменений. не зря ведь инкрементальный апдейт вообще есть..
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780361
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!пропущено...

у одного из наших крупных аутсорсеров. не хочу конкретно называть... проект - страшное уг. скучно.
Так ты в айти? Вроде ж распрощался с ним или снова за старое?
куда я денусь. IT forever
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780363
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneа какже наш любимый ROLAP для оперативной отчётности?
Так роллап и так смотрит на боевую базу. Бери и радуйся.

Алексей КА если две? Первая отображается нормально, вторая без OldValue, потому что третья съедена. Такие дела...
Не понял тебя. Предыдущее значение - это та единственная транзакция с максимальной датой. Появится вторая транзакция, через неделю отвалится первая. И вторая будет первой. И единственной. Какие проблемы?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780364
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!да. но если таки нужно получать данные в олапе оперативно, ну с отставанием в минуты. вот надо и все. как бустро получить слепок последних изменений. не зря ведь инкрементальный апдейт вообще есть..
В олапе? Оперативно? :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780366
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!куда я денусь. IT forever
А позиция? )
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780374
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запутали совсем .......

дали бы посмотреть как вы сохраняете эти изменения.

А то что то я слабо представляю. например для MVC.

1. создал экземпляр какой то модели.
2. передал во вью, пользователь что то делал отправил обратно
3. сохраняю, вытягиваю из базы(контекста) таблицу куда писать буду, с модели проставляю значения полям потом context.SaveChanges();


где логировать начинать ?
где сравнивать старое с новым ?
копию модели данных создавать нужно ?

в триггере как понятней
Код: sql
1.
2.
3.
4.
if (update(Phone) and (@New_Phone<> @Old_Phone or (@Old_Phone is null and @New_Phone is not null) or (@New_Phone is null and @old_Phone is not null)))
BEGIN
insert into LogRequestFields (LogID,FieldName,OldValue,NewValue) values (@LogID,'Phone',@Old_Phone, @New_Phone)
END
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780375
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!да. но если таки нужно получать данные в олапе оперативно, ну с отставанием в минуты. вот надо и все. как бустро получить слепок последних изменений. не зря ведь инкрементальный апдейт вообще есть..
В олапе? Оперативно? :)
например:
есть запись (sales)
добавили:
SomeKey, 10
потом поменяли
SomeKey, 20
потому удалили


если представить все изенения в виде 'лога'

SomeKey, 10
SomeKey, 10
SomeKye, -20
для инкрементально апдейта куба используется вот этот набор.
вопрос - кто каким способом формирует подобные наборы для инкрементального апдейта?
наверное этот вопрос нужно задавать в профильной ветке.

ЗЫ ROLAP - зла, поверьте.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780378
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУKonst_Oneа какже наш любимый ROLAP для оперативной отчётности?
Так роллап и так смотрит на боевую базу. Бери и радуйся.

Алексей КА если две? Первая отображается нормально, вторая без OldValue, потому что третья съедена. Такие дела...
Не понял тебя. Предыдущее значение - это та единственная транзакция с максимальной датой. Появится вторая транзакция, через неделю отвалится первая. И вторая будет первой. И единственной. Какие проблемы?OldValue в ПРЕДЫДУЩЕЙ!!!
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select
    Value,
    (
        select top 1
            Value
        from Log l2
        where
            l2.DocID = l1.DocID and
            l2.LogDate < l1.LogDate
        order by l2.LogDate
    ) OldValue
from Log l1
where l1.LogDate between @From and @To
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780379
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!да. но если таки нужно получать данные в олапе оперативно, ну с отставанием в минуты. вот надо и все. как бустро получить слепок последних изменений. не зря ведь инкрементальный апдейт вообще есть..
В олапе? Оперативно? :)
ага. вот вы не поверите. но у меня работает, ну не у меня уже, но продолжает работать система где макс. отставание - 10 минут. фактическая таблица - сотни миллионов записей :)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780381
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!для инкрементально апдейта куба используется вот этот набор.
Я думаю такие задачи нужно решать только отложенно с большим временем синхронизации, скажем, сутки.

winsky!ЗЫ ROLAP - зла, поверьте.
Ну так ты по сути этого и просишь.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780382
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!МСУпропущено...

В олапе? Оперативно? :)
например:
есть запись (sales)
добавили:
SomeKey, 10
потом поменяли
SomeKey, 20
потому удалили


если представить все изенения в виде 'лога'

SomeKey, 10
SomeKey, 10
SomeKye, -20
для инкрементально апдейта куба используется вот этот набор.
вопрос - кто каким способом формирует подобные наборы для инкрементального апдейта?
наверное этот вопрос нужно задавать в профильной ветке.

ЗЫ ROLAP - зла, поверьте.

согласен, вопросы лучше в олап-ветке. я уж давно с dwh не работал
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780383
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КOldValue в ПРЕДЫДУЩЕЙ!!!
Прошлая транзакция неудаляема. "Транзакция" - это и есть предыдущее значение. Самое свежее и актуальное.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780386
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwinsky!для инкрементально апдейта куба используется вот этот набор.
Я думаю такие задачи нужно решать только отложенно с большим временем синхронизации, скажем, сутки.

winsky!ЗЫ ROLAP - зла, поверьте.
Ну так ты по сути этого и просишь.
бизнес такой бизнес, говорит, не хочу сутки ждать. вот пришлось выкручиваться. я просто к чему, там просто наборы формировались именно триггерами.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780390
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!МСУпропущено...

Я думаю такие задачи нужно решать только отложенно с большим временем синхронизации, скажем, сутки.

пропущено...

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

интересное решение. да, бизнес иногда отжигает. я помню нам как-то вообще пришлось rolap на oltp-базу настраивать, чтобы витрины для руководства выводить , благо всё было на оракле
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780401
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КOldValue в ПРЕДЫДУЩЕЙ!!!
Прошлая транзакция неудаляема. "Транзакция" - это и есть предыдущее значение. Самое свежее и актуальное.Ну я же захочу посмотреть всю историю транзакций по документу. В последней транзакции OldValue не будет.

NewValue OldValue1 22 33 44[удалено]
Отсортировано по LogDate в обратном порядке.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780405
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

Прошлая транзакция неудаляема. "Транзакция" - это и есть предыдущее значение. Самое свежее и актуальное.Ну я же захочу посмотреть всю историю транзакций по документу. В последней транзакции OldValue не будет.

NewValue OldValue1 22 33 44[удалено]
Отсортировано по LogDate в обратном порядке.

а где NewValue[удалено] ??
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780407
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Алексей Кпропущено...
Ну я же захочу посмотреть всю историю транзакций по документу. В последней транзакции OldValue не будет.

NewValue OldValue1 22 33 44[удалено]
Отсортировано по LogDate в обратном порядке.

а где NewValue[удалено] ?? sql
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780415
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Не понял ничего, наверно тяпница..... или неосилил


Не вижу в этом логе момент когда значение было, а потом удалили ....
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780419
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Алексей К,

Не понял ничего, наверно тяпница..... или неосилил


Не вижу в этом логе момент когда значение было, а потом удалили ....NULL в OldValue будет вместо 'удалено', если вопрос в этом.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780460
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!а кто-то с datawarehouse-ами работал?
я
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780537
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAndrey1306Алексей К,

Не понял ничего, наверно тяпница..... или неосилил


Не вижу в этом логе момент когда значение было, а потом удалили ....NULL в OldValue будет вместо 'удалено', если вопрос в этом.

А должен быть в NewValue !!!
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780560
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилАлексей КА если логика в хранимых процедурах, то триггера удобны.
то они не нужны
+1 Снова буря в стакане
Если весь CRUD идет через хранимки, то триггеры, ограничители и прочие дефаулты нафиг не нужны. Только путаницу создают.
Взялся писать на хранимках - пиши все в хранимках! Если будет что-то глючить - будешь точно знать что глюк в конкретной хранимке, и не будешь рыскать по всему скулю в поисках где что отваливается.
Если приложение инсертит/апдейтит прямо в таблицы, то здесь два варианта, или оставляем всю историю на совести разраба приложения или вешаем триггер. ИМХО вариант с триггером нужно рассмативать в последнюю очередь, если разработку БД и приложения ведут разные спецы, одни не умеют писать хранимки, а вторые явные апологеты ORM
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780569
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!нужно инкрементально апдейтить олап куб, т.е. скармливать ему на входе только дельту изменений. кто как решает подобную задачу?
Ммм... можно подробней? Нафига олапу инкрементальные данные? Продажи или есть или нет, если вчера продали а сегодня оказалось что нет, то это хня какая-то а не аналитика... Или Вы о чем?
Я так ваще всегда делаю отдельную базу(базы), сливаю туда всю нужную инфу и затем начинаю крутить кубы. Правда пока с небольшими объемами данных работаю.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780574
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIИМХО вариант с триггером нужно рассмативать в последнюю очередь, если разработку БД и приложения ведут разные спецы, одни не умеют писать хранимки, а вторые явные апологеты ORM
Или еще вариант - одну таблицу инсертят/апдейтят 100500 хранимок, при этом выполняется один и тот же кусок логики, дублировать код в хранимках не есть хорошо, тогда можно повесить триггер. Но на практике такое редко встретишь.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780637
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Алексей Кпропущено...
NULL в OldValue будет вместо 'удалено', если вопрос в этом.

А должен быть в NewValue !!!Мы обсуждаем эту реализацию.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780639
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Алексей Кпропущено...
NULL в OldValue будет вместо 'удалено', если вопрос в этом.

А должен быть в NewValue !!!Стоит вопрос, хранить OldValue в информации о текущей транзакции, или брать из предыдущей.
Код: sql
1.
create table Log (ID int primary key, DocID int, LogDate datetime, Value int)

vs
Код: sql
1.
create table Log (ID int primary key, DocID int, LogDate datetime, Value int, OldValue int)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780661
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСтоит вопрос, хранить OldValue в информации о текущей транзакции, или брать из предыдущей.
Код: sql
1.
create table Log (ID int primary key, DocID int, LogDate datetime, Value int)

vs
Код: sql
1.
create table Log (ID int primary key, DocID int, LogDate datetime, Value int, OldValue int)



Ну хорошо, давай отталкиваться от того, что никакие чистильщики ничего не удаляют. При достижении определенного объема, история "отсоединяется" и заводится новая. Отсоединение трактуй как хочешь - новая таблица DocumentsHistory_yyyyMMdd, своп на диск в виде файла, отправка данных почтовыми голубями.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38780721
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КСтоит вопрос, хранить OldValue в информации о текущей транзакции, или брать из предыдущей.
Код: sql
1.
create table Log (ID int primary key, DocID int, LogDate datetime, Value int)

vs
Код: sql
1.
create table Log (ID int primary key, DocID int, LogDate datetime, Value int, OldValue int)



Ну хорошо, давай отталкиваться от того, что никакие чистильщики ничего не удаляют. При достижении определенного объема, история "отсоединяется" и заводится новая. Отсоединение трактуй как хочешь - новая таблица DocumentsHistory_yyyyMMdd, своп на диск в виде файла, отправка данных почтовыми голубями.Ну назови очистку отсоединением, это ничего не меняет. Всегда будет последняя транзакция, не имеющая предыдущей. :-)

Я не пойму, о чём мы спорим, места на диске мало что ли? :-)
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781310
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу назови очистку отсоединением, это ничего не меняет. Всегда будет последняя транзакция, не имеющая предыдущей. :-)
Предыдущую всегда можно определить через отсоединенную. Мы ж ничего не удаляем.

Алексей КЯ не пойму, о чём мы спорим, места на диске мало что ли? :-)
Не в этом проблема. Проблема в дублировании полей. Избыточность поди.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781392
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМы ж ничего не удаляем.Ну а мы удаляем. Что, мы теперь не люди что ли? :-)
МСУАлексей КЯ не пойму, о чём мы спорим, места на диске мало что ли? :-)
Не в этом проблема. Проблема в дублировании полей. Избыточность поди.Таблица неизменяемая, избыточность ей сильно не повредит. Зато проблем меньше: не надо париться по поводу удаления, одним join-ом меньше.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781448
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУМы ж ничего не удаляем.Ну а мы удаляем. Что, мы теперь не люди что ли? :-)
Меня удивляют "люди", которые преднамеренно удаляют записи, а потом жалуются, что информация-то, оказывается, похерилась!

Алексей КТаблица неизменяемая, избыточность ей сильно не повредит. Зато проблем меньше: не надо париться по поводу удаления, одним join-ом меньше.
Тут палка о двух концах :) Простота хранения и извлечения vs избыточность и прочие бла-бла из 3НФ. Против аргументированной денормализации никогда ничего не имел против, так что я не запрещаю тебе логировать Value и OldValue. Но и ты имей совесть и не наезжай на иерархию дат, это же рабочий способ!
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781538
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНо и ты имей совесть и не наезжай на иерархию дат, это же рабочий способ! Ну я же сразу сказал, что у меня сейчас работает такое решение, и оно мне не нравится. Это истина, проверенная практикой!
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781563
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIwinsky!нужно инкрементально апдейтить олап куб, т.е. скармливать ему на входе только дельту изменений. кто как решает подобную задачу?
Ммм... можно подробней? Нафига олапу инкрементальные данные? Продажи или есть или нет, если вчера продали а сегодня оказалось что нет, то это хня какая-то а не аналитика... Или Вы о чем?
Я так ваще всегда делаю отдельную базу(базы), сливаю туда всю нужную инфу и затем начинаю крутить кубы. Правда пока с небольшими объемами данных работаю.
не вдаваясь в подробности - хня или не хня :). но: если у вас сотни миллионов записей в таблице фактов, то процессинг такого куба в любом случае может занять неопределенно долгое время. поэтому выхода здесь может быть два: разбить куб на партишины, либо инкрементальный апдейт куба.
а "нафига олапу инкрементеальные данные" - вы спросите ребят из Microsoft, которые механизм инкрементального апдейта сделали в кубах
ЗЫ: это все страшный оффтоп. если кому интересно пожевать эту тему - может создать соотв. ветку в проф. форуме. к сожалению, у меня есть желание, но нет достаточного количества времени говорить на эту тему :(
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781671
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MOLAP вообще в принципе не имеет большого практического смысла без наличия инкрементального апдейта!!!
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781677
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakMOLAP вообще в принципе не имеет большого практического смысла без наличия инкрементального апдейта!!!
спорное утверждение. почему все так любят крайности?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781684
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!Ivan DurakMOLAP вообще в принципе не имеет большого практического смысла без наличия инкрементального апдейта!!!
спорное утверждение. почему все так любят крайности?
практика. ROLAP наступает на всех фронтах. Всем нужен онлайн!! С MPP базами агрегирование на лету уже не так страшно. С другого фланга наступают in-memory кубы.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781706
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakwinsky!пропущено...

спорное утверждение. почему все так любят крайности?
практика. ROLAP наступает на всех фронтах. Всем нужен онлайн!! С MPP базами агрегирование на лету уже не так страшно. С другого фланга наступают in-memory кубы.
MPP - непомните, что это?
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781731
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.mpp.org Marijuana Policy Project
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781749
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!Ivan Durakпропущено...

практика. ROLAP наступает на всех фронтах. Всем нужен онлайн!! С MPP базами агрегирование на лету уже не так страшно. С другого фланга наступают in-memory кубы.
MPP - непомните, что это?
https://ru.wikipedia.org/wiki/Массово-параллельная_архитектура
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781752
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там все Terradata, Netezza, Vertica, Greenlum и прочие Hana.
...
Рейтинг: 0 / 0
способы записи в таблицу историю
    #38781921
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakwinsky!пропущено...

MPP - непомните, что это?
https://ru.wikipedia.org/wiki/Массово-параллельная_архитектура
ясно.
ну, то, то решение, о котором я говорю, начало реализовываться еще лет 5-6 назад...
...
Рейтинг: 0 / 0
220 сообщений из 220, показаны все 9 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / способы записи в таблицу историю
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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