- Аналитические и
технологические обзоры - Возможности и преимущества
- Демонстрации
- Документация и техническое описание
- Лицензии и сертификаты
- Примеры внедрения
- Технологический справочник
- Уголок разработчика
- Caché Newsgroup
- Free Caché e-Learning
- Скачать Caché
Технологический справочник
Часть 2:
Сервер многомерных данных Caché
Высокопроизводительная база данных Caché использует многомерную модель, которая обеспечивает эффективное и компактное хранение данных в сложных информационных структурах. Объекты и SQL доступны за счет использования единого словаря данных, который описывает классы и таблицы, а также обеспечивает автоматическую генерацию маппинга для многомерных структур.
ИНТЕГРИРОВАННЫЙ ДОСТУП К ДАННЫМ
Caché дает свободу выбора способа хранения и извлечения данных через объекты, SQL или прямой доступ к многомерным структурам. Независимо от способа доступа к данным все данные в базах данных Caché хранятся в многомерных массивах.
Многомерный доступ

Как только данные попадают в базу данных, все способы доступа могут быть использованы одновременно для работы с одними и теми же данными с полной взаимосовместимостью.
Единая архитектура данных (Unified Data Architecture) — уникальная особенность Caché. При описании класса базы данных Caché автоматически генерирует реляционное описание той же структуры данных. Точно также, если загружено описание данных из реляционной базы данных (DDL) в словарь данных, Caché автоматически создает реляционное и объектное описание загружаемых структур данных. При этом все описания ведутся согласованно, все операции по редактированию проводятся только с одним описанием данных.
Преимущество CachéГибкость Уменьшение трудозатрат Использование накопленного опыта и существующих приложений |
МНОГОМЕРНАЯ МОДЕЛЬ ДАННЫХ
Высокая эффективность базы данных Cache обеспечивается на уровне ядра поддержкой многомерных структур данных. Встроенные скриптовые языки работают напрямую с многомерными структурами, предоставляя приложениям высочайшую производительность и широчайший диапазон возможностей по организации хранилища данных. Многие приложения реализованы полностью с применением такого прямого доступа к данным. Подход с использованием прямого "глобального доступа" общепринято применять, там, где с целью достижения наивысшей производительности, проектируются нетрадиционные или специализированные структуры данных и не требуется обеспечивать объектный или реляционный интерфейс к этим данным.
Для многомерного ядра не существует словарей данных и, соответственно, нет описаний структур данных.
Развитая многомерная структура данных
Многомерные массивы Caché называются глобалами. Данные, хранящиеся в глобале, могут иметь любое количество индексов. Более того, для значений индексов не предусмотрено определение их типов данных, и поэтому они могут быть любыми: строками символов, числами с плавающей запятой, целыми числами и т.д. Это означает, что разнородные индексы, например, целое число 34 и какое-нибудь многозначительное имя типа "ПартияИзделий", могут находиться на одном индексном уровне.
Например, приложение "Инвентаризация склада", содержащее описание изделия (размер, цвет и рисунок), может иметь следующую структуру данных:
^Склад(изделие,размер,цвет,рисунок) = количество
Пример конкретных данных:
^Склад("сорочка", 4, "голубой", "цветы") = 3
Подобная структура позволяет легко определить, есть ли на складе сорочки 4-го размера с цветочным рисунком - нужно просто получить доступ к этому узлу данных. Если клиент хочет сорочку 4-ого размера и не уверен насчет цвета и рисунка, то он может просмотреть перечень таких сорочек, перебрав узлы, лежащие ниже узла ^Склад("сорочка",4).
В этом примере все узлы однотипны, они хранят данные о количестве сорочек, и хранят их на одном и том же индексном уровне (4 индекса) с одинаковыми типами индексов (третий индекс - всегда текстовое описание цвета). Однако структура может и не быть столь регулярной. Узлы данных могут иметь разное количество или тип индексов или содержать разные типы данных.
Ниже показан пример с более сложной структурой глобала, где данные счета-фактуры имеют различные типы и хранятся на разных индексных уровнях:
^Счет(счет №,"Клиент") = данные о клиенте
^Счет(счет №,"Дата") = дата счета-фактуры
^Счет(счет №,"Изделия") = количество изделий в счете-фактуре
^Счет(счет №,"Изделия",1,"Деталь") = номер детали
изделия 1
^Счет(счет №,"Изделия",1,"Количество") = количество изделия
1
^Счет(счет №,"Изделия",1,"Цена") = цена изделия
1
^Счет(счет №,"Изделия",2,"Деталь") = номер детали изделия
2
и т.д.
Многомерные массивы Caché называются глобалами. Данные, хранящиеся в глобале, могут иметь любое количество индексов. Более того, для значений индексов не предусмотрено определение их типов данных, и поэтому они могут быть любыми: строками символов, числами с плавающей запятой, целыми числами и т.д. Это означает, что разнородные индексы, например, целое число 34 и какое-нибудь многозначительное имя типа "ПартияИзделий", могут находиться на одном индексном уровне.
Например, приложение "Инвентаризация склада", содержащее описание изделия (размер, цвет и рисунок), может иметь следующую структуру данных:
^Склад(изделие,размер,цвет,рисунок) = количество
Пример конкретных данных:
^Склад("сорочка", 4, "голубой", "цветы") = 3
Подобная структура позволяет легко определить, есть ли на складе сорочки 4-го размера с цветочным рисунком - нужно просто получить доступ к этому узлу данных. Если клиент хочет сорочку 4-ого размера и не уверен насчет цвета и рисунка, то он может просмотреть перечень таких сорочек, перебрав узлы, лежащие ниже узла ^Склад("сорочка",4).
В этом примере все узлы однотипны, они хранят данные о количестве сорочек, и хранят их на одном и том же индексном уровне (4 индекса) с одинаковыми типами индексов (третий индекс - всегда текстовое описание цвета). Однако структура может и не быть столь регулярной. Узлы данных могут иметь разное количество или тип индексов или содержать разные типы данных.
Ниже показан пример с более сложной структурой глобала, где данные счета-фактуры имеют различные типы и хранятся на разных индексных уровнях:
^Счет(счет №,"Клиент") = данные о клиенте
^Счет(счет №,"Дата") = дата счета-фактуры
^Счет(счет №,"Изделия") = количество изделий в счете-фактуре
^Счет(счет №,"Изделия",1,"Деталь") = номер детали
изделия 1
^Счет(счет №,"Изделия",1,"Количество") = количество изделия
1
^Счет(счет №,"Изделия",1,"Цена") = цена изделия
1
^Счет(счет №,"Изделия",2,"Деталь") = номер детали изделия
2
и т.д.
Несколько элементов данных в одном узле
Как правило, в узле данных хранится один элемент данных, например,
дата или количество, но иногда удобнее хранить в узле несколько элементов
данных, особенно в тех случаях, когда имеется набор взаимосвязанных
данных. Это делает работу более эффективной, т.к. сокращается число
обращений к базе данных, что особенно актуально при работе с сетью.
В предыдущем примере каждое изделие включало номер детали, количество и цену, хранящиеся в отдельных узлах. Все эти характеристики могут сохраняться и в одном узле данных:
^Счет(счет №,"ПартияИзделий", изделие №)
Для упрощения таких преобразований в Caché имеется функция $list(), которая собирает отдельные элементы данных в байтовую строку с разделителями по длине, а позже может "разобрать" ее, не нарушая типов данных. В свою очередь элементы могут содержать вложенные списки со своими элементами.
Логическая блокировка: высокий уровень параллелизма
Производительность систем, где работают тысячи пользователей, более всего страдает от конфликтов между параллельными процессами. Одна из наиболее серьезных проблем - конфликт между транзакциями, требующими доступа к одним и тем же данным.
Caché отказалась от блокировки целых страниц во время изменения данных. Обычно транзакциям требуется регулярный доступ или редактирование небольших порций данных, поэтому блокировка базы данных в Caché осуществляется на логическом уровне. Другой способ улаживания конфликтов между транзакциями атомарные добавления и изменения без проведения блокировки. Такие операции, в частности, нужны для изменения счетчиков, используемых при назначении идентификаторов объектов в базе данных, для изменения статистических счетчиков. И то, и другое - самые "горячие" места в базе данных, где чаще всего могли бы возникнуть конфликты между параллельными транзакциями.
Caché позволяет, с одной стороны, нарастить скорость индивидуальных транзакций, с другой - увеличить число параллельных транзакций.
Переменная длина данных в разреженных массивах
Данным в Caché присуща переменная длина, хранятся они в разреженных массивах, поэтому Caché требуется вдвое меньше пространства, чем реляционной базе данных. К тому же компактное хранение данных повышает производительность приложения, т.к. одна операция ввода/вывода открывает доступ к гораздо большему объему информации, буферизация данных (кэширование) также могут проводиться более эффективно.
Декларации и определения не требуются
Для прямого доступа или сохранения информации в базе данных не требуется каких-либо описаний, определений или указаний места хранения. Точно так же нет необходимости специфицировать количество или типы индексов, типы или объемы данных. Многомерным массивам внутренне присуще отсутствие разделения на типы значений, как данных, так и индексов. Данные просто начинают существовать в глобалах сразу же после ввода информации командой SET.
Однако для получения объектного и реляционного доступа к базе данных, необходима информация из словаря данных. Указав словарь данных для объектов и SQL, разработчики могут сделать выбор между автоматическим определением наиболее подходящей многомерной структуры для их данных с помощью мастеров (wizards) и проектированием компьютерной модели данных вручную.
Области (Namespace)
Данные и программный код языка Caché ObjectScript в Caché сохраняются в дисковых файлах под именем CACHE.DAT (по одному на каталог-директорию файловой системы компьютера). Каждый такой файл содержит множество "глобалов" (многомерных массивов). Каждый глобал внутри файла должен иметь уникальное имя, однако имя глобала может повторяться в разных файлах. Эти файлы могут условно считаться базами данных.
Вместо того чтобы указывать конкретный файл CACHE.DAT, в процессах Caché доступ к данным осуществляется через области. Область - это логическая карта, в которой указаны имена многомерных глобальных массивов и программ файла CACHE.DAT, включая имена каталога-директории и сервера данных для этого файла. Содержание области меняется при переносе файла с одного дискового устройства / компьютера на другой.
Как правило, в области указывается некая часть системных данных, содержащаяся также и в других областях, и другая часть, уникальная для данной области и связанная с конкретным файлом CACHE.DAT, который используется только этой областью. Вместе с тем структура области обладает достаточной гибкостью для произвольного отображения и допускает, чтобы в области содержались данные о нескольких файлах CACHE.DAT.
Преимущество CachéПроизводительность Масштабируемость Быстрая разработка Сокращение затрат |
SQL-ДОСТУП
SQL - это язык запросов в Caché, он поддерживает полный набор возможностей реляционных СУБД, включая DDL, транзакции, ссылочную целостность, триггеры, хранимые процедуры и поддерживает ODBC и JDBC (драйвер pure Java). Команды и запросы SQL могут быть включены также в программы на языке Caché ObjectScript и в методы объектов Caché.
Данные, доступные через SQL представляются в виде таблиц со строками и столбцами. Так как данные Caché хранит в виде эффективных многомерных структур, достигается более высокая производительность SQL, чем в традиционных реляционных базах данных. Высокая производительность SQL проявляется как для скомпилированных в высокоэффективный код, так и при выполнении динамических (определяемых во время выполнения) SQL выражений.
В дополнение к стандартному синтаксису SQL, Caché поддерживает многие расширения языка, используемые в других СУБД, так что код многих приложений может быть перенесен в Caché без изменений, особенно те из них, что написаны с применением независимых от СУБД средств. В то же время, хранимые процедуры с применением синтаксиса, зависимого от производителей СУБД требуют некоторой переработки с использованием средств, предлагаемых InterSystems.
Caché SQL включает объектные расширения, упрощающие код SQL для записи и понимания.
Традиционный SQL
|
Object Extended SQL
|
Relational Gateway |
Доступ к реляционным базам данных через Caché Relational Gateway (реляционный шлюз)
Механизм Relational Gateway в Caché перенаправляет SQL запросы для обработки из Caché в другие (реляционные) СУБД. Используя Relational Gateway, приложения в Caché могут получать и изменять данные, которые хранятся в реляционной СУБД.
Дополнительно, если классы в БД Caché скомпилированы с поддержкой стратегии хранения CachéSQLStorage, Relational Gateway позволяет приложениям Caché прозрачно использовать реляционные СУБД. В то же время, максимальная производительность и масштабируемость достигается при использовании постреляционной СУБД Caché.
Преимущество CachéБыстрый SQL Быстрая разработка Совместимость с существующими приложениями и генераторами отчетов |
ОБЪЕКТЫ CACHÉ
Объектная модель данных Caché разработана на основе стандарта ODMG (Object Database Management Group - Группа по объектному управлению базами данных). Caché поддерживает полную гамму концепций объектного программирования, включая инкапсуляцию, встраиваемые объекты, множественное наследование, полиморфизм и коллекции.
Встроенные в Caché языки напрямую манипулируют этими объектами. Caché также предоставляет доступ к этим объектам из классов Java, EJB, COM, .NET, и C++. Классы Caché автоматически обеспечивают поддержку XML и SOAP простым щелчком кнопки в среде разработки Studio. Как результат, объекты Caché оказываются доступными практически для большинства существующих объектных технологий.
Существует несколько способов взаимодействия с классами Caché извне сервера приложений:
- Для любого класса Caché может быть создана проекция на том языке программирования, на котором написано клиентское приложение. Когда Java, C++, C#, или другие сторонние приложения вне сервера приложений Caché обращаются к объекту Caché, они обращаются к шаблону класса в их собственной среде. Эти классы-шаблоны (которые автоматически генерирует Caché) связываются с сервером приложений Caché для вызова методов на сервере Caché для доступа или изменений свойств объекта. Состояние объектов Caché поддерживается на уровне сервера приложений Caché. Для увеличения скорости выполнения и уменьшения количества сообщений между системами Caché накапливает в кэше изменения копий данных объекта на клиентах и рассылает обновления блоками вместе с сопутствующими сообщениями при необходимости.
- Легковесная (lighter-weight) проекция может быть использована для классов базы данных, для которых классы-шаблоны в среде приложения обращаются напрямую к базе данных в обход сервера приложений. Состояние объекта не хранится на сервере, а его свойства обрабатываются в памяти клиента. Такой подход значительно увеличивает пропускную способность, но с ограничением функциональности, так как серверные методы экземпляров (например, методы, которым необходим доступ к свойствам объекта в памяти) не могут быть вызваны.
- С технологией InterSystems Jalapeño Java-программист сначала создает классы базы данных Java, как классы POJO (plain old Java object), а после для этих классов Caché автоматически генерирует схему базы данных в соответствующих классах Caché. С использованием такого подхода классы приложения, с чьими методами и свойствами оно работает, остаются неизменными. Обращения к базе данных Caché для чтения и сохранения данных объектов происходят через API библиотечного класса Caché ("ObjectManager").
В каждом из этих трех подходов серверные объекты представляются их локальными копиями в клиентском приложении. Благодаря вызовам call-in или по протоколу TCP, взаимодействие с Caché выглядит прозрачно для прикладного разработчика.
Шаблоны классов для Java и библиотеки поддержки полностью выполнены на Java, так что они могут быть использованы в среде Web или на специализированных Java-устройствах.
Генераторы методов
Caché содержит ряд уникальных объектных технологий, одна из которых — генераторы методов. Генератор метода — это метод, который выполняется во время компиляции класса, генерируя код, который будет выполняться при запуске программы. Генератор метода имеет доступ к описанию класса, включая описания свойств, методов и параметров класса. Это позволяет генерировать методы, настраиваемые под характеристики класса. В частности, генераторы методов — особенно мощное средство в соединении с множественным наследованием — функциональность класса-потомка нескольких классов "настраивается" внутри самого подкласса.
Преимущество CachéCaché полностью объектно-ориентированная СУБД, обеспечивает всю мощь объектной технологии разработчикам высокопроизводительных приложений для обработки транзакций. Быстрая разработка приложений Разработка в естественной среде |
ПОЛНОТЕКСТОВЫЙ ПОИСК
Caché поддерживает запросы для полнотекстового поиска с указанием интересующих слов, при этом искомые слова могут встречаться в тексте в других морфологических формах. (На момент перевода статьи русский язык не поддерживался в этой технологии, и все примеры оставлены, как есть в оригинале статьи - Прим. пер.)
Для пользования полнотекстовым поиском текстовое поле должно быть соответствующим образом проиндексировано:
- Разбивка текста на слова.
- Общие слова, не обеспечивающие должных результатов при поиске - пропускаются (например, артикль "the" или предлог "for").
- Оставшиеся слова сокращаются до их лексических форм (stemming) (например, "searching" становится "search" и "flowers" становится "flower").
- Оставшиеся слова попадают в индекс.
При поиске текста, искомый текст сначала обрабатывается подобным же образом, а потом используется индекс для поиска совпадений.
Обновление индексов для полнотекстового поиска происходит и при сохранении объектов и при вставке/обновлении записей через SQL. Поиск выполняется посредством SQL запроса, но процедурный код также может выполнять поиск, обращаясь к индексу напрямую. В запросах может использоваться булева логика AND/OR для сложных условий поиска.
Полнотекстовый поиск адаптирован к использованию естественных форм в английском, французском, немецком, итальянском, японском, португальском и испанском языках. Поддержка других языков будет добавляться в будущем.
Преимущество CachéМощный механизм поиска по специальным текстам Очень быстрый поиск |
ТРАНЗАКЦИОННЫЕ БИТОВЫЕ ИНДЕКСЫ (BIT-MAP INDEXING)
Еще одна уникальная особенность Caché — транзакционные битовые индексы, которые радикально увеличивают производительность сложных запросов, перенося высокую производительность запросов из хранилищ данных на "живые" данные.
Производительность базы данных зависит от индексирования свойств, по которым часто производится поиск. Большинство баз данных используют индексы, в которых каждому значению столбца или свойства ставится в соответствие список идентификаторов записей или объектов с этим значением.
Битовый индекс имеет другую структуру. Битовый индекс содержит отдельную битовую карту (последовательность 0 и 1) для каждого возможного значения столбца или свойства, где каждому биту соответствует строка или объект с индексируемым значением. Бит 1 означает, что запись или объект с номером, соответствующим позиции бита содержит индексируемое значение для данного столбца или свойства.
Преимущество битовых индексов в том, что сложные запросы могут быть выполнены путем булевых операций (И, ИЛИ) над битовыми строками в индексах, позволяя быстро определить позиции битов указывающих номера записей или ID объектов, удовлетворяющих накладываемым условиям, без сканирования данных. Битовые индексы могут в сотни раз уменьшить время отклика при поиске по большим объемам данных.
Битовые индексы традиционно страдают двумя недостатками:
a) они недопустимо медленны на операциях, связанных с изменениями данных в реляционных базах данных
б) они занимают слишком много места для хранения.
Это причины, по которым они редко используются в реляционных базах данных для приложений обработки транзакций.
В Caché представлена новая технология – “транзакционных битовых индексов”, которая использует многомерные структуры данных для решения этих двух проблем. Операции обновления этих индексов часто выполняются быстрее, чем с традиционными индексами, и благодаря специальным алгоритмам компрессии они значительно менее требовательны к объемам памяти для их хранения. Также в Caché поддерживается битслайс индексы, оптимизированные для данных, которые надо сегментировать перед индексированием - например, для чисел и дат. В результате для поиска среди миллионов записей за доли секунд эти индексы могут быть использованы на OLTP базах данных. Приложения для business intelligence и хранилищ данных могут работать с «живыми» данными.
В Caché можно использовать оба вида индексов - традиционные и транзакционные битовые индексы. Также в Caché поддерживаются многоколоночные индексы. Например, индекс по колонкам Штат и Модель поможет быстро идентифицировать того, кто имеет автомобиль данной модели, зарегистрированный в известном штате.
Преимущество CachéСверхбыстрые запросы Анализ данных в реальном масштабе времени Меньшая стоимость Масштабируемость |
ENTERPRISE CACHE PROTOCOL ДЛЯ РАСПРЕДЕЛЕННЫХ СИСТЕМ
Масштабируемая производительность в распределенных системах
Протокол сетевого сообщения между серверами уровня предприятия Enterprise Cache Protocol (ECP) — высокопроизводительная и масштабируемая технология, которая позволяет компьютерам в распределенной среде использовать удаленные базы данных. Использование ECP не требует изменений в приложениях – приложения просто используют данные из удаленных систем так же, как если бы они хранились локально.
Рассмотрим подробнее работу ECP. Каждый сервер приложений содержит свой сервер баз данных, который оперирует с данными, находящимися на локальных дисковых системах или с блоками которые получены с другого сервера баз данных через ECP. Когда клиент запрашивает информацию, сервер приложений пытается удовлетворить запрос данными из локального кэша. Если это невозможно, он запрашивает необходимые данные с удаленного сервера баз данных Caché. Ответ содержит блоки базы данных, которые хранят эти данные. Эти блоки кэшируются сервером приложений, где они становятся доступными для всех приложений и клиентов, работающих с этим сервером. ECP автоматически берет на себя заботу об управлении согласованностью данных в кэшах распределенной системы и распространением изменившихся блоков назад к серверам баз данных.
ECP обладает потрясающей производительностью и масштабируемостью. Клиенты получают быстрые отклики, потому что они часто используют данные из локального кэша. Кэширование значительно сокращает сетевой трафик между базой данных и серверами приложений, так что любая сеть может справиться с нагрузками от большого количества серверов и клиентов. В то время как большинство приложений выигрывают в производительности от использования ECP, существуют конфигурации, не готовые к подобного рода масштабированию. Поэтому перед развертыванием рекомендуется тестирование, так как даже простые изменения конфигурации могут увеличить производительность.
Enterprise Cache Protocol

