Суббота, 18.05.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2017 » Июнь » 28 » Медицинская база (1С и SQL Server)
17:30
Медицинская база (1С и SQL Server)

Медицинская база (1С и SQL Server)

Свежая база лежит тут:
https://drive.google.com/open?id=0B3i2SFYLER0HWDJHWVRtb2VyU3c

Любое действие имеет смысл делать только если на то есть достаточная причина. Скорость работы с информацией зависит от объема информации (т.е сколько вообще данных надо обрабатывать), тактовой частоты процессора (сколько примитивных операций в секунду выполняется) и эффективности работы с информацией (это зависит от эффективности используемого инструментарии и качества работы программиста, который использует этот инструментарий).
Довольно часто объем информации столь мал, что не важно что и как с ней работает. Домашнюю бухгалтерию с закупкой батона и колбасы раз в неделю можно хранить хоть в текстовых файлах. Мощности средних современных компьютеров таковы что даже с информаций в таком виде всё будет работать с приемлемой скоростью.
Можно купить самый мощный на данный момент компьютер. Тогда и с большим объемом данных он скорее всего хоть как-то но справится. И тоже не очень важно в каком виде хранятся данные и как с ними работают.
Но обычно всё-таки приходится работать с объемами большими чем та самая домашняя бухгалтерия и на машинах средней мощности. А это означает что вопрос эффективности может возникнуть. Потому я и опишу стандартный способ увеличения скорости работы с информацией который используется когда информации хоть сколько-нибудь много.
В настройках подключения базы у меня задано так:

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

Кластер это то, что 1С-овцы обозвали словом «кластер». Ниже покажу, где он (с его установками) находится.
Теперь про то, что установлено у меня на компьютере:

Я никоим образом не рекомендую именно эти версии. Использовать надо то, что не вызывает «геморроя». Точно также как «на машине надо ездить, а не лежать под машиной». Разные бывают причины что-то ставить и не ставить. Я, например, не ставлю версию 1С 8.3 просто потому, что мне надо то, что стоит на большинстве машин в стране. Привычки у меня такие.
Так или иначе кроме основной оболочки 1С, вызываемой по ярлыку «1С Предприятие» должен быть сервер 1С предприятия (ярлык «Администрирование серверов 1С Предприятие»), т.е то что работает с базами 1С.
Следующее -  сам SQL Server… с которым напрямую работать нельзя. С самим сервером общаются только другие программы на понятном этим программам языке (обмен последовательностями нулей и единиц). Сервер 1С умеет общаться с SQL Server-ом. А человеку для общения с тем же сервером нужна специальная программа которая переводит нажатие кнопок в те самые понятные серверу коды, отправляет их ему,  получает от него ответ и выводит на экран в удобном для человека виде. Это программа -SQL Server Management Studio которая устанавливается отдельно потому что сам по себе сервер прекрасно работает и без неё.
Такие программы называют оснастками, оболочками, консолью. То, что вызывается по ярлыку «Администрирование серверов 1С Предприятие» используется для аналогичных целей. Вызывается программа, позволяющая что-то делать информацией в режиме диалога (т.е щелкая мышью по кнопками).
Вот так это выгладит:

Здесь видно то самое имя NOTEBOOK-4D2693 (которое при установке сервера берётся из имени машины в локальной сети) и список подключенных баз.
Локальные сети давно стали привычным делом даже в квартирах. 1С вместе с базой может быть установлен нa любой машине. Чтобы обратиться к информации (на той машине) достаточно правильно написать её имя и все запросы информации по сети будут передаваться на ту машину а не на свой локальный диск.
Свойства 1C-овской базы:

«Имя» (med) – имя, которое задаётся в оболочке конфигуратора и имя, которое передаётся серверу 1С (чтобы он знал, откуда брать информацию).
«Тип СУБД» (MS SQL Server) формат, в котором храниться информация и та программа (в данном случае SQL Server) которой будут отправляться запросы (команды) для работы с информацией.
«Сервер баз данных» (NOTEBOOK-4D2693\SQLEXPRESS) – полное сетевое имя уже SQL Server-а.
«База данных» (med) , «Пользователь сервера БД» (sa), «Пароль пользователя БД» (*) – это уже информация, которая будет передаваться SQL Server-у. Этому серверу тоже надо знать с какой своей базой работать и от чьего имени ведётся работа. Названия (med) совпадать не обязаны, а «sa» – обычное имя системного администратора SQL Server-а (у которого есть все права на изменение информации).
Так выглядит оболочка для работы с SQL Server-ом:

Сверху, слева – имя SQL сервера, ниже список подключенных баз SQL сервера, снизу список пользователей (включая sa) а справа – кусок прочитанной информации из одной из таблиц (какая-то загадочная «Основная картинка»).
Таблиц для хранения информации довольно много:

… потому что база уже довольно большая. Все данные (не программы!), видные из Конфигуратора:

… каким-то образом рассованы по этим таблицам. Можно глазами просмотреть все эти таблицы и понять что где храниться.
Но проще запустить Express Profiler (программа, которая перехватывает и выводит на экран все команды, которые передаются SQL серверу) и посмотреть, что отправил сервер 1С при, например, открытии справочника объектов:

Он там много чего отправил, причем при втором открытии список был сильно короче. Но пусть так:

Что тут делается и почему так я не знаю. Это какая-то внутренняя работа 1С. Но я точно знаю что чтобы вывести на экран список объектов их надо прочитать из какой-то таблицы. Потому меня заинтересовало имя Reference7 находящееся в SQL – строке после FROM. Я не ошиблась:

Есть таблица Reference7, в ней действительно хранится список объектов, а работать с этой информацией я могу ничуть не хуже сервера 1С. Могу даже узнать, какие строки были введены последними, написав вручную SQL строку для выборки информация (сортировка по коду, по убыванию).
Здесь важно то, что с информаций работают две программы (два сервера: 1С сервер и SQL сервер) и моя личная писанина. Т.е суммарная эффективность это эффективность вот этого всего вместе. У SQL сервера есть масса внутренних механизмов ускоряющих работу с информацией. Он, например, некоторое время хранит то, что у него недавно запрашивали и при повторном запросе не выбирает а сразу передаёт то, что храниться в каком-то  внутреннем буфере. Потому использование его (как программы написанной для обработки любой информации в табличном виде) позволяет задействовать все эти механизмы. Это и приводит к увлечению скорости.
У хранения на SQL сервере в общем случае есть и другие плюсы. К медицинской базе это отношения не имеет потому про них в другой раз.
SQL сервер (EXPRESS версия) официально бесплатный. Скачать и установить его не сложнее чем 1С.
Так что если хочется побыстрее, то это первое, что имеет смысл установить.

Просмотров: 213 | Добавил: akostina76 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Календарь
«  Июнь 2017  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
2627282930
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz