"Мягкое" удаление записей. Хорошо это или плохо

Модераторы: kdv, CyberMax

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

"Мягкое" удаление записей. Хорошо это или плохо

Сообщение CyberMax » 13 июл 2006, 06:33

Вопрос ко всем разработчикам.
Используете ли вы имитацию удаления (то есть пометка записи, что она удалена)? Если да, то в каких случаях и почему. Если нет, то тоже почему.
P.S. Не стал делать тему опросом. Достаточно высказаться здесь.

aaa3d
Сообщения: 69
Зарегистрирован: 23 ноя 2005, 11:06

Сообщение aaa3d » 13 июл 2006, 08:41

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 13 июл 2006, 11:34

В справочниках никакого удаления в принципе, перевод другое состояние. То же с документами. Если это считать таким "мягким" удалением - практически всегда.
Удаления - только внутрипрограммные (не по желанию пользователя, а согласно логике системы).

Если развить тему в сторону внедрения поддержки такой "фичи" в сервер (наподобие как это в bdf живёт) - я категорически против. Сервер ничего не знает о логике работы системы, а внезапное "появление" уже убитого объекта должно обрабатываться системой, а не сервером.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 13 июл 2006, 12:45

Насчёт справочников уже сказали. Документы же вообще по жизни обладают небулевским статусом. Как минимум - подготовка, активный, закрытый, аннулированный. Удалять можно, в плане сиюминутного исправления текущих ошибок, но только в статусе "подготовка", впрочем как и редактировать (кроме форс-мажорных случаев). Главная проблема использования признака удаления - отношения m:n. Можно, но геморно. Посему таки в них удаление - рабочая операция, а для репликации используется лог. Отдельная тема - бухгалтерия, не в смысле настоящщая, а в смысле отдел по борьбе с налогами. Там порой проще и лучше снести все проводки за период и перепровести заново.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 13 июл 2006, 13:55

Почему в справочниках "мягкое удаление"? Ведь эти данные нужны постоянно. Получается, что они постоянно выбираются с условием Deleted = 0, что скорость их выборки ничуть не прибавляет.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 13 июл 2006, 14:00

Выбираться они по идее должны с другим условием (скажем, по первым буквам) а Deleted идет уже пристяжным...

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 13 июл 2006, 14:23

CyberMax писал(а):Почему в справочниках "мягкое удаление"? Ведь эти данные нужны постоянно. Получается, что они постоянно выбираются с условием Deleted = 0, что скорость их выборки ничуть не прибавляет.
Они нужны в джойнах по уже свершившемуся. Классика - снятая с производства продукция, продолжающая фигурировать в сводной отчётности и аналитике. Или почившая в бозе организация. А там признак удаления либо пофиг либо является просто атрибутом. А при работе со справочником для создания новых документов неживые записи фильтруются. Это в первом приближении. Есть ещё деятельность задним числом. И тут мы приходим к периодическим реквизитам ;)

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 13 июл 2006, 15:16

Хм. Одно дело - убрать ненужный вид продукции, а другое - пометить на удалить его. Для последнего есть две причины - возможность "оживления" и второе - чтобы сохранить ссылочную целостность. Кстати, в настоящее время для первого случая использую поле "HIDDEN".
Так вот, так ли необходимо это "оживление"? А вот насчет целостности надо подумать - может, есть вариант удалить сразу всю "ветку" (запись и ее мастера)... Просто не могу сходу вспомнить противопоказаний...

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 13 июл 2006, 15:43

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

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 13 июл 2006, 17:31

