Грабли модные: xml внутри базы данных
При каждом скачке в развитии вычислительной техники у разработчиков информационных систем возникает эйфория, связанная со снятием ограничений на объемы хранимой информации и скорости ее переработки. Но всякий раз выясняется, что, даже вооружившись современными высокопроизводительными серверами, все можно спроектировать настолько плохо, что работать это не будет. Или будет работать годами.
Формат XML придумали для того, чтобы обмениваться информацией между разнородными системами, и в этом смысле его значение сложно переоценить. Но он хорош именно для обмена данными. Использовать этот формат для хранения больших объемов информации, предназначенной для постоянного использования, переработки и изменения, не следует. Для этого существуют базы данных и системы управления ими. Но вот незадача: чтобы манипулировать информацией в таблицах базы данных с разными полями, нужно писать разные процедуры, а в XML все можно делать ровно одной.
И обрадованный этим разработчик, «вооруженный передовой технологией», создает в базе таблицы с ключом и одним очень длинным текстовым полем, куда запихивает информацию в XML.
И все работает, пока такие записи нужны поштучно. Не так много времени требуется и для того, чтобы вывести пару десятков таких записей на экран. Но вот бизнес-заказчик просит отчет, который требует перелопачивания всех таких записей в базе. Процедуру для отчета написать получается, но работает она уже часами. Оно и понятно: все средства СУБД, заточенные для выбора нужной информации (например, индексирование), теперь применить нельзя, ибо нужно залезать в каждую запись, расшифровывать нотацию XML и только затем выяснять, нужна ли она для обработки.
Нетленные универсальные грабли
Еще одни вечные грабли – попытка вместо решения конкретной задачи создать универсальное решение. Эти грабли бывают программистскими (сооружается, например конструктор форм или генератор отчетов) или консультантскими (сооружается «универсальный модуль управления процессами» или еще какой-нибудь «модуль управления понятиями»). Результат можно наблюдать во многих тиражных системах – каждая содержит по четыре-пять различных генераторов отчетов (причем на практике все равно отчеты либо программируются, либо получаются специализированными средствами напрямую из базы данных) и «модуль управления бизнесом» (при ближайшем рассмотрении – еще один генератор отчетов). – Д. К.
При следующей просьбе бизнес-заказчика обработка информации в отчете усложняется. Процедура снова пишется, но через полчаса после ее запуска сервер приложений падает, всхлипнув напоследок: «Out of memory»
Грабли детские: использование excel для обмена информацией
Описываемые грабли имеют небольшой размер, поэтому бьют не по лбу, а гораздо ниже. Но бьют гораздо чаще остальных. Это единственные грабли, на которые при мне наступили более ста раз.
Для работы с таблицами Excel штука очень удобная, но, к сожалению, обладающая зачатками интеллекта, который иногда применяет чрезвычайно не к месту. Например, если вы заранее явно не указали формат ячейки, в которую помещаете информацию, Excel сам догадывается, что вы имели в виду.
Рисуете вы накладную, записываете в ней цену 1 рубль 5 копеек, то есть 1,05, а Excel сам догадывается, что вы имели в виду 1 мая, что и записывает в ячейку. Вы ему кричите: «Я хотел ввести число!» – и он соглашается: «Число, так число», – и вы с изумлением обнаруживаете в ячейке 39569.00…
Пока вы вводили данные руками сами, все было не очень страшно: попили валокордина, установили у ячейки правильный формат и ввели то, что хотели.
Гораздо веселее, когда в Excel выплюнула отчет информационная система, а программист, который писал этот отчет, не знал, что надо описать форматы ячеек, в которые выводил информацию, или поленился это сделать. Потому что теперь мест в таблице, где стоит то 3 марта, то 31 декабря, может оказаться несколько тысяч.
Еще интереснее получается, когда вы пытаетесь с помощью таблиц в Excel выравнивать информацию в двух информационных системах: количество моментов, в которые этот технический гений сможет вам услужить, будет гораздо больше. И уже несколько программистов должны будут не забыть предварительно описать форматы.
Как следствие, меняться табличной информацией лучше все-таки в старом добром формате DBF или в новомодном XML, которые даже Excel будет понимать правильно.
Читать дальше
Конец ознакомительного отрывка
Купить книгу