powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / способы записи в таблицу историю
25 сообщений из 220, страница 2 из 9
способы записи в таблицу историю
    #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
25 сообщений из 220, страница 2 из 9
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / способы записи в таблицу историю
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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