Смекни!
smekni.com

Почему SQL "тормозит"? (стр. 2 из 2)

До сих пор мы говорили о принципиальных различиях файл-серверных систем от клиент-серверных. Теперь немного о дополнительных преимуществах клиент-сервера.

Надежность. Клиент-серверные системы имеют встроенный механизм работы с транзакциями, в том числе и их отката. В файл-серверных версиях программ "1С" также имеется механизм работы с транзакциями, однако способ реализации их принципиально отличается. В файл-серверных версиях механизм транзакций представляет собой ни что иное, как просто блокировку всей базы данных до завершения выполнения критических по времени операций одной из рабочих станций. Откат возможен только при сохранении работоспособности рабочей станции, инициировавшей транзакцию. В клиент-серверной системе этот механизм (который реализуется программным обеспечением SQL-сервера - в нашем случае MS SQL Server 6.5) значительно более сложен. Он позволяет получить "слепок" базы данных на момент начала транзакции без блокировки базы данных. И слепков таких может быть много: для каждой рабочей станции - свой. В случае "зависания" рабочей станции, открывшей транзакцию, транзакция может быть просто откачена (т.е. база данных будет восстановлена в том виде, в каком она была до начала инициации транзакции). Откат осуществляется либо по запросу рабочей станции (при сохранении ее работоспособности), либо при перезагрузке рабочей станции, либо администратором SQL-системы. Таким образом, выход из строя рабочей станции не столь опасен для целостности базы данных. Кроме того, SQL-система ведет так называемый журнал транзакций. По сути база данных хранится в виде ее начального содержимого и ее модификаций записанных в журнал транзакций. Такой способ хранения позволяет производить архивирование базы данных во время работы всей системы: просто состояние базы данных фиксируется на момент начала архивирования, отсекаются незавершенные транзакции, а основная база и часть журнала транзакций, содержащая завершенные транзакции записываются в архив. Процесс архивирования легко поддается автоматизации, т.е. присутствие оператора необязательно - SQL-сервер имеет встроенные средства для этого.

Защита. В общем-то защищенность данных в значительной мере зависит от прикладной задачи (1С-Торговли или 1С-Расчета), однако по сравнению с обычным вариантом, в котором любой начинающий хакер спокойно может срубить пароль, в клиент-серверном варианте защита данных опирается на средства, предоставляемые SQL-сервером, что гораздо более недежно.

Гибкость применения. Системы на основе SQL-сервера позволяют построить сложные сетевые конфигурации со многими десятками и даже сотнями пользователей. При этом разработчику предоставляются широкие возможности по оптимизации системы, ее разделению по группам сложности и способам доступа. Серверы-репликаторы, например, дают прекрасный механизм для организации системы учета в крупной организации с разветвленной системой удаленных офисов, складов и т.п. При этом, работа на такой системе может вестись в реальном режиме времени, без перерывов для переноса и синхронизации данных - достаточно лишь организовать постоянные каналы связи 32-128 Кбит, что вполне осуществимо на наших телефонных линиях и не слишком дорого (конечно, в масштабе крупной компании).

Ну и наконец пора поговорить о недостатках. Недостатков у SQL-систем много - и крупных и мелких - тех же самых, которые присущи и файл-серверным системам. Однако есть два и весьма существенных.

Первый Вы наглядно увидите в прайсе фирмы "1С" - это цена. Цена не только программного обеспечения, но и цена железа на котором оно может функционировать и цена обслуживания. Ну, что же делать - SQL это продукт высоких технологий. А продукт высоких технологий всегда стоит дорого и должен эксплуатироваться грамотным персоналом, поэтому и системный администратор, способный грамотно работать с SQL-системой обойдется дороже, чем аналогичный специалист для обычной файл-серверной системы.

Второй - это существенные недоработки клиентской части программ комплекса 1C:Предприятие для SQL. В тех версиях, которые пока выпущены в продажу, далеко не полностью используются преимущества SQL сервера. Разработчик или поленился или не успел реализовать в полной мере возможности, предоставляемые средствами SQL сервера, поэтому во многих случаях там, где можно ожидать выполнения несложного SQL-запроса программа просто (как это делалось и в файл-серверной версии) перекачивает на локальный компьютер всю базу данных, вернее ее часть, и затем продолжает работу с локальной копией. Это с "внутренней" точки зрения, а внешне, для пользователя это выливается в те самые "тормоза" о которых пишут в конференции. Остается только надеяться, что со временем фирма "1С" доработает свои SQL-продукты таким образом, что функциональность SQL-сервера будет использоваться значительно более полно. В оправдание фирмы "1С" могу заметить, что программный продукт такой сложности всегда развивается постепенно - ведь если пытаться выпустить на рынок полностью "вылизанный" продукт высочайшего качества, то этого можно просто не дождаться. Все софтверные компании, выпускающие продукты высокой степени сложности идут именно по пути постепенного улучшения первоначально выпущенного продукта. Тот, кто пытается нарушить эту традицию обычно терпит крах на этом пути. Достаточно вспомнить историю с выпуском Windows 95 фирмой Microsoft: выпуск продукта все оттягивался и оттягивался, несмотря на многократные анонсы и переносы сроков, и в конце концов на рынок был выброшен недоработанный продукт. А уже потом были выпущены OSR1 и OSR2, однако продукт так и стался "сырым".

Теперь пора подвести некоторые итого. Не ждите, что SQL-системы будут работать быстро. Но они смогут работать там, где файл-серверный вариант не сможет, или же будет создавать существенные неудобства (удаленный доступ). Однако и обойдется это Вам не дешево.

Вот, пожалуй, и все. Надеюсь, что этот краткий обзор позволит Вам хоть немного сориентироваться в вопросе, что такое SQL и зачем он нужен.