Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Ссылочная целостность. Проверка данных до записи или обработка ошибок после? / 25 сообщений из 218, страница 1 из 9
10.04.2018, 11:07
    #39627811
AndryG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
Пишем данные в БД, получаем ошибку уникального ключа.

[dbMessage:protected] => attempt to store duplicate value (visible to active transactions) in unique index "PERS_IDX1" Problematic key value is (<expression> = 'U4')

Поделитесь опытом бработки подобных ошибок.

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

У каждого способа свои плюсы/минусы. Посоветуйте с высоты опыта, какой вариант предпочтительней, может удачные практики есть у кого.
...
Рейтинг: 0 / 0
10.04.2018, 11:49
    #39627841
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryG,

Юзера можно побеспокоит только если он явно участвует в формировании этого ключа
...
Рейтинг: 0 / 0
10.04.2018, 11:54
    #39627845
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryG,
В каждом ЯП свои паттерны хорошего кода.
Это как мода. Сегодня это модно, а завтра нет.
Например, в ОРМ в шарпе мы получаем ошибки уже от самого ОРМ фреймворка.
В java есть деклоративное управления транзакциями и ошибками.
Так что идите к программистам. Это слишком низкий уровень для бизнес аналитиков в данной ветке.
...
Рейтинг: 0 / 0
10.04.2018, 12:27
    #39627869
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryGПишем данные в БД, получаем ошибку уникального ключа.

[dbMessage:protected] => attempt to store duplicate value (visible to active transactions) in unique index "PERS_IDX1" Problematic key value is (<expression> = 'U4')

Поделитесь опытом бработки подобных ошибок.

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

У каждого способа свои плюсы/минусы. Посоветуйте с высоты опыта, какой вариант предпочтительней, может удачные практики есть у кого.
Пишутся в лог со стектрейсом. Если регулярно выпадают, то заводится бага в Jira. Бага правится - ошибки исчезают.
...
Рейтинг: 0 / 0
10.04.2018, 16:01
    #39628005
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
БД же возвращает отлуп, что операция не получилась
его можно перехватить и отписать юзеру свою мессагу (поскольку там всего 1 причина, её и указываем)
а если вас именно беспокоят ошибки, которые бесконтрольно вылетают юзеру в морду
то их же можно подавлять (в пхп @)/контроллить (настроить свой обработчик)
только так
...
Рейтинг: 0 / 0
10.04.2018, 16:12
    #39628011
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
tip78то их же можно подавлять (в пхпво! Ещё один вариант для пхп.
Ждем вариант для эрланг)
...
Рейтинг: 0 / 0
10.04.2018, 19:33
    #39628098
AndryG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
Я и есть программист ) И размышляю. Стоит ли опираться на ссылочную целостность БД - анализировать ошибки запросов и дальше по обстоятельствам. Другими словами "ошибки при запросах к БД - это нормально".

Или не стоит связываться с ссылочной целостностью. Оставить её в покое, как дополнительный защитный уровень. Строить свои проверки корректности данных. Пусть и с помощью доп. запросов проверять наиболее популярные конфликтные ситуации. А ошибку при запросе к БД рассматривать, как "странно, но вы не дожны были увидеть такую ошибку".

Пишу Web-приложение на голом php.
...
Рейтинг: 0 / 0
10.04.2018, 21:27
    #39628132
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryG"странно, но вы не дожны были увидеть такую ошибку".
по сути да, поэтому обработчик ошибок шлёт мыло, чтобы сразу ошибку исправлять
...
Рейтинг: 0 / 0
10.04.2018, 21:38
    #39628138
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryGЯ и есть программист ) И размышляю. Стоит ли опираться на ссылочную целостность БД - анализировать ошибки запросов и дальше по обстоятельствам. Другими словами "ошибки при запросах к БД - это нормально".

Или не стоит связываться с ссылочной целостностью. Оставить её в покое, как дополнительный защитный уровень. Строить свои проверки корректности данных. Пусть и с помощью доп. запросов проверять наиболее популярные конфликтные ситуации. А ошибку при запросе к БД рассматривать, как "странно, но вы не дожны были увидеть такую ошибку".