Легкость в использовании — не требуются изменения в приложениях
Использование ECP прозрачно для приложений. Приложения, написанные для запуска на одиночной системе могут выполняться в многосерверной среде без изменений. Чтобы использовать ECP, администратор системы просто указывает один или несколько серверов баз данных для сервера приложений и настраивает в отображении областей (Namespace Mapping) ссылки на глобалы (или части глобалов), соответствующие серверам баз данных.
Гибкость конфигурирования
Каждый сервер Caché может выступать как сервер приложений и как сервер баз данных для других систем. ECP поддерживает любую комбинацию серверов приложений и серверов баз данных и любую топологию "точка-точка" объемом до 255 систем.
Преимущество CachéПотрясающая масштабируемость Высокая готовность Меньшая стоимость Прозрачность в использовании |
ОТКАЗОУСТОЙЧИВОСТЬ
Даже в самых проверенных системах могут случаться неожиданности - сбой оборудования, потеря питания или что-то более серьезное: наводнение или природные катастрофы, но, несмотря ни на какие события, компьютерные системы больниц, телекоммуникаций и других важных объектов и инфраструктур не должны оказаться отключенными. Отказоустойчивость - это способность вычислительной системы продолжать действия даже после возникновения неисправностей.
Caché предоставляет различные возможности по обеспечению отказоустойчивости, высокой готовности и сохранению состояния баз данных при сбоях. Существуют варианты конфигураций, уменьшающие влияние сбоев на пользователей системы:
- Fail-over кластеры
- Теневые серверы
- Распределенный ECP
Fail-over кластеры (кластеры с устранением последствий ошибок)
Один из распространенных вариантов кластерных конфигураций - failover. Такая конфигурация обеспечивает доступ нескольких серверов к одной базе данных, при этом только на одном из них выполняется Caché. Если происходит отказ активного сервера, Caché стартует на другом сервере, который становится активным. Пользователи сразу же могут подключаться к новому серверу.
Конфигурация с теневыми серверами
Некоторые системы используют теневой сервер - сервер, который постоянно получает данные об обновлениях базы с первичного сервера и поддерживает дублирование базы данных в реальном масштабе времени. В зависимости от системной архитектуры, задержка - разница времени между изменением в первичной базе данных и в теневой базе данных - обычно будет составлять от доли секунды до нескольких секунд. Переключение на теневой сервер происходит полуавтоматически, но надежность сохранности данных выше, так как оборудование теневого сервера может быть расположено совсем в другой географической точке.
Конфигурация с теневыми серверами может использоваться для кластерной системы, таким образом, обеспечивая и доступность и сохранение состояния базы данных.
Отказоустойчивость в распределенных системах
В распределенных системах на основе протокола ECP при временных потерях связи с сервером данных или его отказе сервера приложений пытаются восстановить соединение. Если за определенный период связь была восстановлена успешно, сервера приложений повторяют отправку невыполненных запросов и выполнение действий продолжается в штатном режиме без заметного для пользователей эффекта с возможной некоторой задержкой при обработке запросов.
В случае неудачной попытки сервера приложений соединения с сервером данных только клиенты этого сервера приложений теряют связь. Они могут соединиться с другим сервером приложений для продолжения работы.
В отказоустойчивой конфигурации сервер данных может иметь теневой сервер или быть в составе кластера. В такой конфигурации "запасной" сервер "подхватывает" выполнение операций, обеспечивая их бесперебойное выполнение.
ECP Fail-over кластер

