
"1C:Предприятие" для SQL
Игорь Котельников, Астро Софт IgorK@AstroSoft.ru
В соответствии с Cоглашением о Лицензировании и Дистрибуции SQL Server, заключенным между корпорацией Microsoft и фирмой "1С", фирма "1С" выпускает объединенные продукты класса "1С:MS SQL Предприятие", включающие компоненты как "1С:Предприятия", так и сам Microsoft SQL Server 6.5 с пятью клиентскими лицензиями. Выход нового класса изделий позволит предприятиям различного вида и масштаба активно использовать передовые технологии, которые реализованы в программных продуктах "1С" на платформе Microsoft SQL Server.
Несмотря на то, что платформа 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. Знакомьтесь - "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С" настоятельно рекомендует использовать именно поставляемые драйверы, не неся ответственности за последствия экспериментов в этой области, если они будут иметь место.
Требования к клиенту:
Программные требования:
Требования к сети - на сервере пропускная способность сети должна быть 100 Мб/с, для клиентских машин достаточно 10 Мб/с. В силу тотального использования серверных курсоров, "1С:Предприятие" является "жадным" приложением - рекомендуется использовать сервер исключительно как SQL сервер - никакими другими службами нагружать его не рекомендуется.
"1C:Предприятие" еще достаточно молодо. Поэтому говорить о большом опыте его внедрения было бы преждевременно. Мы и не будем - вернемся к этой теме несколько позже, когда этот опыт будет накоплен. Однако некоторый опыт уже есть: дело в том, что "1С" автоматизирует саму себя, используя свои же собственные разработки. Так, вся система сбыта автоматизирована с помощью "Оперативного учета для SQL". И сделано это было еще в далеком январе месяце. Рекомендации по аппаратной части были сформированы именно на опыте эксплуатации системы в "1С" примерно в таких условиях:
Среднее число одновременных подключений (работающих с системой клиентов) - 25-30; около 2000 наименований товара и более 6000 клиентов; документооборот - около 250 документов в день, в среднем по 5 товарных позиций в каждом.
Думаю, что вы достаточно хорошо представляете себе, что такое среднестатистический российский компьютер, каково качество наших локальных и силовых сетей, каков уровень персонала, решающего предметные задачи, - короче, знаете и без меня о том, что зависание клиентского компьютера дело привычное. Если речь идет о зависании клиента при работе с 200 и выше мегабайтной базой данных, то при работе с dbf-файлами за то время, которое понадобится для переиндексации, все пользователи смогут, наконец, хорошо отдохнуть. При работе с SQL платформой количество клиентских "вылетов" не уменьшится, но вот отдыхать уже не придется - слово "переиндексация" будет всплывать только в кошмарных снах. Целостность базы данных не нарушается, и перерывов в работе не возникает.
Еще одно преимущество при использовании SQL-версии - большая открытость системы. Допустим, "1С:Предприятие" - не единственная программа, работающая с данными в формате SQL, которую вы используете для автоматизации своего предприятия. Построение единой системы на базе этих двух (и более) программ дело, если и не тривиальное, то достаточно стандартное - вы создаете триггеры, модифицируете или создаете необходимые хранимые процедуры, и при любом изменении данных при работе в одной из программ SQL сервер модифицирует данные, используемые другой программой.
Так, один из наших клиентов внедряет следующую концепцию: на "1С:Предприятии для SQL" строится весь ввод первичных документов, бизнес-логика реализована на программе собственной разработки, а отчеты строятся с помощью Crystal Reports. Макет уже работает.
В отличие от прошлых комплектов "1С" и Microsoft, результатом в данном случае является не просто маркетинговое и ценовое соединение популярных "коробок", а действительно интегрированное решение. "1C:Предприятие 7.5 + MS SQL Server 6.5" представляет собой единый продукт, который поставляется в единой коробке, на едином CD-ROM, с единой системой администрирования. Для установки компонент продукта используется комплексный инсталлятор, что увеличивает технологичность их использования и уменьшает затраты на запуск.
Приобретая в комплекте "1C:Предприятие 7.5 + MS SQL Server 6.5" пользователь получает, кроме дополнительного сервиса, значительный выигрыш в цене. Экономия при приобретении совместного продукта составляет порядка 40% по сравнению с приобретением продуктов по отдельности. Политика лицензирования в составе совместного продукта является очень гибкой - пользователь приобретает то количество дополнительных клиентских лицензий к SQL Server, которое ему необходимо на конкретный момент.