"1C:Предприятие" для SQL


Игорь Котельников, Астро Софт IgorK@AstroSoft.ru



Прошлое, настоящее, будущее
ак мы уже писали ("КИ", 12/98), фирма "1С" ознаменовала начало лета выпуском двух коммерческих релизов компонент системы "1С:Предприятие" на платформе Microsoft SQL Server 6.5 - а именно: компонентами "Оперативный учет", "Расчет", и бета-версией компоненты "Бухгалтерский учет". А это значит, что, скорее всего, осень 1998 года фирма "1С" встретит полным строем клиент-серверных компонент. Событие для продукта, для фирмы, да и для всего рынка достаточно важное.

Несмотря на то, что платформа dbf исторически была основной платформой для всех программных продуктов "1С", этот клиент-серверный опыт - не первый для фирмы. Напомним, что для продукта "1С:Бухгалтерия 6.0" более двух лет назад было создано клиент-серверное решение на платформе Btrieve. Программа успешно используется и имеет спрос среди приверженцев шестой версии до сих пор.

Почему в качестве платформы для клиент-серверного решения в рамках технологии V7, на которой базируются все продукты системы "1С:Предприятие", был выбран Microsoft SQL Server 6.5? Причин несколько. Их можно условно разделить на два класса - технологические и конъюнктурные (в хорошем смысле). Сначала технологические, - во-первых, Microsoft SQL Server 6.5 в большей степени масштабируем, чем тот же Btrieve, во-вторых, он, все-таки, настоящий SQL-сервер, в отличие от фактически реализующего ISAM концепцию на клиент-серверном уровне Btrieve. Если же сравнивать Microsoft SQL Server с другими продуктами этого класса, то стоит вспомнить о том, что по результатам независимых тестов эта система является лидером по таким основным критериям, как производительность и соотношение цена/производительность на адекватных аппаратных платформах. Что касается конъюнктуры, то здесь все очевидно: "1С" - фирма серьезная, планирующая свою деятельность надолго вперед, поэтому вопрос стоял не о выборе конкретной платформы для конкретного продукта, а о выборе клиент-серверной платформы для создаваемой "1С" технологии комплексной автоматизации работы предприятия. Т.е. надежность и перспективность выбираемой клиент-серверной платформы имеют принципиальное значение. Как можно ставить себя в зависимость от продуктов компании, которая за последнее время несколько раз переходила из рук в руки (это о Btrieve)? Вопрос риторический. В устойчивости же Microsoft пока сомневаться не приходится. Да и по всему видно, что уже сейчас и в ближайшем обозримом будущем наиболее популярный сервер баз данных - Microsoft SQL Server на платформе Windows NT. Соответственно и число специалистов по нему будет больше, чем по другим аналогичным продуктам.


Что это такое?
Я попытаюсь обобщить то, чем обычно интересуется специалист по автоматизации предприятия, когда разговор заходит о том, что, собственно, собой представляет "1С:Предприятие для SQL". Вне зависимости от того, какая платформа, dbf или SQL, используется, работающая система состоит из трех структурных составляющих

РИСУНОК 1. Знакомьтесь - "1С:Предприятие для SQL"

Используя эти понятия, полное формальное описание отличия состава SQL-версии от dbf-версии выглядит так.

1. В состав SQL-версии, в отличие от файл-серверной, входит процессор доступа к данным (engine), реализующий промежуточный слой между платформой "1С:Предприятие" и ODBC-драйвером к SQL-серверу. Соответствующий модуль для работы с dbf-файлами тоже присутствует, благодаря чему эта версия может работать и с данными в dbf-формате.

2. В отличие от dbf-версии, где файлы пользовательской конфигурации находятся в том же каталоге, что и файлы базы данных, в случае SQL-версии файлы пользовательской конфигурации, включающие файл-ссылки на SQL-базу данных, находятся в отдельном каталоге, а данные находятся в SQL-базе данных.

