Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
задача следующая: создавать копии при каждом исменении записи в таблице. т. е. есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись. 1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю. 2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю. хотелось бы услышать за и против каждого решения. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:11 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Триггеры зло, только второй способ. Ну и вдобавок, хранить предыдущее значение не имеет смысла, мы не него всегда сможем выйти. То есть имеем такую структуру: 1. Documents(DocumentId,Value1,Value2,Value3,...) 2. DocumentsHistory(DocumentId,Date,UserId,Value1,Value2,Value3,...) Соответственно, по DocumentId мы можем поднять всю историю. Надобность хранить предыдущие значения (типа Value1Old,Value2Old,Value3Old) отпадает сама собой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:29 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
astepan, добавь к опросу ещё вариант обновления хранимой процедурой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:29 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Триггеры зло - можно пояснить почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:31 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Изопропил, а запускать процедуру ти имеешь ввиду откуда из кода или из триггера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:34 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
astepan, я к этому варианту не призываю - просто демострирую ещё одну возможность, но ни в коем случае не из триггера триггер - это костыль, последний шанс(чужое приложение, потеря исходников и т д) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:39 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
astepanТриггеры зло - можно пояснить почему? Просто верь на слово ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:43 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУ, Поверить то я могу, :) но хотелось бы услышать более веские причины ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:45 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУastepanТриггеры зло - можно пояснить почему? Просто верь на слово чтоб убедиться достаточно разок на грабли наступить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:46 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
astepanно хотелось бы услышать более веские причины Да они банальны, как перья курицы. Выше дед Изопропил разжевал на пальцах. Изопропилчтоб убедиться достаточно разок на грабли наступить До некоторых, порой, не с первого раза доходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:51 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУ, Хочешь выразить свой ум урод?! наверное самый "умный" в классе?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 22:50 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Поддерживаю предыдущих ораторов - триггеры - зло. Причину объяснить действительно непросто. Ну вот ты купил в магазине хлеб, принес домой, а в сумке вместо хлеба пчела или кусок навоза. Как-то вот так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 22:59 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Хотелось-бы предложить делать вставку IDENTITY тоже из приложения, как МАХ(ID) + 1, раз так не любим триггеры. Нарисуем функцию для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 23:05 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Relic HunterХотелось-бы предложить делать вставку IDENTITY тоже из приложения, как МАХ(ID) + 1, раз так не любим триггеры. Нарисуем функцию для этого. что за бред? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 23:09 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Изопропил, А вы думаете IDENTITY святым духом вставляется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 23:14 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Relic HunterИзопропил, А вы думаете IDENTITY святым духом вставляется? приращение идентити не вызывает блокировки записей в таблице, при откате транзакции значение идентити не откатывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 23:21 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
ИзопропилRelic HunterИзопропил, А вы думаете IDENTITY святым духом вставляется? приращение идентити не вызывает блокировки записей в таблице, при откате транзакции значение идентити не откатывается Разве будет блокировка таблицы если в тригере inserted взять в другую таблицу вставить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 23:36 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Встроенный механизм Identity никак не является пользовательским механизмом триггеров, зачем вообще обсуждать этот вброс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 23:44 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
astepanМСУ, Хочешь выразить свой ум урод?! наверное самый "умный" в классе?! Маленькая упоротая обезьянка, ты о чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 09:20 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
astepanзадача следующая: создавать копии при каждом исменении записи в таблице. т. е. есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись. 1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю. 2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю. хотелось бы услышать за и против каждого решения. спасибо. в enterprice ms sql версии есть capture data source механизм для этого - лучше его использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 10:01 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
monstrUastepanзадача следующая: создавать копии при каждом исменении записи в таблице. т. е. есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись. 1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю. 2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю. хотелось бы услышать за и против каждого решения. спасибо. в enterprice ms sql версии есть capture data source механизм для этого - лучше его использоватьИ чем он лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 10:02 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
skyANAmonstrUпропущено... в enterprice ms sql версии есть capture data source механизм для этого - лучше его использоватьИ чем он лучше? тем что там уже все реализовано и протестировано - можно просто пользоваться. наворочена большая гора всего - и триггеры, и service broker и еще черт знает что. не надо изобретать изобретения, которые уже сделаны до вас и протестированы - минимум напишите что-то похожее, а скорее всего по функционалу будет победнее. хранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 10:27 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
monstrUнаворочена большая гора всего Просто эпический аргумент, что сказать. Зачем мне экскаватор, если требуются только плоскогубцы? monstrUи триггеры На помойку. monstrUи service broker Тем более на помойку это убожество. monstrUи еще черт знает что. А это уж точно и даром не нужно. monstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас. Хранение истории - это тупая табличка с перечислением нужных полей в разрезе сущности, даты и пользователя. Проще даже нельзя придумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 11:07 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
monstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас. давай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 11:17 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttmonstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас. давай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру. 1. change data capture http://msdn.microsoft.com/en-us/library/cc645937.aspx - если писать правильно 2. разве я собирался что-то куда-то записывать? я просто написал что есть такой пакет. если вас устраивает - можно пользоваться, нет - ну и нет 3. упаси боже кого учить - здоровье дороже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 12:18 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
monstrU1. change data capture http://msdn.microsoft.com/en-us/library/cc645937.aspx - если писать правильно 2. разве я собирался что-то куда-то записывать? я просто написал что есть такой пакет. если вас устраивает - можно пользоваться, нет - ну и нет 3. упаси боже кого учить - здоровье дороже. Если надо просто хранить историю изменений «на всякий», то можно и так. Если же это часть бизнеса (например, требуется возможность интенсивной работы с этой истории на фронте), эти погремушки можно выкинуть на помойку. Теперь другой вопрос, сам пользовался этим пакетом? Или как обычно, «услышал звон»? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 12:22 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
monstrUskyANAпропущено... И чем он лучше? тем что там уже все реализовано и протестировано - можно просто пользоваться. наворочена большая гора всего - и триггеры, и service broker и еще черт знает что. не надо изобретать изобретения, которые уже сделаны до вас и протестированы - минимум напишите что-то похожее, а скорее всего по функционалу будет победнее. хранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.Какие-то общие слова. А конкретный пример есть? Вот например каждый противник триггеров наверняка может вспомнить ситуацию, когда в первый раз не мог понять, какого фига из плижения ушли одни данные, а в таблице в итоге другие. И как долго искал тот самый, с**а, триггер в куче другого кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 12:43 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttmonstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас. давай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру. В таблице есть поле ModifyUserID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 12:44 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVostt, Например . сори что вмешался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 12:45 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306hVosttпропущено... давай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру. В таблице есть поле ModifyUserIDИ что? Прочитайте внимательно вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 12:46 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
skyANAКакие-то общие слова. А конкретный пример есть? разница механизма CDC и триггеров только в том, что триггеры - создают нагрузку на рабочую БД (даже если они будут "вставлять" историю во внешнею) cdc - подключается к логу транзакций, и если развернут на отдельном сервере в другой БД, то практически не увеличивает нагрузку на рабочую БД. тем самым CDC лучше использовать в высоконагруженных системах, там где быстродействие критично. есть особеность, если триггер можно сделать синхронным, то cdc всегда асинхронный и работает с небольшой задержкой (более того его можно приостанавливать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:06 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
skyANAкакого фига из плижения ушли одни данные, а в таблице в итоге другие. запись не модифицируется иногда - ну никак а всё просто - текстовое поле расширили, а про историю, куда триггер пишет - позабыли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:07 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttдавай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру. Предложу простейший вариант: в аудируемую таблицу добавляется служебная колонка LastModifiedUser (пользователь последний внесший изменение в таблицу) - заполняется на уровне бизнес логики (у вас C#), при ее наличии получить пользователя в триггере или cdc - элементарно. Это плохой вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:12 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttmonstrU1. change data capture http://msdn.microsoft.com/en-us/library/cc645937.aspx - если писать правильно 2. разве я собирался что-то куда-то записывать? я просто написал что есть такой пакет. если вас устраивает - можно пользоваться, нет - ну и нет 3. упаси боже кого учить - здоровье дороже. Если надо просто хранить историю изменений «на всякий», то можно и так. Если же это часть бизнеса (например, требуется возможность интенсивной работы с этой истории на фронте), эти погремушки можно выкинуть на помойку. Теперь другой вопрос, сам пользовался этим пакетом? Или как обычно, «услышал звон»? Если это часть бизнеса - лучше всего именно CDC и использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:20 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
skyANA, При апдейте в апликейшене, в это поле пишется айди пользователя, таким образом в истории сформированой триггером имеем историю изменений этого поля . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:22 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306skyANA, При апдейте в апликейшене, в это поле пишется айди пользователя, таким образом в истории сформированой триггером имеем историю изменений этого поля . ну и вот тоже самое товарищъhVosttдавай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру. Предложу простейший вариант: в аудируемую таблицу добавляется служебная колонка LastModifiedUser (пользователь последний внесший изменение в таблицу) - заполняется на уровне бизнес логики (у вас C#), при ее наличии получить пользователя в триггере или cdc - элементарно. Это плохой вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:26 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУТриггеры зло, только второй способ. Ну и вдобавок, хранить предыдущее значение не имеет смысла, мы не него всегда сможем выйти. То есть имеем такую структуру: 1. Documents(DocumentId,Value1,Value2,Value3,...) 2. DocumentsHistory(DocumentId,Date,UserId,Value1,Value2,Value3,...) Соответственно, по DocumentId мы можем поднять всю историю. Надобность хранить предыдущие значения (типа Value1Old,Value2Old,Value3Old) отпадает сама собой.OldValue таки лучше хранить. Из таблицы DocumentsHistory старые записи обычно удаляются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:33 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Изопропила всё просто - текстовое поле расширили, а про историю, куда триггер пишет - позабылиДля хранения лога в общем случае надо использовать EAV с типом данных nvarchar(max). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:37 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
любопытно. почему триггеры зло - можно услышать внятное объяснение? особенно в рамках этой задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:52 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!любопытно. почему триггеры зло - можно услышать внятное объяснение? особенно в рамках этой задачи?логично этот вопрос задать в ветке SQL-сервер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:58 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Shocker.Prowinsky!любопытно. почему триггеры зло - можно услышать внятное объяснение? особенно в рамках этой задачи?логично этот вопрос задать в ветке SQL-сервер наверное. задайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:02 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
товарищъskyANAКакие-то общие слова. А конкретный пример есть? разница механизма CDC и триггеров только в том, что триггеры - создают нагрузку на рабочую БД (даже если они будут "вставлять" историю во внешнею) cdc - подключается к логу транзакций, и если развернут на отдельном сервере в другой БД, то практически не увеличивает нагрузку на рабочую БД. тем самым CDC лучше использовать в высоконагруженных системах, там где быстродействие критично. есть особеность, если триггер можно сделать синхронным, то cdc всегда асинхронный и работает с небольшой задержкой (более того его можно приостанавливать) оно должно быть ну очень критичным, поскольку триггеры добавляющие что-то во "внешнюю", создают очень небольшую нагрузку. а вот если говорить о стоимости реализации и поддержки - триггеры дешевле как минимум в разы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:05 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
ИзопропилskyANAкакого фига из плижения ушли одни данные, а в таблице в итоге другие. запись не модифицируется иногда - ну никак Чего? Я не писал что приложения выполняет прямой INSERT в таблицу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:05 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306skyANA, При апдейте в апликейшене, в это поле пишется айди пользователя, таким образом в истории сформированой триггером имеем историю изменений этого поля .Вот теперь понятно. Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:07 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!наверное. задайте.А мне не нужно, я уже попрыгал по этим граблям. Я использую триггеры в двух случаях: - заплатки к старой базе (которая вообще на MSSQL перетащена из Аксесса) - временная заплатка, для нормальной работы предыдущей версии клиентского приложения одновременно с новой (пока неспешно идет апгрейд пользователей до новой версии) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:13 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!товарищъпропущено... разница механизма CDC и триггеров только в том, что триггеры - создают нагрузку на рабочую БД (даже если они будут "вставлять" историю во внешнею) cdc - подключается к логу транзакций, и если развернут на отдельном сервере в другой БД, то практически не увеличивает нагрузку на рабочую БД. тем самым CDC лучше использовать в высоконагруженных системах, там где быстродействие критично. есть особеность, если триггер можно сделать синхронным, то cdc всегда асинхронный и работает с небольшой задержкой (более того его можно приостанавливать) оно должно быть ну очень критичным, поскольку триггеры добавляющие что-то во "внешнюю", создают очень небольшую нагрузку. а вот если говорить о стоимости реализации и поддержки - триггеры дешевле как минимум в разы наоборот. Поддержка тригерров - очень трудоемка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:21 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
skyANAЧего? Я не писал что приложения выполняет прямой INSERT в таблицу :) это я пример эффекта от триггера приводил - запомнил навсегда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:25 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!любопытно. почему триггеры зло - можно услышать внятное объяснение? особенно в рамках этой задачи?Трёхзвенщикам триггера неудобны, из них нет доступа к прикладной логике сервера приложения. Пример был приведён выше: нет доступа к контексту безопасности пользователя сервера приложений. Это же касается и SP, View, UDF и т. п. Можно извратиться через временную таблицу, но зачем? А если логика в хранимых процедурах, то триггера удобны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КА если логика в хранимых процедурах, то триггера удобны. то они не нужны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:32 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
ИзопропилАлексей КА если логика в хранимых процедурах, то триггера удобны. то они не нужны Хранимые процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:34 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
astepanзадача следующая: создавать копии при каждом исменении записи в таблице. т. е. есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись. 1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю. 2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю. хотелось бы услышать за и против каждого решения. спасибо.3. Прикрутить к Entity Framework DbContext универсальный механизм логирования любых объектов контекста БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:36 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
ИзопропилАлексей КА если логика в хранимых процедурах, то триггера удобны. то они не нужны +100500 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:07 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КOldValue таки лучше хранить. Из таблицы DocumentsHistory старые записи обычно удаляются. Это будет избыточно. Если решили удалить данные из DocumentsHistory, значит не нужна история. А если не нужна история, то какие могут быть вопросы к предыдущим значениям? :) Алексей КДля хранения лога в общем случае надо использовать EAV с типом данных nvarchar(max). Вот не нужны тут никакие универсальные маханихмы. Типы полей истории должны строго соответствовать оригиналам. Обобщение - зло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:11 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей КOldValue таки лучше хранить. Из таблицы DocumentsHistory старые записи обычно удаляются. Это будет избыточно. Если решили удалить данные из DocumentsHistory, значит не нужна история. А если не нужна история, то какие могут быть вопросы к предыдущим значениям? :)Ну не всё же удаляется. Удаляются записи старее, например, 7 суток. МСУАлексей КДля хранения лога в общем случае надо использовать EAV с типом данных nvarchar(max). Вот не нужны тут никакие универсальные маханихмы. Типы полей истории должны строго соответствовать оригиналам. Обобщение - зло.Не зло. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:18 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Shocker.Prowinsky!наверное. задайте.А мне не нужно, я уже попрыгал по этим граблям. Я использую триггеры в двух случаях: - заплатки к старой базе (которая вообще на MSSQL перетащена из Аксесса) - временная заплатка, для нормальной работы предыдущей версии клиентского приложения одновременно с новой (пока неспешно идет апгрейд пользователей до новой версии) и мне не нужно :) меня интересует мнение конкретных мемберов ЭТОЙ ветки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:18 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
я не говорю, что во всех случаях триггеры - идеальное решение. но почему многие считают их АБСОЛЮТНЫМ злом- непонятно, и хотелось бы увидеть аргументов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:20 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
зло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:22 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306В таблице есть поле ModifyUserID ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:24 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!и хотелось бы увидеть аргументов.Это нарушает правила форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:26 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_Oneзло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются set nocount on поставить в триггере это сложно, да... Какие там ещё особенности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:27 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_Oneзло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются в общем - пожалуй соглашусь в сценарии Table -> logTable, где в лог таблицу добавлением пишутся изменения - все до предела просто. у меня где-то даже был скрипт, который для любой таблицы создавал триггеры и таблицу логгирования... это конечно удобно только в сценариях, когда в контексте запроса известен конкретный пользователь. поскольку у меня долгое время для многих решений именно такой сценарий и работал, задача реашалась на ура. поэтому триггеры, они, может и зло, но не абсолютное :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:28 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttAndrey1306В таблице есть поле ModifyUserID ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как? такой себе сценарий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КKonst_Oneзло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются set nocount on поставить в триггере это сложно, да... Какие там ещё особенности? ну некоторые не в курсе , что inserted - это массив строк , например. а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей Кwinsky!и хотелось бы увидеть аргументов.Это нарушает правила форума. ну да. я забыл, отсутствовал какое-то время :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!hVosttпропущено... ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как? такой себе сценарий ну так как, с триггерами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей Ку не всё же удаляется. Удаляются записи старее, например, 7 суток. Ну значит мы всегда будем знать прошлое значение. Зачем его где-то еще хранить? Есть DocumentsHistory с полями истории. Этого 100% достаточно. Алексей КВот не нужны тут никакие универсальные маханихмы. Типы полей истории должны строго соответствовать оригиналам. Обобщение - зло.Не зло. :-)[/quot] Спорщик! ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:31 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!пропущено... такой себе сценарий ну так как, с триггерами? да так же как и везде, есть такое слово Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:31 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_OneАлексей Кпропущено... set nocount on поставить в триггере это сложно, да... Какие там ещё особенности? ну некоторые не в курсе , что inserted - это массив строк , например. а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальныеНу любой инструмент надо сначала изучить, потом использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:32 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей Ку не всё же удаляется. Удаляются записи старее, например, 7 суток. Ну значит мы всегда будем знать прошлое значение. Зачем его где-то еще хранить? Есть DocumentsHistory с полями истории. Этого 100% достаточно.Потому что у меня в настоящее время работает такое решение, и оно мне не нравится. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:34 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_Oneпропущено... ну некоторые не в курсе , что inserted - это массив строк , например. а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальныенекоторые, и даже очень многие, не в курсе, что существует MS SQL Server. не будем его использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:34 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КKonst_Oneпропущено... ну некоторые не в курсе , что inserted - это массив строк , например. а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальныеНу любой инструмент надо сначала изучить, потом использовать. ну так об этом и речь. поэтому для многих (кто не до конца изучил), триггеры - зло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:34 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КМСУпропущено... Ну значит мы всегда будем знать прошлое значение. Зачем его где-то еще хранить? Есть DocumentsHistory с полями истории. Этого 100% достаточно.Потому что у меня в настоящее время работает такое решение, и оно мне не нравится. :-) +100500 у меня, ну уже не у меня, но работает несколько решений достаточно активно использующих описанный мной сценарий - никаких нареканий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:35 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_OneАлексей Кпропущено... Ну любой инструмент надо сначала изучить, потом использовать. ну так об этом и речь. поэтому для многих (кто не до конца изучил), триггеры - зло Согласен. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:36 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttAndrey1306В таблице есть поле ModifyUserID ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как? ну во первых не чего ему там править, а во вторых DEFAULT (suser_sname()) FOR [SrvUserName] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:37 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КПотому что у меня в настоящее время работает такое решение, и оно мне не нравится. :-) Я покажусь бесцеремонным, если спрошу почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:38 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVostt, А если учесть что каждое приложение со своей строкой подключения в базу ходит, то знаем еще и какой приложение "делало" правки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:39 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!hVosttпропущено... ну так как, с триггерами? да так же как и везде, есть такое слово Код: sql 1. и что писать после WHERE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:40 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Самое простое объяснение, почему триггера зло :) Триггер - это бизнес логика на стороне БД. А что такое бизнес логика на стороне БД? Правильно, это дичайшее зло. Исходя из причинно-следственной связи, можем сделать заключение, что триггера пусть и не беспощадное, но эпически отвратительное зло всех зол! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:41 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУСамое простое объяснение, почему триггера зло :) Триггер - это бизнес логика на стороне БД. А что такое бизнес логика на стороне БД? Правильно, это дичайшее зло. Исходя из причинно-следственной связи, можем сделать заключение, что триггера пусть и не беспощадное, но эпически отвратительное зло всех зол! только вот не надо тут в форуме то по ораклу тапками ведь закидают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:42 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУСамое простое объяснение, почему триггера зло :) Триггер - это бизнес логика на стороне БД. А что такое бизнес логика на стороне БД? Правильно, это дичайшее зло. Исходя из причинно-следственной связи, можем сделать заключение, что триггера пусть и не беспощадное, но эпически отвратительное зло всех зол! ) А если это просто логирование и ничего больше ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:42 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_Oneтолько вот не надо тут в форуме то по ораклу тапками ведь закидают Ну так мы не на форуме по ораклу :) Andrey1306) А если это просто логирование и ничего больше ? Да хоть просто пустой код в теле триггера. Расстрел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:45 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306hVosttпропущено... ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как? ну во первых не чего ему там править, а во вторых DEFAULT (suser_sname()) FOR [SrvUserName] ясно. никак триггеры не плохи сами по себе. но если БД пользуется приложение, то оно должно иметь максимальный контроль над изменениями в базе данных. либо все изменяющие запросы 100% переносятся в хранимые процедуры, тогда пжалста, в ином случае в топку триггеры. размазывать логику работы с данными соплями по разным ведомостям -- вполне себе мудацкий подход, для отщепенцев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:45 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306hVostt, А если учесть что каждое приложение со своей строкой подключения в базу ходит, то знаем еще и какой приложение "делало" правки какое еще "каждое"??? я говорил про пользователя приложения , а не пользователя базы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:46 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей КПотому что у меня в настоящее время работает такое решение, и оно мне не нравится. :-) Я покажусь бесцеремонным, если спрошу почему? Запись о последнем изменении документа есть, а о предыдущем изменении нет - предыдущая запись была удалена чистильщиком лога. В результате мы не знаем OldValue. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:47 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttлибо все изменяющие запросы 100% переносятся в хранимые процедуры, тогда пжалста зачем триггеры в этом случае? логика обновления и так локалиована ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:47 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!пропущено... да так же как и везде, есть такое слово Код: sql 1. и что писать после WHERE? Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:48 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttAndrey1306hVostt, А если учесть что каждое приложение со своей строкой подключения в базу ходит, то знаем еще и какой приложение "делало" правки какое еще "каждое"??? я говорил про пользователя приложения , а не пользователя базы данных. ну в теории, несколько приложений, десктоп, веб (или их даже не по одной штуке - несколько) работают с одной базой данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:48 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУЗа триггера к стенке и без суда и следствия. а есть реальные аргументы, ну правда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:49 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУСамое простое объяснение, почему триггера зло :) Триггер - это бизнес логика на стороне БД. А что такое бизнес логика на стороне БД? Правильно, это дичайшее зло. Исходя из причинно-следственной связи, можем сделать заключение, что триггера пусть и не беспощадное, но эпически отвратительное зло всех зол! Эльф Баянист 83 LVL. тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:50 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!hVosttпропущено... и что писать после WHERE? Код: sql 1. не катит. плевать на пользователя базы данных. нужен пользователь приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:51 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306hVosttпропущено... какое еще "каждое"??? я говорил про пользователя приложения , а не пользователя базы данных. ну в теории, несколько приложений, десктоп, веб (или их даже не по одной штуке - несколько) работают с одной базой данных в теории может. на практике, лучше делать одну точку входа, например REST или SOAP или WCF... это надёжнее и лучше поддаётся масштабированию, и сопровождению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:53 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!пропущено... Код: sql 1. не катит. плевать на пользователя базы данных. нужен пользователь приложения. я выше говорил, что решение хорошо в контексте пользователей базы. и я говорил, что в ТАКОМ случае - триггеры хороши (вы наверное пропустили). если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:53 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!МСУЗа триггера к стенке и без суда и следствия. а есть реальные аргументы, ну правда? есть. на твой карточный счёт в банке навешивается триггер, который сам по своему разумению периодически снимает бабки. вроде бы на нужные вещи, только ты на это повлиять никак не можешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:54 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!пропущено... Код: sql 1. не катит. плевать на пользователя базы данных. нужен пользователь приложения. точно также примерно, пользователь приложения по любому в роли, вяжем ктаблице ролей и исключаем некотрые роли из inserted данных. Но это только теоритическая задача ! Ведь лог он на то и лог что логировать все нужно !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:54 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!hVosttпропущено... не катит. плевать на пользователя базы данных. нужен пользователь приложения. я выше говорил, что решение хорошо в контексте пользователей базы. и я говорил, что в ТАКОМ случае - триггеры хороши (вы наверное пропустили). если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :) если приложение работает с базой данных, то уже только благодаря этому факту, триггеры -- не торты. могут быть исключения, но в общей концепции: кто девушку поит, тот её и танцует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:55 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!пропущено... а есть реальные аргументы, ну правда? есть. на твой карточный счёт в банке навешивается триггер, который сам по своему разумению периодически снимает бабки. вроде бы на нужные вещи, только ты на это повлиять никак не можешь. послушайте. вы писатель, и не читатель? мне казалось, я четко описал сценарий. но вы можете продолжать с собой разговаривать. это забавно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:56 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306hVosttпропущено... не катит. плевать на пользователя базы данных. нужен пользователь приложения. точно также примерно, пользователь приложения по любому в роли, вяжем ктаблице ролей и исключаем некотрые роли из inserted данных. Но это только теоритическая задача ! Ведь лог он на то и лог что логировать все нужно !!! т.е. поползла логика в базу данных сказать, чем это всё заканчивается? неделикатно выражаясь, жопой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:56 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttAndrey1306пропущено... точно также примерно, пользователь приложения по любому в роли, вяжем ктаблице ролей и исключаем некотрые роли из inserted данных. Но это только теоритическая задача ! Ведь лог он на то и лог что логировать все нужно !!! т.е. поползла логика в базу данных сказать, чем это всё заканчивается? неделикатно выражаясь, жопой. та не ), у нас в логе, логики нет. просто история правок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:59 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttт.е. поползла логика в базу данных сказать, чем это всё заканчивается? неделикатно выражаясь, жопой. какая в хелловорде логика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:00 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!пропущено... я выше говорил, что решение хорошо в контексте пользователей базы. и я говорил, что в ТАКОМ случае - триггеры хороши (вы наверное пропустили). если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :) если приложение работает с базой данных, то уже только благодаря этому факту, триггеры -- не торты. могут быть исключения, но в общей концепции: кто девушку поит, тот её и танцует. девушку(базу) зачастую танцуют несколько приложений. нужно универсальное решение. так что часто очень даже торт.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:03 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)Было бы желание. В DAL сервера приложений централизованно при открытии соединения пишем информацию о пользователе, и прочий контекст, во временную таблицу - пользуемся временной таблицей в триггерах, радуемся жизни. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:04 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!hVosttпропущено... если приложение работает с базой данных, то уже только благодаря этому факту, триггеры -- не торты. могут быть исключения, но в общей концепции: кто девушку поит, тот её и танцует. девушку(базу) зачастую танцуют несколько приложений. нужно универсальное решение. так что часто очень даже торт..Все танцуют обычно веб-сервис. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:05 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306та не ), у нас в логе, логики нет. просто история правок. если это не вяжется с бизнесом, то подход ок. пишется себе лог и пишется )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:05 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей Кwinsky!если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)Было бы желание. В DAL сервера приложений централизованно при открытии соединения пишем информацию о пользователе, и прочий контекст, во временную таблицу - пользуемся временной таблицей в триггерах, радуемся жизни. :-) вариант. как один из. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:06 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
ИзопропилhVosttт.е. поползла логика в базу данных сказать, чем это всё заканчивается? неделикатно выражаясь, жопой. какая в хелловорде логика? ну так всегда бывает. требования изменяются, запросы к функциональности растут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:06 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей Кwinsky!пропущено... девушку(базу) зачастую танцуют несколько приложений. нужно универсальное решение. так что часто очень даже торт..Все танцуют обычно веб-сервис. :-) вы идеализируете мир :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:06 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КМСУпропущено... Я покажусь бесцеремонным, если спрошу почему? Запись о последнем изменении документа есть, а о предыдущем изменении нет - предыдущая запись была удалена чистильщиком лога. В результате мы не знаем OldValue. Чистильщик лога должен удалять не с конца, а с начала. То есть самые ранние записи. Поэтому актуальная иеформация у нас всегда будет. Текущие данные - в таблице Documents. Предыдущее значение - в DocumentsHistry (max дата). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:06 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!девушку(базу) зачастую танцуют несколько приложений. нужно универсальное решение. так что часто очень даже торт.. не понял, зачем несколько приложений? одних и тех же в кластере, или разных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:07 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!Алексей Кпропущено... Было бы желание. В DAL сервера приложений централизованно при открытии соединения пишем информацию о пользователе, и прочий контекст, во временную таблицу - пользуемся временной таблицей в триггерах, радуемся жизни. :-) вариант. как один из.Не единственный, но лучше, чем добавлять поле в таблицу, как это предлагалось кем-то выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:07 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!девушку(базу) зачастую танцуют несколько приложений. нужно универсальное решение. так что часто очень даже торт.. не понял, зачем несколько приложений? одних и тех же в кластере, или разных? разных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:08 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!МСУЗа триггера к стенке и без суда и следствия. а есть реальные аргументы, ну правда? А разве "бизнес логика на стороне БД - дичайшее зло" это не аргумент? Триггера - это кривые ржавые гвозди, которыми мы прибиваем свою чистую и не порочную логику. Не нужно тащить этот мусор в базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:08 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей Кwinsky!если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :)Было бы желание. В DAL сервера приложений централизованно при открытии соединения пишем информацию о пользователе, и прочий контекст, во временную таблицу - пользуемся временной таблицей в триггерах, радуемся жизни. :-)\ ахахааха ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:09 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей Кпропущено... Запись о последнем изменении документа есть, а о предыдущем изменении нет - предыдущая запись была удалена чистильщиком лога. В результате мы не знаем OldValue. Чистильщик лога должен удалять не с конца, а с начала. То есть самые ранние записи. Поэтому актуальная иеформация у нас всегда будет. Текущие данные - в таблице Documents. Предыдущее значение - в DocumentsHistry (max дата). Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:09 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!hVosttпропущено... не понял, зачем несколько приложений? одних и тех же в кластере, или разных? разных а защему так? что это за система такая... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:09 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!пропущено... а есть реальные аргументы, ну правда? А разве "бизнес логика на стороне БД - дичайшее зло" это не аргумент? Триггера - это кривые ржавые гвозди, которыми мы прибиваем свою чистую и не порочную логику. Не нужно тащить этот мусор в базу. логирование изменений в таблице/таблицах - бизнес-лгика? можно определение бизнес логики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:09 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!Алексей Кпропущено... Все танцуют обычно веб-сервис. :-) вы идеализируете мир :)Утопия, согласен. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:10 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!пропущено... разных а защему так? что это за система такая... потому что, я повторюсь, мир не идеален. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:10 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!hVosttпропущено... не катит. плевать на пользователя базы данных. нужен пользователь приложения. я выше говорил, что решение хорошо в контексте пользователей базы. и я говорил, что в ТАКОМ случае - триггеры хороши (вы наверное пропустили). если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :) Строить безопасность на уровне БД - опять беспощадное зло. Так что от хвоста - еще второй аргумент, что триггера зло. В распределенных системах безопасность можно строиться самыми разными способами. Особенно, если у нас фигурируют несколько СУБД, причем различных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:10 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!можно определение бизнес логики? новый виток ЖЕСТИ! Жжём! Не останавливаемся! Пятница ещё не кончилась ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:11 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей Кwinsky!пропущено... вариант. как один из.Не единственный, но лучше, чем добавлять поле в таблицу, как это предлагалось кем-то выше. я не предлагал модифицировать исходную таблицу вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:11 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!можно определение бизнес логики? новый виток ЖЕСТИ! Жжём! Не останавливаемся! Пятница ещё не кончилась ну-ну. выдохните, и скажите, что такое бизнес-логика в вашем понимании ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:12 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей Кпропущено... Было бы желание. В DAL сервера приложений централизованно при открытии соединения пишем информацию о пользователе, и прочий контекст, во временную таблицу - пользуемся временной таблицей в триггерах, радуемся жизни. :-)\ ахахааха Ты опять ничего не понял. Про не идеальность мира тут уже писали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:12 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КМСУпропущено... Чистильщик лога должен удалять не с конца, а с начала. То есть самые ранние записи. Поэтому актуальная иеформация у нас всегда будет. Текущие данные - в таблице Documents. Предыдущее значение - в DocumentsHistry (max дата). Код: sql 1. И что? Всё нормально будет работать - будут доступна историческая цепочка записей в течении недели. Никаких противоречий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:13 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!логирование изменений в таблице/таблицах - бизнес-лгика? Конечно. winsky!можно определение бизнес логики? В википедии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:13 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!пропущено... я выше говорил, что решение хорошо в контексте пользователей базы. и я говорил, что в ТАКОМ случае - триггеры хороши (вы наверное пропустили). если пользователь прилоэжения!=пользователь базы, то тут конечно триггеры уже не торты :) Строить безопасность на уровне БД - опять беспощадное зло. Так что от хвоста - еще второй аргумент, что триггера зло. В распределенных системах безопасность можно строиться самыми разными способами. Особенно, если у нас фигурируют несколько СУБД, причем различных. никто не строит безопасность на уровне БД. я этого не говорил. вы описываете один сценарий. я - совсем другой. для вашего сценария треггеры - не айс. но кроме вашего есть другие сценарии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:15 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!логирование изменений в таблице/таблицах - бизнес-лгика? Причем, как правило, эта информация даже бизнесу важнее, чем админам. Видеть дерево изменений важного документа - почему это не бизнес логика? Очень удобная и важная функция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:15 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!Алексей Кпропущено... Не единственный, но лучше, чем добавлять поле в таблицу, как это предлагалось кем-то выше. я не предлагал модифицировать исходную таблицу вообще.А я не про Вас, а про " кого-то другого ". :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:16 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КТы опять ничего не понял. Про не идеальность мира тут уже писали. значит картинка, всё таки в тему? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:17 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!логирование изменений в таблице/таблицах - бизнес-лгика? Конечно. ок. тогда конечно, транзакшн лог, например, - это сущность, относящаяся к бизнес-логике. да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:17 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей Кпропущено... Код: sql 1. И что? Всё нормально будет работать - будут доступна историческая цепочка записей в течении недели. Никаких противоречий.Ну как, если информация о текущей транзакции ссылается на информацию о предыдущей, которая удалена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:17 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!никто не строит безопасность на уровне БД. я этого не говорил. Разве? Код: sql 1. За твоего "сусера" уже нужно прибивать гвоздями к забору :) winsky!вы описываете один сценарий. я - совсем другой. для вашего сценария треггеры - не айс. но кроме вашего есть другие сценарии У нас один сценарий. Архитектура безопасности приложений, история изменений бизнес данных. Вроде никто о доярках и коровьих надоях не офтопит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:18 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!ну-ну. выдохните, и скажите, что такое бизнес-логика в вашем понимании что значит, в моём? есть общепринятое понимание, моё ни чем не отличается, так как я пользуюсь общим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:18 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!логирование изменений в таблице/таблицах - бизнес-лгика? Причем, как правило, эта информация даже бизнесу важнее, чем админам. Видеть дерево изменений важного документа - почему это не бизнес логика? Очень удобная и важная функция. вот опять - вы описываете совсем отличный от моего сценарий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:18 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КТы опять ничего не понял. Про не идеальность мира тут уже писали. значит картинка, всё таки в тему? :)Согласен. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:18 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!ну-ну. выдохните, и скажите, что такое бизнес-логика в вашем понимании что значит, в моём? есть общепринятое понимание, моё ни чем не отличается, так как я пользуюсь общим. конечно есть. вот исходя из описанного мной сцеанария и определения бизнес-логики я не считаю что данные область относится к бизнес-логике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:20 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КСогласен. :-) а вообще, мы все сегодня молодцы! вот: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:21 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КМСУпропущено... И что? Всё нормально будет работать - будут доступна историческая цепочка записей в течении недели. Никаких противоречий.Ну как, если информация о текущей транзакции ссылается на информацию о предыдущей, которая удалена? Ну хватит тупить, а? :) Текущая не ссылается на предыдущую! Транзакция ссылается на документ . Дерево строится на иерархии дат. Еще раз. 1. Таблица документов - Documents (DocumentId, Value1, Value2) 2. История - DocumentsHistory (DocumentId, Value1, Value2, Date, UserId, OperationId) Всё. Тут нету даже ключа DocumentsHistoryId, он и не нужен. Битых ссылок быть не может априори. Документы из Documents физически удалять нельзя, только маркировать удалением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:21 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!hVosttпропущено... что значит, в моём? есть общепринятое понимание, моё ни чем не отличается, так как я пользуюсь общим. конечно есть. вот исходя из описанного мной сцеанария и определения бизнес-логики я не считаю что данные область относится к бизнес-логике. нужно определиться, эта история или логирование.. это часть бизнеса или нет? лог будет отображаться в интерфейсе пользователя? им можно как-то из программы управлять? например, отключать? или менять логику записи/ведения истории? если да, то триггеры зло. если же это историческое логгирование живёт само по себе и никакой связи с приложением нет, то можно и триггеры. даже нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:22 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КСогласен. :-) а вообще, мы все сегодня молодцы! вот: Не только сегодня. Всю неделю дотнетные топики в топе. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:23 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttесли же это историческое логгирование живёт само по себе и никакой связи с приложением нет, то можно и триггеры. даже нужно. И даже в этом случае не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:23 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttпропущено... а вообще, мы все сегодня молодцы! вот: Не только сегодня. Всю неделю дотнетные топики в топе. :-) хм, ну мы тогда всю неделю молодцы теперь можно и пивка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:24 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!никто не строит безопасность на уровне БД. я этого не говорил. Разве? Код: sql 1. За твоего "сусера" уже нужно прибивать гвоздями к забору :) winsky!вы описываете один сценарий. я - совсем другой. для вашего сценария треггеры - не айс. но кроме вашего есть другие сценарии У нас один сценарий. Архитектура безопасности приложений, история изменений бизнес данных. Вроде никто о доярках и коровьих надоях не офтопит. МСУ, давайте без гвоздей. просто порассуждайте. представье, что используется только windows аутентификация, пользователь всегда известен в контексте запроса... чем плохо-то? аргументируйте. аргумент - это плохо потому что плохо и где мои гвозди - не катит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:24 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУhVosttесли же это историческое логгирование живёт само по себе и никакой связи с приложением нет, то можно и триггеры. даже нужно. И даже в этом случае не нужно. ну тут уже зависит от степени придроченности ко всяким T-SQL/PL-SQL, некоторых знаешь ли не оторвёшь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:25 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!что используется только windows аутентификация сегодня только Windows, а завтра прикрутили двух-факторную на внешнем сервере.. и что делать? всё тут же отвалилось? ну уж нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:26 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей Кпропущено... Ну как, если информация о текущей транзакции ссылается на информацию о предыдущей, которая удалена? Ну хватит тупить, а? :) Текущая не ссылается на предыдущую! Транзакция ссылается на документ . Дерево строится на иерархии дат. Еще раз. 1. Таблица документов - Documents (DocumentId, Value1, Value2) 2. История - DocumentsHistory (DocumentId, Value1, Value2, Date, UserId, OperationId) Всё. Тут нету даже ключа DocumentsHistoryId, он и не нужен. Битых ссылок быть не может априори. Документы из Documents физически удалять нельзя, только маркировать удалением.Ну какая разница, как строится цепочка транзакций, привязанных к документу, через явную ссылку DocHistoryID, или через DocID + LogDate. Верь мне! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:26 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!что используется только windows аутентификация сегодня только Windows, а завтра прикрутили двух-факторную на внешнем сервере.. и что делать? всё тут же отвалилось? ну уж нет. с какого бодунища, простите? я же вам говорю, не пытайтесь сильно абстрагироваться - есть конткретно окружение, оно не изменится в обозримом будущем. в этом окружении и при описанном мною сценарии все работает просто прекрасно. это просто проверено. это НЕ универсальное решение. И, например, проектируя абсолютно новую систему, я бы врядли использовал такой подход. Но таки он имеет право на жизнь. я просто противник абсолютизма. есть у триггеров ниша своя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
сегодня, пятницо, кстати. МСУ, какдила? :) я давно не заходил сюда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:31 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!МСУ, давайте без гвоздей. просто порассуждайте. представье, что используется только windows аутентификация, пользователь всегда известен в контексте запроса... чем плохо-то? аргументируйте. аргумент - это плохо потому что плохо и где мои гвозди - не катит Ок. Сейчас используется только windows аутентификация. Потом еще попросится формс аутентификация. Потом роли. Роли в базе храним. А потом хук с правой, выкинули MS SQL и купили Oracle. В случае с безопасностью уровня сервере приложений - нам пох. В твоем варианте задача не выполнимая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:31 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttМСУпропущено... И даже в этом случае не нужно. ну тут уже зависит от степени придроченности ко всяким T-SQL/PL-SQL, некоторых знаешь ли не оторвёшь Отрываем с помощью молотка и лома. Ну ты знаешь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:32 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!МСУ, давайте без гвоздей. просто порассуждайте. представье, что используется только windows аутентификация, пользователь всегда известен в контексте запроса... чем плохо-то? аргументируйте. аргумент - это плохо потому что плохо и где мои гвозди - не катит Ок. Сейчас используется только windows аутентификация. Потом еще попросится формс аутентификация. Потом роли. Роли в базе храним. А потом хук с правой, выкинули MS SQL и купили Oracle. В случае с безопасностью уровня сервере приложений - нам пох. В твоем варианте задача не выполнимая. я выше ответил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:32 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей Кwinsky!пропущено... я не предлагал модифицировать исходную таблицу вообще.А я не про Вас, а про " кого-то другого ". :-) А она не модифицировалась (таблица) она сразу с этим полем создавалась ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:32 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!с какого бодунища, простите? я же вам говорю, не пытайтесь сильно абстрагироваться - есть конткретно окружение, оно не изменится в обозримом будущем. в этом окружении и при описанном мною сценарии все работает просто прекрасно. это просто проверено. это НЕ универсальное решение. И, например, проектируя абсолютно новую систему, я бы врядли использовал такой подход. Но таки он имеет право на жизнь. я просто противник абсолютизма. есть у триггеров ниша своя... а, ну дык етить. работает и ладно. но права на жизнь он всё же не имеет даже как минимум с экономической точки зрения. кто эти триггеры сопровождать будет? и зачем козе баян, если без триггеров задачи прекрасно решаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:32 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КНу какая разница, как строится цепочка транзакций, привязанных к документу, через явную ссылку DocHistoryID, или через DocID + LogDate. Большая разница. Лишнее поле :) Ну так ты и не рассказал, почему у меня прошлое значение нельзя узнать. Можно! )) Алексей КВерь мне! Да ты фантазер! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:33 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУОтрываем с помощью молотка и лома. Ну ты знаешь :) а как иначе-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:33 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!сегодня, пятницо, кстати. МСУ, какдила? :) я давно не заходил сюда... Норм, виныч :) Вот, всё копашимся тут как видишь )) Как бизнес? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:33 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!с какого бодунища, простите? я же вам говорю, не пытайтесь сильно абстрагироваться - есть конткретно окружение, оно не изменится в обозримом будущем. в этом окружении и при описанном мною сценарии все работает просто прекрасно. это просто проверено. это НЕ универсальное решение. И, например, проектируя абсолютно новую систему, я бы врядли использовал такой подход. Но таки он имеет право на жизнь. я просто противник абсолютизма. есть у триггеров ниша своя... а, ну дык етить. работает и ладно. но права на жизнь он всё же не имеет даже как минимум с экономической точки зрения. кто эти триггеры сопровождать будет? и зачем козе баян, если без триггеров задачи прекрасно решаются? задача реашается, если мы проектируем новую систему. но. когда вот так: есть база (базы) (MS SQL Server, никаких ораклов не будет никогда.) . есть набор самых разных (технологически) приложений, у которых общее только - они подключаютсяк серверу БД чз вин аутентификацию. нужно отслеживать изменения в некоторых таблицах. что бы вы делали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:35 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!я выше ответил :) Пойми, триггер - это костыль в архитектуре. Особенно, если бизнес логика у нас решается на стороне сервера приложений (только давай не будем поднимать тему по 2-tier ), как это делают нормальные пацаны :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:36 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
а кто-то с datawarehouse-ами работал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:37 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306Алексей Кпропущено... А я не про Вас, а про " кого-то другого ". :-) А она не модифицировалась (таблица) она сразу с этим полем создаваласьНу не у всех такое поле есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:37 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!задача реашается, если мы проектируем новую систему. но. когда вот так: есть база (базы) (MS SQL Server, никаких ораклов не будет никогда.) . есть набор самых разных (технологически) приложений, у которых общее только - они подключаютсяк серверу БД чз вин аутентификацию. нужно отслеживать изменения в некоторых таблицах. что бы вы делали? я бы запилил веб-сервис, через которую приложения подключались бы. никаких прямых подключений к БД. если же уже всё как-то сбито и работает (см. картинко выше), то лучше ничего не трогать. пусть как-нибудь доживает свой век. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:37 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!сегодня, пятницо, кстати. МСУ, какдила? :) я давно не заходил сюда... Норм, виныч :) Вот, всё копашимся тут как видишь )) Как бизнес? та никак... все наемник. недавно работу поменял вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:37 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!я выше ответил :) Пойми, триггер - это костыль в архитектуре. Особенно, если бизнес логика у нас решается на стороне сервера приложений (только давай не будем поднимать тему по 2-tier ), как это делают нормальные пацаны :) костыль. поэтому я и говорил, что оно и к бизнес логике не относится.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:38 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!а кто-то с datawarehouse-ами работал? Конечно. Какое они имеют отношение к теме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:39 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!задача реашается, если мы проектируем новую систему. но. когда вот так: есть база (базы) (MS SQL Server, никаких ораклов не будет никогда.) . есть набор самых разных (технологически) приложений, у которых общее только - они подключаютсяк серверу БД чз вин аутентификацию. нужно отслеживать изменения в некоторых таблицах. что бы вы делали? я бы запилил веб-сервис, через которую приложения подключались бы. никаких прямых подключений к БД. если же уже всё как-то сбито и работает (см. картинко выше), то лучше ничего не трогать. пусть как-нибудь доживает свой век. приложения, некоторые, по крайней мере вы менять не можете, забыл сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:39 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!МСУпропущено... Норм, виныч :) Вот, всё копашимся тут как видишь )) Как бизнес? та никак... все наемник. недавно работу поменял вот Так а где сейчас крутишься? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:39 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей КНу какая разница, как строится цепочка транзакций, привязанных к документу, через явную ссылку DocHistoryID, или через DocID + LogDate. Большая разница. Лишнее поле :) Ну так ты и не рассказал, почему у меня прошлое значение нельзя узнать. Можно! ))Ну его съест чистильщик лога. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:39 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!приложения, некоторые, по крайней мере вы менять не можете, забыл сказать. ну что ж делать. видимо для таких случаев триггеры и были созданы. 1-ое травматологическое отделение. вызывается команда триггеров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:40 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!, датаварехаусы, кубы, меры, процессинг, ETL, всякие SSIS и прочие шалости - это отдельная тема. Которая, кстати, стоит особняком от продуктива. Там свои какашки. Вот пусть там и накручивают грабли уважаемые DBD :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:41 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КМСУпропущено... Большая разница. Лишнее поле :) Ну так ты и не рассказал, почему у меня прошлое значение нельзя узнать. Можно! ))Ну его съест чистильщик лога. :-) Он съест неактуальные транзакции. А аткуальная всегда останится. Одна. Если одна, то нельзя есть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:42 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!а кто-то с datawarehouse-ами работал? Конечно. Какое они имеют отношение к теме? вот предположим такое: есть некоторые транз. данные, ну например продажи. могут добавлятся/менятся/удалятся. нужно инкрементально апдейтить олап куб, т.е. скармливать ему на входе только дельту изменений. кто как решает подобную задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:42 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!, датаварехаусы, кубы, меры, процессинг, ETL, всякие SSIS и прочие шалости - это отдельная тема. Которая, кстати, стоит особняком от продуктива. Там свои какашки. Вот пусть там и накручивают грабли уважаемые DBD :) та да, сейчас вспомнилось.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:43 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!пропущено... та никак... все наемник. недавно работу поменял вот Так а где сейчас крутишься? у одного из наших крупных аутсорсеров. не хочу конкретно называть... проект - страшное уг. скучно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:44 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!есть некоторые транз. данные, ну например продажи. могут добавлятся/менятся/удалятся. нужно инкрементально апдейтить олап куб, т.е. скармливать ему на входе только дельту изменений. кто как решает подобную задачу? Крайне неверно связывать датаварехаус с боевой базой. Нужно всегда понимать, что dwh - это процессинг на отложенных данных. Никакой прямой связи с оперативными данными. Никакой! За такие связи сразу на гиляку! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:45 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!МСУпропущено... Так а где сейчас крутишься? у одного из наших крупных аутсорсеров. не хочу конкретно называть... проект - страшное уг. скучно. Так ты в айти? Вроде ж распрощался с ним или снова за старое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:45 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
а какже наш любимый ROLAP для оперативной отчётности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:46 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей Кпропущено... Ну его съест чистильщик лога. :-) Он съест неактуальные транзакции. А аткуальная всегда останится. Одна. Если одна, то нельзя есть! А если две? Первая отображается нормально, вторая без OldValue, потому что третья съедена. Такие дела... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:47 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!есть некоторые транз. данные, ну например продажи. могут добавлятся/менятся/удалятся. нужно инкрементально апдейтить олап куб, т.е. скармливать ему на входе только дельту изменений. кто как решает подобную задачу? Крайне неверно связывать датаварехаус с боевой базой. Нужно всегда понимать, что dwh - это процессинг на отложенных данных. Никакой прямой связи с оперативными данными. Никакой! За такие связи сразу на гиляку! :) да. но если таки нужно получать данные в олапе оперативно, ну с отставанием в минуты. вот надо и все. как бустро получить слепок последних изменений. не зря ведь инкрементальный апдейт вообще есть.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:47 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!пропущено... у одного из наших крупных аутсорсеров. не хочу конкретно называть... проект - страшное уг. скучно. Так ты в айти? Вроде ж распрощался с ним или снова за старое? куда я денусь. IT forever ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:48 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_Oneа какже наш любимый ROLAP для оперативной отчётности? Так роллап и так смотрит на боевую базу. Бери и радуйся. Алексей КА если две? Первая отображается нормально, вторая без OldValue, потому что третья съедена. Такие дела... Не понял тебя. Предыдущее значение - это та единственная транзакция с максимальной датой. Появится вторая транзакция, через неделю отвалится первая. И вторая будет первой. И единственной. Какие проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:50 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!да. но если таки нужно получать данные в олапе оперативно, ну с отставанием в минуты. вот надо и все. как бустро получить слепок последних изменений. не зря ведь инкрементальный апдейт вообще есть.. В олапе? Оперативно? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:50 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!куда я денусь. IT forever А позиция? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:50 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
запутали совсем ....... дали бы посмотреть как вы сохраняете эти изменения. А то что то я слабо представляю. например для MVC. 1. создал экземпляр какой то модели. 2. передал во вью, пользователь что то делал отправил обратно 3. сохраняю, вытягиваю из базы(контекста) таблицу куда писать буду, с модели проставляю значения полям потом context.SaveChanges(); где логировать начинать ? где сравнивать старое с новым ? копию модели данных создавать нужно ? в триггере как понятней Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:56 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!да. но если таки нужно получать данные в олапе оперативно, ну с отставанием в минуты. вот надо и все. как бустро получить слепок последних изменений. не зря ведь инкрементальный апдейт вообще есть.. В олапе? Оперативно? :) например: есть запись (sales) добавили: SomeKey, 10 потом поменяли SomeKey, 20 потому удалили если представить все изенения в виде 'лога' SomeKey, 10 SomeKey, 10 SomeKye, -20 для инкрементально апдейта куба используется вот этот набор. вопрос - кто каким способом формирует подобные наборы для инкрементального апдейта? наверное этот вопрос нужно задавать в профильной ветке. ЗЫ ROLAP - зла, поверьте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:56 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУKonst_Oneа какже наш любимый ROLAP для оперативной отчётности? Так роллап и так смотрит на боевую базу. Бери и радуйся. Алексей КА если две? Первая отображается нормально, вторая без OldValue, потому что третья съедена. Такие дела... Не понял тебя. Предыдущее значение - это та единственная транзакция с максимальной датой. Появится вторая транзакция, через неделю отвалится первая. И вторая будет первой. И единственной. Какие проблемы?OldValue в ПРЕДЫДУЩЕЙ!!! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:58 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!да. но если таки нужно получать данные в олапе оперативно, ну с отставанием в минуты. вот надо и все. как бустро получить слепок последних изменений. не зря ведь инкрементальный апдейт вообще есть.. В олапе? Оперативно? :) ага. вот вы не поверите. но у меня работает, ну не у меня уже, но продолжает работать система где макс. отставание - 10 минут. фактическая таблица - сотни миллионов записей :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:58 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!для инкрементально апдейта куба используется вот этот набор. Я думаю такие задачи нужно решать только отложенно с большим временем синхронизации, скажем, сутки. winsky!ЗЫ ROLAP - зла, поверьте. Ну так ты по сути этого и просишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 17:00 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!МСУпропущено... В олапе? Оперативно? :) например: есть запись (sales) добавили: SomeKey, 10 потом поменяли SomeKey, 20 потому удалили если представить все изенения в виде 'лога' SomeKey, 10 SomeKey, 10 SomeKye, -20 для инкрементально апдейта куба используется вот этот набор. вопрос - кто каким способом формирует подобные наборы для инкрементального апдейта? наверное этот вопрос нужно задавать в профильной ветке. ЗЫ ROLAP - зла, поверьте. согласен, вопросы лучше в олап-ветке. я уж давно с dwh не работал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 17:01 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КOldValue в ПРЕДЫДУЩЕЙ!!! Прошлая транзакция неудаляема. "Транзакция" - это и есть предыдущее значение. Самое свежее и актуальное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 17:01 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУwinsky!для инкрементально апдейта куба используется вот этот набор. Я думаю такие задачи нужно решать только отложенно с большим временем синхронизации, скажем, сутки. winsky!ЗЫ ROLAP - зла, поверьте. Ну так ты по сути этого и просишь. бизнес такой бизнес, говорит, не хочу сутки ждать. вот пришлось выкручиваться. я просто к чему, там просто наборы формировались именно триггерами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 17:03 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!МСУпропущено... Я думаю такие задачи нужно решать только отложенно с большим временем синхронизации, скажем, сутки. пропущено... Ну так ты по сути этого и просишь. бизнес такой бизнес, говорит, не хочу сутки ждать. вот пришлось выкручиваться. я просто к чему, там просто наборы формировались именно триггерами. интересное решение. да, бизнес иногда отжигает. я помню нам как-то вообще пришлось rolap на oltp-базу настраивать, чтобы витрины для руководства выводить , благо всё было на оракле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 17:06 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей КOldValue в ПРЕДЫДУЩЕЙ!!! Прошлая транзакция неудаляема. "Транзакция" - это и есть предыдущее значение. Самое свежее и актуальное.Ну я же захочу посмотреть всю историю транзакций по документу. В последней транзакции OldValue не будет. NewValue OldValue1 22 33 44[удалено] Отсортировано по LogDate в обратном порядке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 17:11 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КМСУпропущено... Прошлая транзакция неудаляема. "Транзакция" - это и есть предыдущее значение. Самое свежее и актуальное.Ну я же захочу посмотреть всю историю транзакций по документу. В последней транзакции OldValue не будет. NewValue OldValue1 22 33 44[удалено] Отсортировано по LogDate в обратном порядке. а где NewValue[удалено] ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 17:15 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306Алексей Кпропущено... Ну я же захочу посмотреть всю историю транзакций по документу. В последней транзакции OldValue не будет. NewValue OldValue1 22 33 44[удалено] Отсортировано по LogDate в обратном порядке. а где NewValue[удалено] ?? sql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 17:16 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей К, Не понял ничего, наверно тяпница..... или неосилил Не вижу в этом логе момент когда значение было, а потом удалили .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 17:23 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306Алексей К, Не понял ничего, наверно тяпница..... или неосилил Не вижу в этом логе момент когда значение было, а потом удалили ....NULL в OldValue будет вместо 'удалено', если вопрос в этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 17:35 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!а кто-то с datawarehouse-ами работал? я ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 18:20 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КAndrey1306Алексей К, Не понял ничего, наверно тяпница..... или неосилил Не вижу в этом логе момент когда значение было, а потом удалили ....NULL в OldValue будет вместо 'удалено', если вопрос в этом. А должен быть в NewValue !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 20:22 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
ИзопропилАлексей КА если логика в хранимых процедурах, то триггера удобны. то они не нужны +1 Снова буря в стакане Если весь CRUD идет через хранимки, то триггеры, ограничители и прочие дефаулты нафиг не нужны. Только путаницу создают. Взялся писать на хранимках - пиши все в хранимках! Если будет что-то глючить - будешь точно знать что глюк в конкретной хранимке, и не будешь рыскать по всему скулю в поисках где что отваливается. Если приложение инсертит/апдейтит прямо в таблицы, то здесь два варианта, или оставляем всю историю на совести разраба приложения или вешаем триггер. ИМХО вариант с триггером нужно рассмативать в последнюю очередь, если разработку БД и приложения ведут разные спецы, одни не умеют писать хранимки, а вторые явные апологеты ORM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 21:26 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!нужно инкрементально апдейтить олап куб, т.е. скармливать ему на входе только дельту изменений. кто как решает подобную задачу? Ммм... можно подробней? Нафига олапу инкрементальные данные? Продажи или есть или нет, если вчера продали а сегодня оказалось что нет, то это хня какая-то а не аналитика... Или Вы о чем? Я так ваще всегда делаю отдельную базу(базы), сливаю туда всю нужную инфу и затем начинаю крутить кубы. Правда пока с небольшими объемами данных работаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 21:45 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
EDUARD SAPOTSKIИМХО вариант с триггером нужно рассмативать в последнюю очередь, если разработку БД и приложения ведут разные спецы, одни не умеют писать хранимки, а вторые явные апологеты ORM Или еще вариант - одну таблицу инсертят/апдейтят 100500 хранимок, при этом выполняется один и тот же кусок логики, дублировать код в хранимках не есть хорошо, тогда можно повесить триггер. Но на практике такое редко встретишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 21:58 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306Алексей Кпропущено... NULL в OldValue будет вместо 'удалено', если вопрос в этом. А должен быть в NewValue !!!Мы обсуждаем эту реализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2014, 09:00 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306Алексей Кпропущено... NULL в OldValue будет вместо 'удалено', если вопрос в этом. А должен быть в NewValue !!!Стоит вопрос, хранить OldValue в информации о текущей транзакции, или брать из предыдущей. Код: sql 1. vs Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2014, 09:06 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КСтоит вопрос, хранить OldValue в информации о текущей транзакции, или брать из предыдущей. Код: sql 1. vs Код: sql 1. Ну хорошо, давай отталкиваться от того, что никакие чистильщики ничего не удаляют. При достижении определенного объема, история "отсоединяется" и заводится новая. Отсоединение трактуй как хочешь - новая таблица DocumentsHistory_yyyyMMdd, своп на диск в виде файла, отправка данных почтовыми голубями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2014, 10:58 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей КСтоит вопрос, хранить OldValue в информации о текущей транзакции, или брать из предыдущей. Код: sql 1. vs Код: sql 1. Ну хорошо, давай отталкиваться от того, что никакие чистильщики ничего не удаляют. При достижении определенного объема, история "отсоединяется" и заводится новая. Отсоединение трактуй как хочешь - новая таблица DocumentsHistory_yyyyMMdd, своп на диск в виде файла, отправка данных почтовыми голубями.Ну назови очистку отсоединением, это ничего не меняет. Всегда будет последняя транзакция, не имеющая предыдущей. :-) Я не пойму, о чём мы спорим, места на диске мало что ли? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2014, 15:58 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КНу назови очистку отсоединением, это ничего не меняет. Всегда будет последняя транзакция, не имеющая предыдущей. :-) Предыдущую всегда можно определить через отсоединенную. Мы ж ничего не удаляем. Алексей КЯ не пойму, о чём мы спорим, места на диске мало что ли? :-) Не в этом проблема. Проблема в дублировании полей. Избыточность поди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2014, 22:19 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУМы ж ничего не удаляем.Ну а мы удаляем. Что, мы теперь не люди что ли? :-) МСУАлексей КЯ не пойму, о чём мы спорим, места на диске мало что ли? :-) Не в этом проблема. Проблема в дублировании полей. Избыточность поди.Таблица неизменяемая, избыточность ей сильно не повредит. Зато проблем меньше: не надо париться по поводу удаления, одним join-ом меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 07:28 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КМСУМы ж ничего не удаляем.Ну а мы удаляем. Что, мы теперь не люди что ли? :-) Меня удивляют "люди", которые преднамеренно удаляют записи, а потом жалуются, что информация-то, оказывается, похерилась! Алексей КТаблица неизменяемая, избыточность ей сильно не повредит. Зато проблем меньше: не надо париться по поводу удаления, одним join-ом меньше. Тут палка о двух концах :) Простота хранения и извлечения vs избыточность и прочие бла-бла из 3НФ. Против аргументированной денормализации никогда ничего не имел против, так что я не запрещаю тебе логировать Value и OldValue. Но и ты имей совесть и не наезжай на иерархию дат, это же рабочий способ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 09:36 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУНо и ты имей совесть и не наезжай на иерархию дат, это же рабочий способ! Ну я же сразу сказал, что у меня сейчас работает такое решение, и оно мне не нравится. Это истина, проверенная практикой! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 10:58 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
EDUARD SAPOTSKIwinsky!нужно инкрементально апдейтить олап куб, т.е. скармливать ему на входе только дельту изменений. кто как решает подобную задачу? Ммм... можно подробней? Нафига олапу инкрементальные данные? Продажи или есть или нет, если вчера продали а сегодня оказалось что нет, то это хня какая-то а не аналитика... Или Вы о чем? Я так ваще всегда делаю отдельную базу(базы), сливаю туда всю нужную инфу и затем начинаю крутить кубы. Правда пока с небольшими объемами данных работаю. не вдаваясь в подробности - хня или не хня :). но: если у вас сотни миллионов записей в таблице фактов, то процессинг такого куба в любом случае может занять неопределенно долгое время. поэтому выхода здесь может быть два: разбить куб на партишины, либо инкрементальный апдейт куба. а "нафига олапу инкрементеальные данные" - вы спросите ребят из Microsoft, которые механизм инкрементального апдейта сделали в кубах ЗЫ: это все страшный оффтоп. если кому интересно пожевать эту тему - может создать соотв. ветку в проф. форуме. к сожалению, у меня есть желание, но нет достаточного количества времени говорить на эту тему :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 11:17 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
MOLAP вообще в принципе не имеет большого практического смысла без наличия инкрементального апдейта!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 12:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Ivan DurakMOLAP вообще в принципе не имеет большого практического смысла без наличия инкрементального апдейта!!! спорное утверждение. почему все так любят крайности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 12:33 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!Ivan DurakMOLAP вообще в принципе не имеет большого практического смысла без наличия инкрементального апдейта!!! спорное утверждение. почему все так любят крайности? практика. ROLAP наступает на всех фронтах. Всем нужен онлайн!! С MPP базами агрегирование на лету уже не так страшно. С другого фланга наступают in-memory кубы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 12:39 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Ivan Durakwinsky!пропущено... спорное утверждение. почему все так любят крайности? практика. ROLAP наступает на всех фронтах. Всем нужен онлайн!! С MPP базами агрегирование на лету уже не так страшно. С другого фланга наступают in-memory кубы. MPP - непомните, что это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 12:50 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
http://www.mpp.org Marijuana Policy Project ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 13:05 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!Ivan Durakпропущено... практика. ROLAP наступает на всех фронтах. Всем нужен онлайн!! С MPP базами агрегирование на лету уже не так страшно. С другого фланга наступают in-memory кубы. MPP - непомните, что это? https://ru.wikipedia.org/wiki/Массово-параллельная_архитектура ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 13:18 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Там все Terradata, Netezza, Vertica, Greenlum и прочие Hana. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 13:21 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Ivan Durakwinsky!пропущено... MPP - непомните, что это? https://ru.wikipedia.org/wiki/Массово-параллельная_архитектура ясно. ну, то, то решение, о котором я говорю, начало реализовываться еще лет 5-6 назад... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 15:12 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1356925]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
196ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 513ms |

| 0 / 0 |