Merlin писал(а):Тогда скажи какие причины бывают именно на удалить не в "проектах" информационных объектов, а в действующих :)
Это две реально действующие базы :).
Просто уже неделю обновляю код/метаданные самой первой своей БД и всплыл факт - операторы больше года не пользуются "оживлением" документов (в моем случае заявок). Это как бы понятно - удалил запись в справочнике/журнале - и все забыл о ней. С другой стороны, в 1С записи сначала помечаются, а затем удаляются. Но тогда надо делать поддержку поля Deleted... С другой стороны, на основании записей можно действительно делать анализ действий пользователей. С другой стороны, размер БД растет...
Короче, загрузился вариантами "За" и "Против". В инете ничего не нашел по данному вопросу, и решил у народа узнать. Если у всех "мягкое" удаление, то и у себя сделаю его во всех таблицах. Конечно, с возможностью окончательного удаления помеченных записей.
P.S. Вопрос этот, кстати, про проектирование БД. Только раздела здесь нет такого. Пришлось в ЧаВо создать...

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 14 июл 2006, 12:08

Merlin писал(а):Всё нужно для истории, разбора полётов между юзерами
Для этого можно и бэкап поднять, у меня к примеру для этого есть стопочка двд компактиков (никак чето до стримера не дорастем), на случай форс-мажора. Форс-мажор (тьфу-3х) слава богу давно не наступал, но бэкап иногда поднимал для того чтоб кое-кому особо шаловливому по шапке дать.

Вобщем раз бэкап все равно есть, можно им иногда и воспользоваться. :)

[Модератор: Иван, не забывай указывать, кого цитируешь]

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 14 июл 2006, 15:29

Ivan_Pisarevsky писал(а):Для этого можно и бэкап поднять, у меня к примеру для этого есть стопочка двд компактиков (никак чето до стримера не дорастем), на случай форс-мажора. Форс-мажор (тьфу-3х) слава богу давно не наступал, но бэкап иногда поднимал для того чтоб кое-кому особо шаловливому по шапке дать.

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

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

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 15 июл 2006, 06:46

WildSery писал(а):Вот когда бэкапы за день даже в сжатом состоянии будут занимать несколько DVD, посмотрю на тебя.
Бэкапы базы что-ли? Давайте подсчитаем. Размер упакованного fbk (WinRAR'ом на макс. сжатии) ~ 10% от размера fbk. Размер бэкапа ~50% от fdb. Итого на DVD помещается база размером 4,5 Гб * 2 * 10 = 4,5 Г * 20 = 90 Гб. Базы таких размеров - это очень большое исключение. У тебя именно такая? Или ты прямо fbk на диск пишешь? :shock:

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 17 июл 2006, 12:19

CyberMax писал(а):Бэкапы базы что-ли? Давайте подсчитаем...
Вы недопоняли меня. Бэкапы базы. При активном документообороте восстановление даже 4-5 часов потерянных данных накладно. А работа круглосуточная.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 17 июл 2006, 12:45

Вот как раз на эту задачу можно запрячь репликацию. Если приложить немного hands.drv и head.sys...

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 17 июл 2006, 14:39

Все равно не пойму. Бэкапы базы, которые .fbk?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 17 июл 2006, 14:58

Dimitry Sibiryakov писал(а):Вот как раз на эту задачу можно запрячь репликацию. Если приложить немного hands.drv и head.sys...
Давайте без оскорблений.
[модератор: давайте без подозрений. Где тут оскорбления?]
Репликация есть. Из оперативной в архивную и дальше в головное предприятие, т.е. ко мне.
Да, время потери сокращается до "время последнего бэкапа + данные репликации", но всё равно, даже час по понятиям нашего начальства - много. И я могу их понять.

2 модератор:
Признаю наличие чрезмерного воображения. Обычно оно не подводит, и я вижу что мне хотят сказать. Не в этом случае, очевидно :oops:
Последний раз редактировалось WildSery 17 июл 2006, 20:08, всего редактировалось 1 раз.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 17 июл 2006, 15:29

непонятно - каким образом разговор про "мягкое удаление" и архивы перетек в плоскость восстановления после сбоя?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 17 июл 2006, 20:10

kdv писал(а):непонятно - каким образом разговор про "мягкое удаление" и архивы перетек в плоскость восстановления после сбоя?
Почему же непонятно? Диалог свернул к вопросу "что лучше для восстановления данных - "мягкое" удаление или же удалять жёстко, а в случае нужны бэкап базы поднять, если "разборки" потребуются".

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 18 июл 2006, 07:14

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

Ответить