Пишу Web-приложение на голом php.
Тоска зелёная
...
Рейтинг: 0 / 0
10.04.2018, 21:43
    #39628140
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
У меня за сутки выпало более 30000 ошибок.
...
Рейтинг: 0 / 0
10.04.2018, 22:16
    #39628155
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryGМожно в скрипте обрабатывать наиболее вероятные ошибки и давать вразумительные ответы юзеру.

«Бла-бла, извините, бла-бла... ждите когда починят». Какой ещё вразумительный ответ можно дать? Ну котика покажите.


AndryGУ каждого способа свои плюсы/минусы. Посоветуйте с высоты опыта, какой вариант предпочтительней, может удачные практики есть у кого.

Валидация, блокировки. Основная задача, это устранять ошибки, а не покрывать их какими-то «вразумительными» сообщениями и объяснениями.
...
Рейтинг: 0 / 0
10.04.2018, 22:16
    #39628156
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryGДругими словами "ошибки при запросах к БД - это нормально".

Нет.
...
Рейтинг: 0 / 0
10.04.2018, 22:16
    #39628157
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryGА ошибку при запросе к БД рассматривать, как "странно, но вы не дожны были увидеть такую ошибку".


Рассматривать, как косяк разработчика.
...
Рейтинг: 0 / 0
10.04.2018, 22:49
    #39628167
AndryG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
Я имею ввиду ошибки в вводимых данных!

Если человек пытается зарегестрировать уже существующий логин, то какой тут косяк разработчика?

Ещё пример.
"Введите желаемый размер от 17 до 47". А на сервер приходит 63.
На поле в БД стоит ограничение "value between 17 and 47".

Либо я пишу в БД 63 и получаю ошибку от БД, парсим ответ, выбираем, что не понравилось БД и выдаем персу ответ.

Либо в коде перед формированием запроса к БД проверяем значение (дублируем проверку) и выдаем ошибку "укажите допустимый размер"


Какие письма.
...
Рейтинг: 0 / 0
10.04.2018, 22:54
    #39628169
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryGЕсли человек пытается зарегестрировать уже существующий логин, то какой тут косяк разработчика?

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


AndryGЕщё пример.
"Введите желаемый размер от 17 до 47". А на сервер приходит 63.
На поле в БД стоит ограничение "value between 17 and 47".

Либо я пишу в БД 63 и получаю ошибку от БД, парсим ответ, выбираем, что не понравилось БД и выдаем персу ответ.

Полная хрень. Ограничения в БД это последний и важный эшелон для обеспечение целостности данных. Но он не является инструментом для проверки корректности вводимой информации. Ни в коем случае. У нас бы за такое был бы серьёзный разговор, а при непонимании, увольнение. Это азы.
...
Рейтинг: 0 / 0
10.04.2018, 23:07
    #39628172
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryGЛибо в коде перед формированием запроса к БД проверяем значение (дублируем проверку) и выдаем ошибку "укажите допустимый размер"

Вообще-то не «дублируем проверку», а просто делаем проверку. Это называется валидация. Если в логе увидели ошибку нарушения констрейта, значит где-то накосячили и не сделали проверку. При работе с БД всегда считаем по умолчанию, что никаких констрейтов там нет.
...
Рейтинг: 0 / 0
10.04.2018, 23:54
    #39628175
AndryG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
hVostt, спасибо за объяснения. Пусть и в столь... яркой форме )

Уровень БД - это второй эшелон обороны и не стоит его активно использовать как основной валидатор.
...
Рейтинг: 0 / 0
11.04.2018, 00:51
    #39628181
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryG,

Рад помочь! :)
...
Рейтинг: 0 / 0
11.04.2018, 07:00
    #39628206
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
hVosttВообще-то не «дублируем проверку», а просто делаем проверку. Это называется валидация.
+1

AndryG, то, о чём Вы пишите - это валидация вводимых данных.

Уровень БД - это не второй, а последний эшелон.
Если Вы пишите web-приложение, то хорошо бы подумать о валидации на клиенте и валидации на сервере до записи в базу.
Почитать об этом пару статей на тему зачем и как лучше делать.

К примеру диапазон можно ограничить так:
Код: html
1.
<input type="size" name="size" min="17" max="47">


Если пользователь введёт 63, то получит сообщение об ошибке, приэтом запрос не будет отправлен на сервер.

