Последние записи
- Исходник программы «азбука Морзе»
- Рассылка. Выпуск 139
- Как в коснольном приложении открыть диалог сохранения?
- Поддержка drag and drop для Tlistview?
- Создание структуры бд для рерайтера
- Получить набираемое слово в memo
- Записать StringGrid1 в двумерный массив
- Вычислить контрольную сумму строки
- Программный подсчёт комбинаций и вероятностей в покере, создание покер бота
- Завтра отменят службу в армии. А вы еще служите или служили. вам обидно будет?
28th
Авг
SQL враг или друг?
Posted by Chas under Статьи
После сдачи летней сессии я уехал домой в деревню “хорошо в деревне летом пристаёт ???? к штиблетам”. Взял с собой ноутбук, что бы не было скучно и с предвкушением долгожданного отдыха, заранее предупредив работодателя, что мне всё надоело и я беру отпуск, уехал.
Через некоторое время раздался телефонный звонок, это был мой школьный друг, он на лето нашёл работу в какой то канторе (как оказалось позже это не большая фирма но с кучей складов) его посадили за комп и сказали работай. Так вот он на выходные напросился приехать в гости, что бы отметить это дело рюмочкой чая. Но когда за рюмочкой чая были сказаны слова в адрес того, что у него на работе очень плохо работает БД и что главному админу приходится прятаться в туалете от разъяренных операторов, которые ждут завершения транзакта по 2-3 минуты, от этих слов мне стало обидно и сам не понимая этого, я сказал, что мы с тобой всё поправим “как оказалось зря я это сказал” вот и кто за язык тянул.
В понедельник мне прошлось отложить на время вилы и лопату и уехать в город. Когда я увидел как у них построена ИС я просто ужаснулся. Сервером была машинка “Intel Pentium 3 ” с тактовой частотой если не ошибаюсь 780 мегагерц. И около 100 компьютеров клиентов которые естественно были не меньше чем Пень 4. Дааа. Интересно кто у них занимался обгрейдом
База сама стояла на MSSQL сервере клиенты были сделаны правда в Delphi но очень коряво. Вся проблема состояла в том, что все действия производились только с помощью SQL команд. Будь то тривиальный [select * from ххх] и даже обыкновенная сортировка в таблице номенклатуры, вызывалась прямо с сервера. А теперь представьте у вас 100 да пусть даже 50 компьютеров делают одновременно запрос вывода всех данных и все запросы разные. Комуто вывод данных о клиенте, комуто сортировка списка, комуто вообще запись или редактирования данных. И что? спросите вы. Не чего хорошего. У мен сразу возник вопрос интересно если отцепить HDD от корпуса он взлетит или нет.
Физически все записи находятся в разных частях диска. а записей там порядком: архивы, документы, ссылки и т.д. и т.п. Шпиндель не успевает делать поставленную задачу (особенно если это запись). Оперативная память забита под завязку + “форточки со своими сервисами” кто-то умный догадался сделать 10 гигабайтную зону свопинга на HDD. Мне так стало жаль этот маленький (ну правда не такой уже и маленький 200гб) жёсткий диск, что я счёл для себя делом чести помочь этим горе админам. При всём при том, что они не виноваты.
Когда я стал общаться с главным админом, то он раскрыл мне секрет, что ему уже давно обещали новую технику, но когда он сказал, что для переноса системы придётся на некоторое время отключить БД хотя бы на одну ночь для грамотного переноса, то администрация, подумала и сказала “НЕТ”. Так он уже почти пол года и скрывается то в кабинете, то в туалете, а то были случаи физического насилия со стороны “ТУПЫХ” операторов, которые и умеют, что на кнопки жать. Я его понимаю, он не программист, его дело следить за сетью, хотя ….
Первым делом я ознакомился со структурой БД для реализации этой базочки были использованы все реляционные штучки: такие как связи “1-1″ и т.п. и т.д. Конечно времени небыло, что бы переделывать всю БД мне хотелось разобраться с клиентами и что бы от меня отстали.
Сначала я избавился от всех лишних запросов. Тоесть я всё что делает локальная машина сделал руками, сортировки, поиски фильтрации ну и всякую лабуду. Я использовал, самые быстрые и надёжные алгоритмы, которые уже проверены веками.
Но не всё оказалось так гладко, объём информации на локальных машинах оказался велик и мне по этому пришлось создавать не большую локальную копию БД (но только то, что нужно было именно на данной машине) И все сортировки и поиски производи лись не внутренними способами а внешними.
Затем я упростил запросы к серверу, убрал все операции соединения сложения и т.д. к с сервера приходила только отфильтрованная информация от оператора where всю остальную работу делала локальная машина. Без изменения осталась только операция записи.
На всё это у меня ушло около 2х недель но результат был не скажу, что обалденный, но больше админ у сортире не прятался. это была моя первая подобная крупная система. Только вот что обидно через некоторое время начальство решило поставить 1С на все компы. Моему разочарованию небыло придела.
В итоге хочу сказать начинающим (и не только) программистам не злоупотребляйте SQL запросами там, где это совсем не нужно. Данный язык очень хорош, он облегчает труд программиста, но облегчая себе работу мы порой забываем о другой стороне медали, а она не всегда так же радостна и хороша как и первая.
p.s. Хотел бы посоветовать кое какие книги
- Альфред В. Ахо, Джон Э. Хопкрофт, Джефри Д. Ульман “Структура данных и алгоритмы”
- Джефри Д. Ульман “Введение в системы БД”
- К.Дж.Дейт “Введение в системы баз данных”
- Дональд Э. Кнут “Искуство программирования том3″ Лучше всё
- Кагаловский Михаил “Базы данных для экономистов”
- Глушков Виктор Михайлович “Обработка информационных массивов в АСУ” киев 1974 год
У кого есть две последние книги или в электронном формате или в обыкновенном большая просьба напишите мне на адрес boltonpoul@yandex.ru
Похожие статьи
По выгодной цене можно купить ноутбук в нашей компании
интернет магазин компьютерной техники
Чтобы узнать где дешевле сравните цены. Где купить Компьютеры в Омске дешевле.