Преимущество Caché«Пуленепробиваемая» база данных Высокая готовность отказоустойчивых конфигураций |
МОДЕЛЬ БЕЗОПАСНОСТИ
Модель безопасности Caché разработана для поддержки развертывания приложений тремя способами

Реализация безопасности Caché минимизирует накладные расходы на производительность приложений в системе.
Пользователи, роли, ресурсы и привилегии
Существуют различные ресурсы (такие как базы данных, приложения и системные службы) и пользователи должны получить доступ (существуют права на READ, WRITE и USE - на чтение, запись и использование, соответственно) для их использования от администратора по безопасности. Вдобавок к определенным в системе ресурсам, администратор может создавать особые для приложений ресурсы и использовать существующие механизмы для разделения полномочий.
Для упрощения, пользователям обычно назначают одну или несколько ролей (например, "LabTech" или "Payroll") и администратор описывает привилегии доступа к ресурсам для ролей, а не для каждого пользователя. Пользователь наследует все привилегии, разрешенные ролям, на которые он назначен.
Каждый процесс имеет ассоциированное имя пользователя, даже если это просто "UnknownUser" (неизвестный пользователь). Имя пользователя устанавливается во время аутентификации. Простой пример аутентификации - это ввод пользователем имени и пароля и проверка системой правильности введенного пароля. После аутентификации процессу назначается имя пользователя и ассоциированные с этим пользователем права. ("Пользователь" - не обязательно может быть человеком. Например, это может быть измерительный прибор, подключенный к Caché и с которого приложение получает данные.) Если пользователь не проходит аутентификацию, он получает имя "UnknownUser", которое обозначает процесс с правами для анонимного пользователя.
Подключение к Caché управляется службами. Каждой службе указывается, является ли она публичной - это означает, что каждому позволено их использование. В противном случае для пользователя требуется аутентификация и проверка прав пользования службой. Служба может быть запрещена, тогда доступ к ней запрещен для всех.
Назначение и управление привилегиями выполняется в Портале управления системой.
Роли, назначаемые приложениям
При описании прав для пользователей приложений, часто бывает необходимо вместо назначения администратором длинного списка привилегий на ресурсы приложения (например, возможность чтения и записи в базу данных заработной платы), временно дать дополнительные привилегии на доступ к приложению и при использовании приложения будут определяться права доступа к его ресурсам.
Для достижения этого роли назначаются приложению. При обращении к приложению, пользователь временно приобретает дополнительные роли. Дополнительные роли могут быть представлены простым списком с перечислением уполномоченных на доступ к приложению или более сложным описанием, базирующимся на уже существующих ролях пользователя.
Эта особенность особенно полезна для приложений CSP (Cache Server Pages). В CSP имя приложения определено в части каждого URL. После аутентификации пользователя и проверки прав на использование данного CSP приложения, пользователь временно получает дополнительные роли, назначенные этому приложению на время выполнения запроса на странице приложения.
Администратор безопасности может также определять программы, обращение к которым, после определенных проверок безопасности, также добавляет роли определенных приложений. Это гибко настраиваемый механизм для управления ролями приложений, не использующих браузер.
Аутентификация
Caché поддерживает многоуровневую аутентификацию - от полного ее отсутствия или через проверку пароля до использования протокола Kerberos для проверки идентичности пользователей. Kerberos предоставляет надежный механизм аутентификации и при этом он быстрый, масштабируемый и простой в использовании. С применением Kerberos пароли не передаются по сети, что значительно повышает надежность.
Cache поддерживает реализацию Single Sign-On.
Шифрование базы данных
Caché поддерживает два вида шифрования баз данных:
- Администратор по безопасности определяет один или несколько файлов CACHE.DAT, подлежащих шифрованию. В этом случае все содержимое этих файлов зашифровано.
- Разработчики могут использовать системные функции для шифрования и расшифровки данных, передаваемых или сохраняемых в базе данных. Такой способ может использоваться для шифрования важных данных и защиты их от пользователей, имеющих доступ к содержимому базы данных, но не имеющих ключа.
По умолчанию для шифрования данных Caché использует алгоритм AES (Advanced Encryption Standard - Улучшенный стандарт шифрования) - симметричный алгоритм, использующий ключи длиной 128, 192 или 256 бит. Ключи хранятся в защищенной области памяти. Caché предоставляет все необходимые возможности для управления ключами.
Журналы также могут быть зашифрованы.
Аудит
Многие приложениям необходим надежный аудит, особенно это касается тех, к которым предъявляются требования распоряжений правительства или законов, например, HIPAA или закон Сарбанеса-Оксли (Sarbanes-Oxley). Все события системы Caché и приложений записываются в журнал, доступный только для добавления и совместимый с любым инструментом для генерации отчетов по SQL-запросам.

Технологический справочник


