Сетевые системы контроля доступа включают несколько (много) считывателей и один или несколько (или много) контроллеров или компьютеров, объединённых в единую систему через сеть передачи данных. Сетевые СКУД - это уже комплекс программных и аппаратных средств, обеспечивающий
* открытие/блокировку прохода на охраняемые территории офиса/здания/предприятия, * возможность мониторинга событий в реальном времени и прямого управления оборудованием с компьютера оператора службы охраны, * сбор и обработку информации о перемещении персонала по объекту, * назначение сотрудникам различных прав доступа - по помещениям, по времени и по статусу, * организацию и учет рабочего времени сотрудников компании, * оформление карт доступа в виде пропусков с фотографией и данными сотрудника, * составление и распечатку различных отчетов, * автоматизацию табельного и кадрового учета, * возможность импорта в систему имеющихся в электронном виде данных о сотрудниках, * управление режимами работы и автоматикой автостоянок, * управление пропуском автотранспорта на контролируемую территорию, * мониторинг работоспособности оборудования и конфигурирование системы.
В сетевой СКД при обрыве коммуникаций или выходе из строя управляющего компьютера, контроллеры переходят в автономный режим работы, накапливая события проходов в собственной памяти. При восстановлении коммуникаций контроллеры пересылают все накопившиеся события на управляющий компьютер, обеспечивая информационную целостность работы системы.
Все сетевые системы организованы по модульному принципу: приобретя начальный комплект, вы можете по мере необходимости наращивать систему, расширяя контролируемую территорию и круг решаемых задач.
Такие системы контроля и управления доступом позволяют обеспечить их интеграцию с современными системами охранно-пожарной сигнализации и системами видеонаблюдения, что приводит к более высокой эффективности использования как СКУД, так и всей системы обеспечения безопасности объекта.
Аббревиатура СКУД представляет собой интеллектуальный замок на вашей двери. Конечно, под понятием электрозамок может скрываться масса устройств, преграждающих проход в помещение (здание, территорию и т.д. и т.п.). Все эти устройства в системах контроля доступа обозначаются термином исполнительные устройства. Исполнительным устройством может быть собственно электрозамок (электромеханический или электромагнитный), электромеханическая защелка, турникет, шлагбаум и т.п.
Собственно, любая СКУД предназначена для того, чтобы автоматически пропускать тех, кому это положено, и не пропускать тех, кому это запрещено. СКУД позволяет в любое время обеспечить контроль за ситуацией, порядок, безопасность персонала и посетителей, сохранность материальных ценностей и информации. Все отличия существующих систем состоят в том, насколько надежно, качественно, и удобно для пользователя осуществляются функции системы контроля доступа.
Системой контроля доступа (СКД) называется совокупность программно-технических средств и организационно-методических мероприятий, с помощью которых решается задача контроля и управления посещением отдельных помещений, а также оперативный контроль перемещения персонала и времени его нахождения на территории объекта. Действительно, СКУД это не только аппаратура и программное обеспечение, это продуманная система управления движением персонала.
ХЭШ-Функция
Хеширование.
Выше мы вывели ряд списковых структур, позволяющих программе-клиенту осуществлять поиск и выборку данных. В каждой такой структуре метод Find выполняет обход списка и ищет элемент данных, совпадающий с ключом. При этом эффективность поиска зависит от структуры списка. В случае последовательного списка метод Find гарантированно просматривает O(n) элементов, в то время как в случае бинарных поисковых деревьев и при бинарном поиске обеспечивается более высокая эффективность O(log2n).
В идеале нам хотелось бы выбирать данные за время O(1). В этом случае число необходимых сравнений не зависит от количества элементов данных. Выборка элемента осуществляется за время O(1) при использовании в качестве индекса в массиве некоторого ключа. Например, блюда из меню в закусочной в целях упрощения бухгалтерского учета обозначаются номерами. Какой-нибудь деликатес типа «бастурма, маринованная в водке» в базе данных обозначается просто №2. Владельцу закусочной остается лишь сопоставить ключ 2 с записью в списке (рисунок 25).
Рис. 25.
Мы знаем и другие примеры. Файл клиентов пункта проката видеокассет содержит семизначные номера телефонов. Номер телефона используется в качестве ключа для доступа к конкретной записи файла клиентов.
Рис. 26.
Ключи не обязательно должны быть числовыми. Например, формируемая компилятором таблица символов(symbol table) содержит все используемые в программе идентификаторы вместе с сопутствующей каждому из них информацией. Ключом для доступа к конкретной записи является сам идентификатор.
Ключи и хеш-функция
В общем случае ключи не настолько просты, как в примере с закусочной. Несмотря на то, что они обеспечивают доступ к данным, ключи, как правило, не являются непосредственными индексами в массиве записей. Например, телефонный номер может идентифицировать клиента, но вряд ли пункт проката хранит десятимиллионный массив.
В большинстве приложений ключ обеспечивает косвенную ссылку на данные. Ключ отображается во множество целых чисел посредством хеш-функции(hash function). Полученное в результате значение затем используется для доступа к данным. Давайте исследуем эту идею. Предположим, есть множество записей с целочисленными ключами. Хеш-функция HF отображает ключ в целочисленный индекс из диапазона 0...n-1. С хеш-функцией связана так называемая хеш-таблица(hash table), ячейки которой пронумерованы от 0 до n-1 и хранят сами данные или ссылки на данные.
Рис. 27.
Предположим, Key – положительное целое, а HF(Key) – значение младшей цифры числа Key. Тогда диапазон индексов равен 0-9. Например, если Key = 49, HF(Key) = HF(49) = 9. Эта хеш-функция в качестве возвращаемого значение использует остаток от деления на 10.
Часто отображение, осуществляемое хеш-функцией, является отображением «многие к одному» и приводит к коллизиям(collisions). Например, выше мы видим HF(49) = HF(29) = 9. При возникновении коллизии два или более ключа ассоциируются с одной и той же ячейкой хеш-таблицы. Поскольку два ключа не могут занимать одну и ту же ячейку в таблице, мы должны разработать стратегию разрешения коллизий.
Схемы разрешения коллизий обсуждаются после знакомства с некоторыми типами хеш-функций.
Рис. 28.
Хеш-функции
Хеш-функция должна отображать ключ в целое число из диапазона 0...n-1. При этом количество коллизий должно быть ограниченным, а вычисление самой хеш-функции – очень быстрым. Некоторые методы удовлетворяют этим требованиям.
Наиболее часто используется метод деления(division method), требующий двух шагов. Сперва ключ должен быть преобразован в целое число, а затем полученное значение вписывается в диапазон 0...n-1 с помощью оператора получения остатка. На практике метод деления используется в большинстве приложений, работающих с хешированием.
Предположим, что ключ – пятизначное число. Хеш-функция извлекает две младшие цифры. Например, если это число равно 56389, то HF(56389) = 89. Две младшие цифры являются остатком от деления на 100.
int HF(int key)
{
return key % 100; // метод деления на 100
}
Эффективность хеш-функции зависит от того, обеспечивает ли она равномерное распределение ключей в диапазоне 0...n-1. Если две последние цифры соответствуют году рождения, то будет слишком много коллизий при идентификации подростков, играющих в юношеской бейсбольной лиге.
Другой пример – ключ-символьная строка С++. Хеш-функция отображает эту строку в целое число посредством суммирования первого и последнего символов и последующего вычисления остатка от деления на 101 (размер таблицы).
// хеш-функция для символьной строки.
// Возвращает значение в диапазоне от 0 до 100
int HF(char *key)
{
int len = strlen(key), hashf = 0;
// если длина ключа равна 0 или 1, возвратить key[0].
// иначе сложить первый и последний символ
if (len <= 1)
hashf = key[0];
else
hashf = key[0] + key[len-1];
return hashf % 101;
}
Эта хеш-функция приводит к коллизии при одинаковых первом и последнем символах строки. Например, строки «start» и «slant» будут отображаться в индекс 29. Так же ведет себя хеш-функция, суммирующая все символы строки.
int HF(char *key)
{
int hashf = 0;
// просуммировать все символы строки и разделить на 101
while (*key)
hashf += *key++;
return hashf % 101;
}
Строки «bad» и «dab» преобразуются в один и тот же индекс. Лучшие результаты дает хеш-функция, производящая перемешивание битов в символах.
В общем случае при больших n индексы имеют больший разброс. Кроме того, математическая теория утверждает, что распределение будет более равномерным, если n – простое число.