2009-12-15 8 views
2

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

Однако для многих бизнес-приложений это невозможно. Я работал с несколькими клиентами, одним из приложений которого я занимаюсь производственной поддержкой, где есть «проблемы с плохими данными» на почасовой основе. Да, это безумие. Некоторые записи данных из одного из экземпляров (например, ниже, чем производство, конечно) были бы запущены пару недель назад и заставили некоторые другие данные пользователя получить повреждение. А затем, чтобы исправить эту проблему, должен быть написан сценарий данных. И я видел, как это происходит так с этим клиентом, что я должен спросить.

Я видел, как это происходит с умеренными темпами с другими клиентами, но это кажется просто не в порядке.

Если вы работаете с бизнес-приложениями, которые делят большой объем данных путем чтения и записи в/из той же базы данных, являются ли «плохие данные» распространенными в вашей среде?

+0

Можете ли вы определить «плохие данные»? Как данные повреждаются? Что вызывает повреждение данных? – Steven

+0

Примером того, что вы подразумеваете под плохими данными, было бы полезно. – 2009-12-15 12:38:16

+0

Не могли бы вы немного объяснить свой пример? Я не уверен, что вы говорите о запуске нескольких схем в одной базе данных для поддержки среды тестирования prod-интеграции или, если вы имеете в виду, что вы получаете перекрестное заражение от плохих тестовых данных, которые подхватываются производственными процессами, которые запрашивают несколько баз данных , Или что-то ! –

ответ

4

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

0

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

0

Я не думаю, что вы говорите о плохих данных (но было бы вежливо вас ответить на различные вопросы, поднятые в комментариях), но недействительными данными. Например, «9A!» хранящиеся в поле, которое должно содержать 3-значный кодовый код ISO, вероятно, являются недопустимыми данными и должны быть пойманы во время ввода данных. Плохое - это данные, обычно принимаемые как эквивалентные коррупции, вызванные ошибками диска и т. Д. Первые довольно распространены в зависимости от качества приложений ввода данных, в то время как последние довольно редки.

2

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

Также кажется, что многие люди, которые проектируют импорт данных, не утруждают себя чисткой данных, прежде чем положить их в свои система. Конечно, трудно найти все возможные способы испортить данные, я делал импорт в течение многих лет, и иногда я удивляюсь. Моей любимой была компания, где их пользователи ввода данных явно не интересовались именами полей, и приложение просто перешло к следующему полю, когда первое поле было полностью. Я получил такие имена, как «McDonald, Ja» в поле фамилии и «mes» в поле имени.

Я импортирую данные из многих, многих клиентов и поставщиков. Из сотен различных импортов, которые я разработал, я могу думать только один или два, где данные были чистыми. По какой-то причине поле электронной почты кажется особенно плохим и часто используется для заметок вместо электронных писем.Очень сложно отправить электронное письмо «Его секретарша - горячая блондинка».

0

Я предполагаю, что под «проблемами с плохими данными» вы подразумеваете «проблемы с данными, которые не удовлетворяют всем применимым бизнес-ограничениям».

Это может быть следствием двух факторов: плохой дизайн базы данных дизайнером базы данных (то есть: либо непреднамеренное, либо еще хуже - преднамеренное исключение ограничений целостности в определении базы данных), либо невозможность использования СУБД для поддержки более сложных типов ограничений базы данных в сочетании с ошибочной программой, написанной программистом, для обеспечения соблюдения ограничения целостности dbms-unsupported.

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

0

Если данные get повреждены, потому что пользователи закрывают свое приложение в середине сложных обновлений базы данных, транзакции - ваши друзья. Таким образом, вы не получаете доступ к таблице Invoice, но нет записей в таблице InvoiceItems. Если не завершено в конце процесса, все сделанные изменения откатываются назад,

Смежные вопросы