Или то же самое, но неформально - с точки зрения пользователя, как конечного, так и настройщика "1С:Предприятия", между версиями для dbf и для SQL нет абсолютно никаких отличий. Настолько, что я не уверен в том, что сам 1cv7.exe понимает, с каким представлением данных он работает в настоящий момент.

Что собой представляет SQL-база данных "1С:Предприятия"? На основании данных пользовательской конфигурации "1С:Предприятие" создает в базе данных набор таблиц, соответствующих dbf-файлам, рис.2.

РИСУНОК 2. Структура базы данных на SQL сервере

Те из вас, кто интересовался структурой файлов "1С:Предприятия" в dbf-формате, обнаружат их полное сходство со структурой SQL-таблиц. Кроме того, создаются необходимые хранимые процедуры. Основное назначение хранимых процедур в нашем случае - обеспечение простейших операций над таблицами - добавление, модификация записей и т.д. Основная обработка выполняется на клиенте. Выборки данных из таблиц производятся, в основном, с помощью серверных курсоров. Такая идеология работы с SQL-данными не позволяет на 100% использовать преимущества SQL-сервера, однако обеспечивает легкость переноса с одной платформы хранения данных на другую и 100% совместимость с dbf-версией системы по конфигурированию за счет использования тех же самых модулей программы "1С:Предприятие".

С точки зрения системы безопасности SQL-сервера с базой работает только один пользователь, вне зависимости от реального числа клиентов "1С:Предприятия", т.е. все они используют для работы одну и ту же учетную запись. Сами ODBC-драйверы входят в комплект поставки "1С:Предприятия для SQL", и "1С" настоятельно рекомендует использовать именно поставляемые драйверы, не неся ответственности за последствия экспериментов в этой области, если они будут иметь место.


Рекомендуемое оборудование и опыт реального использования
Минимальные требования к оборудованию соответствуют требованиям самого Microsoft SQL Server, однако, мало что дают для конкретной ситуации. А требования в конкретной ситуации зависят от многих факторов: объем и структура базы данных, количество одновременно работающих клиентов, характер и интенсивность их обращения к данным, особенности используемой прикладной конфигурации и т.д. Фирма "1С" рекомендует использовать в качестве сервера компьютер со следующими характеристиками

Требования к клиенту:

Программные требования:

Требования к сети - на сервере пропускная способность сети должна быть 100 Мб/с, для клиентских машин достаточно 10 Мб/с. В силу тотального использования серверных курсоров, "1С:Предприятие" является "жадным" приложением - рекомендуется использовать сервер исключительно как SQL сервер - никакими другими службами нагружать его не рекомендуется.

"1C:Предприятие" еще достаточно молодо. Поэтому говорить о большом опыте его внедрения было бы преждевременно. Мы и не будем - вернемся к этой теме несколько позже, когда этот опыт будет накоплен. Однако некоторый опыт уже есть: дело в том, что "1С" автоматизирует саму себя, используя свои же собственные разработки. Так, вся система сбыта автоматизирована с помощью "Оперативного учета для SQL". И сделано это было еще в далеком январе месяце. Рекомендации по аппаратной части были сформированы именно на опыте эксплуатации системы в "1С" примерно в таких условиях:

Среднее число одновременных подключений (работающих с системой клиентов) - 25-30; около 2000 наименований товара и более 6000 клиентов; документооборот - около 250 документов в день, в среднем по 5 товарных позиций в каждом.


Зачем это нужно
А теперь главное - зачем нужна SQL платформа "1С:Предприятию", и что дает ее использование:


Производительность при увеличении
количества пользователей и объемов данных
Обычно самая первая причина, по которой организация может принять решение о переходе на технологию клиент-сервер - это необходимость устойчивой и производительной работы системы при увеличении количества одновременно работающих пользователей и объемов информационной базы. Реально преимущества технологии клиент-сервер с точки зрения производительности проявляется именно в незначительности снижения скорости работы системы при увеличении количества пользователей. В версии "1С:Предприятия" для SQL это достигается не только за счет снижения объема передаваемых по сети данных, но и за счет выполнения части процедур бизнес-логики непосредственно на сервере. Правда, ввиду особенностей реализации, которые мы отмечали выше, этот эффект проявляется не в той степени, как могло бы быть - за все надо платить. Это связано в том числе и с тем, что фирма "1С", несмотря на выпуск клиент-серверной версии основного продукта, по-прежнему считает наиболее важным для себя рынком малые и средние предприятия и ориентируется в первую очередь на них, не претендуя на корпоративный сектор. Поэтому в нашем случае, на первое место выходят все-таки две следующие причины.


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

Думаю, что вы достаточно хорошо представляете себе, что такое среднестатистический российский компьютер, каково качество наших локальных и силовых сетей, каков уровень персонала, решающего предметные задачи, - короче, знаете и без меня о том, что зависание клиентского компьютера дело привычное. Если речь идет о зависании клиента при работе с 200 и выше мегабайтной базой данных, то при работе с dbf-файлами за то время, которое понадобится для переиндексации, все пользователи смогут, наконец, хорошо отдохнуть. При работе с SQL платформой количество клиентских "вылетов" не уменьшится, но вот отдыхать уже не придется - слово "переиндексация" будет всплывать только в кошмарных снах. Целостность базы данных не нарушается, и перерывов в работе не возникает.


Защита данных от
несанкционированного доступа
Еще одним важным преимуществом версии "1С:Предприятия" для SQL является возможность организации надежной защиты данных от любого доступа, не предусмотренного средствами администрирования для конкретного пользователя. В отличие от dbf-версии, в версии для SQL авторизация пользователя "1С:Предприятия" однозначно увязана с подключением к соответствующей базе сервера. Это позволяет защитить данные от просмотра и редактирования как средствами "1С:Предприятия", так и любыми другими средствами.

Еще одно преимущество при использовании SQL-версии - большая открытость системы. Допустим, "1С:Предприятие" - не единственная программа, работающая с данными в формате SQL, которую вы используете для автоматизации своего предприятия. Построение единой системы на базе этих двух (и более) программ дело, если и не тривиальное, то достаточно стандартное - вы создаете триггеры, модифицируете или создаете необходимые хранимые процедуры, и при любом изменении данных при работе в одной из программ SQL сервер модифицирует данные, используемые другой программой.

Так, один из наших клиентов внедряет следующую концепцию: на "1С:Предприятии для SQL" строится весь ввод первичных документов, бизнес-логика реализована на программе собственной разработки, а отчеты строятся с помощью Crystal Reports. Макет уже работает.


Экономические выгоды использования
"1С:MS SQL Предприятия"
Выход продуктов серии "1С:MS SQL Предприятие" дополняет масштабируемость системы "1С:Предприятие" законченностью поставляемых решений, обеспечивающих полный набор средств для автоматизации экономической деятельности с весьма выгодными ценовыми условиями.

В отличие от прошлых комплектов "1С" и Microsoft, результатом в данном случае является не просто маркетинговое и ценовое соединение популярных "коробок", а действительно интегрированное решение. "1C:Предприятие 7.5 + MS SQL Server 6.5" представляет собой единый продукт, который поставляется в единой коробке, на едином CD-ROM, с единой системой администрирования. Для установки компонент продукта используется комплексный инсталлятор, что увеличивает технологичность их использования и уменьшает затраты на запуск.

Приобретая в комплекте "1C:Предприятие 7.5 + MS SQL Server 6.5" пользователь получает, кроме дополнительного сервиса, значительный выигрыш в цене. Экономия при приобретении совместного продукта составляет порядка 40% по сравнению с приобретением продуктов по отдельности. Политика лицензирования в составе совместного продукта является очень гибкой - пользователь приобретает то количество дополнительных клиентских лицензий к SQL Server, которое ему необходимо на конкретный момент.


КОМПЬЮТЕР ИНФОРМ