P.S.: и хорошо бы задачу описывать подробнее, а не выкладывать сначала часть размышлений о том, как её решить, опираясь на ссылочную целостность, а потом уточнять о чём речь.
Сэкономите себе время.
...
Рейтинг: 0 / 0
11.04.2018, 07:17
    #39628213
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryGЕщё пример.
"Введите желаемый размер от 17 до 47". А на сервер приходит 63.
На поле в БД стоит ограничение "value between 17 and 47".

Либо я пишу в БД 63 и получаю ошибку от БД, парсим ответ, выбираем, что не понравилось БД и выдаем персу ответ.

Либо в коде перед формированием запроса к БД проверяем значение (дублируем проверку) и выдаем ошибку "укажите допустимый размер"
Если покупатель ввёл 63 при поиске, что Вы собираетесь в БД писать и зачем?
...
Рейтинг: 0 / 0
11.04.2018, 07:19
    #39628214
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryGЕсли человек пытается зарегестрировать уже существующий логин, то какой тут косяк разработчика?
Если человек при этом ошибся и указал в email # вместо @, то как Вам помогут ограничения целосности БД?
...
Рейтинг: 0 / 0
11.04.2018, 10:41
    #39628284
AndryG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
skyANA, это и была часть размышлений. (я в курсе про клиентские, серверные проверки данных и назначение каждой из них. Опыт есть)

Пишу код уровня "доступа к даным", При повторном прогоне кода создания юзера вылезла ожидаемая ошибка уникальности логина. Тут и появилась мысль использовать это для уменьшения кода валидаторов - не делать некоторые и вылавливать для этого ошибки БД.

Судя по ярким ответам, я или потоптался по мозолям или несу ересь ) ещё раз спасибо за ответы.
...
Рейтинг: 0 / 0
11.04.2018, 12:41
    #39628335
alex55555
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryGСудя по ярким ответам, я или потоптался по мозолям или несу ересь )
Да, это ересь. Но ересь в данном контексте небесполезная. Ты учишься. Надеюсь, потом сам будешь долго смеяться, каким идиотом раньше был :)

Немного в более общем виде - программисты ленивы, что объяснимо, но суть качества в противостоянии лени, в выбивании её из себя. А когда вот так дружелюбно по заднице навставляют, то это вы ещё очень легко отделались :) Выше уже указали - могли бы и уволить. Так что пилите, Шура, пилите, они золотые!
...
Рейтинг: 0 / 0
11.04.2018, 12:43
    #39628338
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
AndryG(я в курсе про клиентские, серверные проверки данных и назначение каждой из них. Опыт есть)какого фига тогда вопрос первоклассника?
Если голый php значит ошибка от драйвера?
Вот и раздели ошибки на уровни и покажи ту что касается юзверя.
А доделаешь ли ты потом ДОП валидацию на клинте твои хотелки и проблемы.
...
Рейтинг: 0 / 0
11.04.2018, 12:48
    #39628340
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
alex55555Немного в более общем виде - программисты ленивы, что объяснимо, но суть качества в противостоянии лени, в выбивании её из себя. А когда вот так дружелюбно по заднице навставляют, то это вы ещё очень легко отделались :) Выше уже указали - могли бы и уволить. Так что пилите, Шура, пилите, они золотые!

Тут не согласен. Лень программиста, это золотая жила в его профессионализме. Программист должен быть достаточно ленив, чтобы избавить себя от монотонного копипаста кода, бесконечного ковыряния в отладке в бесконечном исправлении ошибок. Он должен писать код, который если ломается, то давать максимальную информацию о проблеме, и минимизировать возможность выстрелить себе в ногу.

Иногда лень путают с наивной беспечностью и отсутствием опыта. Т.е. вот здесь и сейчас нагавнякал, получил результат какой-то. Вроде выглядит как лень, типа не стал заморачиваться и тратить время на то, чтобы сделать по уму. Но опыт показывает, что потом эти «лентяи» безвылазно делают одну и ту же мудохрень, то, чего можно было не делать, и не тратить на это время совсем. Просто это не так очевидно на коротком отрезке времени.
...
Рейтинг: 0 / 0
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Ссылочная целостность. Проверка данных до записи или обработка ошибок после? / 25 сообщений из 218, страница 1 из 9
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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