Caché

High performance
multi-model database

Часть 2: Сервер многомерных данных Caché

Высокопроизводительная база данных Caché использует многомерную модель, которая обеспечивает эффективное и компактное хранение данных в сложных информационных структурах. Объекты и SQL доступны за счет использования единого словаря данных, описывающего классы и таблицы и обеспечивающего отображение хранимых объектов и табличных записей на многомерные структуры – отображение, которое может генерироваться автоматически. Помимо этого, Caché предоставляет прямой доступ к многомерным структурам.

ИНТЕГРИРОВАННЫЙ ДОСТУП К БАЗЕ ДАННЫХ

Caché предоставляет программистам свободу в выборе способа хранения и доступа к данным через объекты, SQL либо путем прямого доступа к многомерным структурам данных. Независимо от способа доступа, все данные в в базах данных Caché хранятся в многомерных массивах.

Многомерный доступ

Многомерный доступ

Как только данные попадают в базу данных, все способы доступа могут быть использованы одновременно для работы над одними и теми же данными.

Единая архитектура данных (Unified Data Architecture) — уникальная особенность Caché. При описании класса базы данных Caché автоматически генерирует реляционное описание той же структуры данных. Точно также, если загружено описание данных из реляционной базы данных (DDL) в словарь данных, Caché автоматически создает реляционное и объектное описание загружаемых структур данных. При этом все определения схем данных ведутся согласованно, все операции по редактированию проводятся только с одним определением схемы данных.

Caché автоматически создает отображение для способа хранения объектов и таблиц в многомерных структурах, либо программист может сам контролировать такое отображение.

Преимущества Caché

Гибкость: Все способы доступа к к одним и тем же данным (объектный, через SQL и многомерный) могут использоваться параллельно. Такая гибкость дает свободу выбора программисту в определении способа доступа к данным, который наилучшим образом подходит в его приложении.

Сокращение трудозатрат: Единая архитектура данных Caché автоматически описывает данные как классы и таблицы, используя единое описание. При этом не требуется изменение кода, так что приложения разрабатываются и поддерживаются с меньшими трудозатратами.

Использование традиционных навыков и существующих приложений: Программисты могут использовать опыт разработки приложений для реляционных СУБД и добавлять новый объектный функционал с развитием существующих приложений.

Поддержка NoSQL: Caché обладает свойствами NoSQL благодаря предоставлению возможности прямого доступа к структурам данных.

МНОГОМЕРНАЯ МОДЕЛЬ ДАННЫХ

Высокая эффективность базы данных Caché обеспечивается на уровне ядра поддержкой многомерных структур данных. Встроенные скриптовые языки работают напрямую с многомерными структурами, обеспечивая приложениям высочайшую производительность и широчайший диапазон возможностей по организации хранилища данных. Многие приложения реализованы полностью с применением такого прямого доступа к данным. Подход с использованием прямого «глобального доступа» общепринято применять там, где с целью достижения наивысшей производительности проектируются нетрадиционные или специализированные структуры данных и не требуется обеспечивать объектный или реляционный интерфейс к этим данным.

Для многомерного ядра не существует словарей данных и, соответственно, нет описаний структур данных.

Развитая многомерная структура данных

Многомерные массивы 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é

Performance: By using an efficient multidimensional data model with sparse storage techniques instead of a cumbersome maze of two-dimensional tables, data access and updates are accomplished with less disk I/O. Reduced I/O means that applications will run faster.

Впечатляющая производительность: Благодаря тому, что в Caché вместо громоздкой головоломки двумерных таблиц используются многомерная модель данных и методы разреженного хранения данных, доступ и редактирование требуют гораздо меньше дисковых операций ввода/вывода (I/O). Сокращение же I/O означает, что приложение будет работать быстрее.

Высокая масштабируемость: Транзакционная многомерная модель данных в базирующихся на Caché приложениях позволяет легко наращивать число клиентов (до многих тысяч), сохраняя высокую производительность. Это объясняется тем, что доступ к данным в многомерной модели не зависит от объема или сложности базы данных в отличие от реляционных моделей. Транзакции получают необходимые им данные без выполнения сложных соединений таблиц или «скачков» из таблицы в таблицу.
Использование в Caché логической блокировки при изменении данных вместо блокировки физических страниц – еще один важный фактор обеспечения высокого параллелизма наряду с эффективным управлением данными в сетях.

Быстрая разработка: Разработка в Caché происходит гораздо быстрее, чем в других технологиях, так как используемые структуры обеспечивают естественный и понятный формат хранения сложных данных, не требуя при этом развернутых или сложных описаний и определений. Прямой доступ к глобалам очень прост – он основан на том же синтаксисе, что и доступ к массивам-локальным переменным.

Сокращение расходов: По сравнению с реляционными приложениями схожего размера, приложения на базе Caché работают с использованием значительно менее мощного оборудования и без необходимости участия администраторов баз данных. Управление системой и ее сопровождение отличаются исключительной простотой.

SQL-ДОСТУП

В Caché в качестве языка запросов используется SQL – диалект SQL поддерживает полный набор возможностей реляционных СУБД, включая DDL, транзакции, ссылочную целостность, триггеры, хранимые процедуры, и поддерживает ODBC и JDBC (JDBC driver level 4). Команды и запросы SQL могут быть включены также в программы на языке Caché ObjectScript и в методы объектов Caché.

Данные, доступные через SQL, представляются в виде таблиц со строками и столбцами. Так как Caché хранит данные в виде эффективных многомерных структур, достигается более высокая производительность SQL, чем в традиционных реляционных базах данных. Высокая производительность SQL проявляется как для скомпилированных в высокоэффективный код, так и при выполнении динамических (определяемых во время выполнения) SQL-выражений.

В дополнение к стандартному синтаксису SQL, Caché поддерживает многие расширения языка, используемые в других СУБД, так что код многих приложений может быть перенесен в Caché без изменений, особенно те из них, что написаны с применением независимых от СУБД средств. В то же время, хранимые процедуры с применением синтаксиса, зависимого от производителей СУБД, требуют некоторой переработки с использованием средств, предлагаемых InterSystems.

Caché SQL включает объектные расширения, упрощающие код SQL для записи и понимания.

Традиционный SQL

SELECT
SC.FullName, SM.Descr, MS.Value, SI.InvDate, SI.InvNumber

FROM
MainSales MS, SalesItemSI, SalesProduct SP, Sales Customer SC, SalesMarket SM

WHERE
SI.SalesItemID *=MS.SalesItem
AND SP.SalesProductID *=MS.Product
AND SC.SalesCustomerID *=MS.Customer
AND SM.SalesMarketID *= SC.SalesMarket
AND SP.DESCR = "Hammer"

Object Extended SQL

SELECT
Customer->FullName,
Customer->SalesMarket->Descr, Value,
SalesItem->InvData, SalesItem->InvNumber

FROM
MainSales

WHERE
Product->Descr = 'Hammer'

Доступ к реляционным базам данных через Caché Relational Gateway (реляционный шлюз)

Реляционный шлюзThe Caché Механизм Relational Gateway в Caché перенаправляет SQL-запросы для обработки из Caché в другие (реляционные) СУБД. Используя Relational Gateway, приложения в Caché могут получать и изменять данные, которые хранятся в реляционной СУБД.

В качестве опции Relational Gateway позволяет классам Caché прозрачно общаться с реляционными базами данных. В то же время, максимальная производитель­ность и масштабируемость достигается при использовании постреляционной СУБД Caché.

Преимущества Caché

Быстрый SQL: Существующие реляционные приложения будут выполняться значительно быстрее с переносом их на Caché SQL в постреляционную СУБД Caché.

Быстрая разработка: SQL-выражения в Caché могут быть написаны более просто и понятно с меньшим количеством кода.

Совместимость с существующими приложениями и генераторами отчетов: Драйвера ODBC и JDBC для Caché обеспечивают высокую производительность существующим приложениям, включая большинство известных средств для анализа данных и генерации отчетов. Механизм Caché Relational Gateway позволяет приложениям на основе Caché использовать SQL для доступа к другим (реляционным) базам данных.

ОБЪЕКТЫ CACHÉ

Объектная модель данных Caché разработана на основе стандарта ODMG. Caché поддерживает полную гамму концепций объектного программирования, включая инкапсуляцию, встраиваемые объекты, множественное наследование, полиморфизм и коллекции.

Встроенные в Caché языки напрямую манипулируют этими объектами. Caché также предоставляет доступ к этим объектам из классов Java, .NET, и C++. Классы Caché автоматически обеспечивают поддержку XML и SOAP простым нажатием кнопки в среде разработки Studio. Как результат, объекты Caché оказываются доступными практически для большинства существующих объектных технологий.

Существует несколько способов взаимодействия с классами Caché извне сервера приложений:

  1. Объекты CachéДля любого класса Caché может быть создана проекция на том языке программирования, на котором написано клиентское приложение. Когда Java, C++, C#, или другие сторонние приложения вне сервера приложений Caché обращаются к объекту Caché, они обращаются к шаблону класса в их собственной среде. Эти классы-шаблоны (автоматически генерируемые Caché) связываются с сервером приложений Caché для вызова методов на сервере Caché для доступа или изменений свойств объекта. Состояние объектов Caché поддерживается на уровне сервера приложений Caché. Для увеличения скорости выполнения и уменьшения количества сообщений между системами Caché накапливает в кэше изменения копий данных объекта на клиентах и рассылает обновления блоками вместе с сопутствующими сообщениями при необходимости.
  2. Технология Caché eXTreme может быть использована для классов базы данных, для которых классы-шаблоны в среде приложения обращаются напрямую к базе данных в обход сервера приложений. Состояние объекта не хранится на сервере, а его свойства обрабатываются в памяти клиента. Такой подход значительно увеличивает пропускную способность, но ограничивает функциональность, так как серверные методы экземпляров (например, методы, которым необходим доступ к свойствам объекта в памяти) не могут быть вызваны. Технология Caché eXTreme может использоваться для поддержки языков C++, Java, .Net, node.js.
  3. С технологией InterSystems Jalapeño Java-программист сначала создает классы базы данных Java, как классы POJO (plain old Java object), а затем для этих классов Caché автоматически генерирует схему базы данных в соответствующих классах Caché. При таком подходе классы приложения, с методами и свойствами которых оно работает, остаются неизменными. Обращения к базе данных Caché для чтения и сохранения данных объектов происходят через API библиотечного класса Caché ("ObjectManager").

В каждом из этих трех подходов серверные объекты представляются их локальными копиями в клиентском приложении. Взаимодействие с Caché выглядит прозрачно для прикладного разработчика, происходит ли взаимодействие по протоколу TCP или через межпроцессное взаимодействие.

Генераторы методов

Caché содержит ряд уникальных объектных технологий, одна из которых — генераторы методов. Генератор метода выполняется во время компиляции класса. Посредством этой технологии генерируется код, который будет выполняться при запуске программы. Генератор метода имеет доступ к описанию класса, включая описания его свойств, методов и параметров. Это позволяет генерировать методы, настраиваемые под характеристики класса. В частности, генераторы методов — особенно мощное средство в соединении с множественным наследованием — функциональность класса-потомка нескольких классов “настраивается” внутри самого подкласса.

Преимущества Caché

Caché полностью объектно-ориентированная СУБД, обеспечивает всю мощь объектной технологии разработчикам высокопроизводительных приложений для обработки транзакций.

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

Разработка в естественной среде: Использование конфигураций Caché с теневыми серверами, ECP и fail-over кластерами дают возможность переключить запасной сервер в активное состояние за несколько секунд. Это позволяет восстановить работоспособность системы в кратчайшее время с минимальным влиянием на работу пользователей.

ТРАНЗАКЦИОННЫЕ БИТОВЫЕ ИНДЕКСЫ (BIT-MAP INDEXING)

Еще одна уникальная особенность Caché — транзакционные битовые индексы, которые радикально увеличивают производительность сложных запросов, перенося высокую производительность запросов из хранилищ данных на “живые” данные.

Битовый индексПроизводительность базы данных зависит от индексирования свойств, по которым часто производится поиск. Большинство баз данных используют индексы, в которых каждому значению столбца или свойства ставится в соответствие список идентификаторов записей или объектов с этим значением.

Битовый индекс имеет другую структуру, он содержит отдельную битовую карту (последовательность 0 и 1) для каждого возможного значения столбца или свойства, где каждому биту соответствует строка или объект с индексируемым значением. Бит 1 означает, что запись или объект с номером, соответствующим позиции бита содержит индексируемое значение для данного столбца или свойства.

Преимущество битовых индексов в том, что сложные запросы могут быть выполнены путем булевых операций (И, ИЛИ) над битовыми строками в индексах, позволяя быстро определить позиции битов указывающих номера записей или ID объектов, удовлетворяющих накладываемым условиям, без сканирования данных. Битовые индексы могут в сотни раз уменьшить время отклика при поиске по большим объемам данных.

Битовые индексы традиционно страдают двумя недостатками:
a) они недопустимо медленны на операциях, связанных с изменениями данных в реляционных базах данных
б) они занимают слишком много места для хранения.
Это причины, по которым они редко используются в реляционных базах данных для приложений обработки транзакций.

В Caché представлена новая технология – “транзакционных битовых индексов”, в ней используются многомерные структуры данных для решения этих двух проблем. Операции обновления этих индексов часто выполняются быстрее, чем с традиционными индексами, и благодаря специальным алгоритмам компрессии они значительно менее требовательны к объемам памяти для их хранения. Также в Caché поддерживается битслайс индексы, оптимизированные для данных, которые надо сегментировать перед индексированием – например, для чисел и дат. В результате для поиска среди миллионов записей за доли секунд эти индексы могут быть использованы на OLTP базах данных. Приложения для business intelligence и хранилищ данных могут работать с «живыми» данными.

В Caché можно использовать оба вида индексов – традиционные и транзакционные битовые индексы. Кроме того, здесь поддерживаются многоколоночные индексы. Например, индекс по колонкам Штат и Модель поможет быстро идентифицировать того, кто имеет автомобиль данной модели, зарегистрированный в известном штате.

Преимущества Caché

Сверхбыстрые запросы: Применив транзакционные битовые индексы, пользователь получает значительный рост скорости запросов на больших базах данных. Поиск по миллионам записей выполняется за доли секунды и это на системах, изначально предназначенных для обработки транзакций.

«Молниеносные» обновления: Применяемые в Caché битовые индексы могут обновляться так же быстро, как и традиционные индексы, что делает возможным использование битовых индексов в транзакционных приложениях.

Анализ данных в реальном масштабе времени: С применением транзакционных битовых индексов стала доступной аналитика в реальном масштабе времени для быстро меняющихся данных.

Меньшая стоимость: Больше не нужны дополнительные серверы, предназначенные для отдельных систем хранилищ данных и систем поддержки принятия решений. Также не требуются ежедневные операции по переносу данных в хранилища данных из транзакционных систем. Нет необходимости и в администраторах для поддержки дополнительных серверов хранилищ данных.

Масштабируемость: Скорость транзакционных битовых индексов позволяет строить большие информационные системы с обслуживанием поиска по данным.

ПОЛНОТЕКСТОВЫЙ ПОИСК

Полнотекстовый поискCaché поддерживает запросы для полнотекстового поиска с указанием интересующих слов, при этом в тексте искомые слова могут встречаться в других морфологических формах. Алгоритмы поиска зависят от используемого национального языка. Функция поиска может применяться и в случае, если необходимо найти информацию на родном языке пользователя: английском, французском, немецком, итальянском, японском, португальском или испанском. Поддержка других языков будет обеспечена в будущем.


WHERE Description %Contains (‘search’)

WHERE Description %Contains (‘close’)


Caché находит следующие формы слова: «search», «searched», «searching», …

Caché находит следующие формы слова: «close», «closed», но не «closet» или «disclose».

Преимущества Caché

Наличие мощного механизма поиска по неструктурированным текстам: Поиск по неструктурированным текстам, таким, например, как записи лечащего врача и т.д., может легко выполняться по ключевым и контекстно-близким словам.

Исключительно быстрый поиск: В сочетании с использованием технологии битовых индексов запросы полнотекстового поиска по большим объемам текстовых данных выполняются за доли секунды.

ТЕХНОЛОГИЯ InterSystems iKnow

innovation@350-dpi-Технология InterSystems iKnow позволяет индексировать текстовые файлы и неструктурированные данные других типов для выделения элементов представления знаний, концепций и связей между ними. В отличие от прочих технологий семантического анализа и поиска, технология iKnow автоматически показывает наиболее значимые элементы в данных без необходимости какого-либо вмешательства пользователя, даже без задания ключевых терминов в качестве поискового критерия.

Интеллектуальное индексирование текстовых данных

Функция интеллектуального индексирования (Smart Indexing) дает возможность анализировать и преобразовывать неструктурированные текстовые данные в понятный набор концепций и связей между ними без необходимости использования предварительно заданных словарей, таксономий и онтологий. Эта функция позволяет определить в больших объемах неструктурированного текста без ввода ключевого слова, какие тексты схожи, какие имеют связи между собой, какая информация репрезентативна и является значимой.

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

Интеллектуальное сопоставление (связывание)

Функция интеллектуального сопоставления (Smart Matching) связывает результаты интеллектуального индексирования с имеющимися элементами знаний, относящихся к конкретной области деятельности, организации или экономическому сектору. Smart Matching опирается на концепции (значащие понятия) и их сочетания, а не только на слова, и включает в себя выявление полных, частичных и спорадических совпадений.

Интеллектуальное интерпретирование

При выполнении функции интеллектуального интерпретирования (Smart Interpretation) применяются аналитические средства и/или бизнес-правила в отношении результатов интеллектуального индексирования и интеллектуального сопоставления, для чего может потребоваться использование программных продуктов InterSystems Ensemble® или InterSystems DeepSee.

Smart-Indexing

Преимущества Caché

Встроенные средства анализа и индексирования неструктурированных данных: Технология InterSystems iKnow встроена в Caché. Вы можете получить доступ к нужным вам данным – структурированным и неструктурированным – без применения программных решений или инструментов, предоставляемых сторонними поставщиками.

Минимальная предварительная работа: В отличие от других инструментов семантического анализа, технология InterSystems iKnow дает возможность находить концепции и связи между ними без их предварительного определения. Иными словами, пользователям не нужно знать, что они будут искать, до начала поиска.

Многоязыковая поддержка: Технология InterSystems iKnow обеспечивает поиск по текстам на разных языках, в том числе и тогда, когда они содержатся в одном документе.

Многоцелевое применение: InterSystems iKnow может применяться для решения разных типов проблем. В частности, эта технология обеспечивает выявление наиболее «интересных», значимых элементов в огромном количестве документов, автоматическое связывание информации с другой информацией на основе схожести, агрегирование больших объемов текста в сводные документы и т.д.

ENTERPRISE CACHE PROTOCOL ДЛЯ РАСПРЕДЕЛЕННЫХ СИСТЕМ

Масштабируемая производительность в распределенных системах

Протокол сетевого сообщения между серверами уровня предприятия Enterprise Cache Protocol (ECP) — высокопроизводительная и масштабируемая технология, которая позволяет компьютерам в распределенной среде использовать удаленные базы данных. Применение ECP не требует изменений в приложениях – приложения просто используют данные из удаленных систем так же, как если бы они хранились локально.

Рассмотрим подробнее работу ECP. Каждый сервер приложений содержит свой сервер баз данных, который оперирует с данными, находящимися на локальных дисковых системах, или с блоками, которые получены с другого сервера баз данных через ECP. Когда клиент запрашивает информацию, сервер приложений пытается удовлетворить запрос данными из локального кэша. Если это невозможно, он запрашивает необходимые данные с удаленного сервера баз данных Caché. Ответ содержит блоки базы данных, которые хранят эти данные. Блоки кэшируются сервером приложений, где они становятся доступными для всех приложений и клиентов, работающих с этим сервером. ECP автоматически берет на себя заботу об управлении согласованностью данных в кэшах распределенной системы и распространением изменившихся блоков назад к серверам баз данных.

ECP обладает высочайшей производительностью и масштабируемостью. Клиенты получают быстрые отклики, потому что они часто используют данные из локального кэша. Кэширование значительно сокращает сетевой трафик между базой данных и серверами приложений, так что любая сеть может справиться с нагрузками от большого количества серверов и клиентов.

Сервер базы данных

Легкость в использовании — не требуются изменения в приложениях

Использование ECP прозрачно для приложений. Приложения, написанные для запуска на одиночной системе могут выполняться в многосерверной среде без изменений. Чтобы использовать ECP, администратор системы просто указывает один или несколько серверов баз данных для сервера приложений и настраивает в отображении областей (Namespace Mapping) ссылки на глобалы (или части глобалов), соответствующие серверам баз данных.

Гибкость конфигурирования

Каждый сервер Caché может выступать как сервер приложений и как сервер баз данных для других систем. ECP поддерживает любую комбинацию серверов приложений и серверов баз данных и любую топологию “точка-точка” объемом до 255 систем.

Преимущества Caché

Высочайшая масштабируемость: ECP позволяет наращивать сервера приложений, в каждом из которых используется распределенная база данных, как если бы она была локальной. Если производительность дисковой системы становится узким местом, могут быть подключены новые серверы баз данных, и тогда база данных становится более распределенной между серверами.

Высокая готовность: Если пользователи распределены между серверами небольшими группами, то возможные сбои одного из серверов приложений повлияют на меньшее число пользователей. При возникновении проблем с сервером базы данных и его перезагрузкой серверы приложений продолжают работать без заметных проблем или остановок. В некоторых случаях сервер базы данных может быть сконфигурирован для отказоустойчивой работы с теневым сервером или кластерной системой, позволяя еще более повысить надежность.

Меньшая стоимость: Большое количество невысоких по цене компьютеров может быть объединено в необычайно высокопроизводительную систему для интенсивной обработки данных.

Прозрачность в использовании: Нет необходимости писать приложения специально для использования ECP – приложения Caché могут воспользоваться преимуществом ECP без изменений.

ВЫСОКАЯ ГОТОВНОСТЬ (HA) И КАТАСТРОФОУСТОЙЧИВОСТЬ (DR)

Даже в самых проверенных системах возможны неожиданности: сбой оборудования, потеря питания, еще какие-либо форсмажорные обстоятельства: наводнение или иная природная катастрофа. Однако ни при каких условиях компьютерные системы больниц, телекоммуникационных сетей и других критически важных объектов не должны оказаться в нерабочем состоянии. С целью выполнения этого требования в соответствии с существующими стандартами СУБД Caché спроектирована таким образом, что может легко восстанавливаться после сбоев, предлагая целый ряд вариантов восстановления в целях снижения или полного исключения неблагоприятного воздействия на работу пользователей.

Функция журналирования (Caché Write-Image Journaling) и другие средства гарантируют сохранение целостности базы данных в большинстве случаев (включая отказ электропитания) и быстрое восстановление после сбоя с минимальными последствиями для пользователей.

Caché предоставляет различные возможности по обеспечению отказоустойчивости, высокой готовности и по сохранению состояния баз данных при сбоях. Существуют варианты конфигураций, уменьшающие влияние сбоев на пользователей системы:

  • технология зеркалирования
  • Распределенный ECP
  • Failover кластеры
Зеркалирование базы данных

Cистема зеркалирования (Mirror) представляет собой логическую комбинацию двух систем Caché, которые называются узлами аварийного переключения (failover members) и являются физически независимыми системами, соединенными между собой только по сети. Одна из систем берет на себя роль основного узла (Primary), вторая автоматически становится резервным узлом (Backup).

Для поддержания системы в актуальном состоянии зеркалированные базы данных основного и резервного узлов синхронизируются в реальном масштабе времени. Синхронизация осуществляется через сеть таким образом, чтобы минимизировать влияние данного процесса на производительность основного узла.

Зеркалированные базы данных изменяются только на основном узле; все зеркалированные базы данных в системе, определенной в качестве резервного узла, поддерживаются в режиме «только для чтения», что предотвращает случайные обновления этих БД.

Зеркалирование базы данных

Внешние клиенты (обращения через язык программирования, ODBC/JDBC/SQL-клиенты, пользователи с прямым подключением и т.д.) подключаются к системе зеркалирования по ее виртуальному IP-адресу – Mirror Virtual IP (VIP), – который задается в процессе настройки системы. Этот адрес автоматически присваивается интерфейсу узла, назначенного системой зеркалирования в качестве основного в данный момент. Указание VIP-адреса необязательно: если он не задан, все внешние клиенты должны соединяться непосредственно с работающим основным узлом и «знать» оба узла и роли, заданные им на данный момент в составе системы зеркалирования.

Cистема зеркалирования также допускает применение асинхронных узлов (Async Member). Такой узел можно сконфигурировать так, что он будет получать обновления от одной или нескольких систем зеркалированния, развернутых на предприятии. В этом случае одна система зеркалирования может быть использована для обновления данных на шести географически распределенных асинхронных узлах. Эта модель является надежной основой для создания среды распределенной репликации данных, позволяющей организации реализовать все выгоды от гарантированного обеспечения непрерывности своей деятельности.

Асинхронный узел может быть также настроен, как корпоративное хранилище данных. При этом одна или более систем зеркалирования, используемых в организации, могут обновлять данные на асинхронном узле, а тот в свою очередь – выполнять роль централизованного корпоративного хранилища данных. Такая конфигурация обеспечивает широкие возможности для формирования отчетности, решения задач бизнес-аналитики (BI) и поиска полезных данных (Data Mining) в масштабе всей организации.

Использование зеркального отображения БД с протоколом ECP

Серверы приложений, поддерживающие протокол InterSystems Enterprise Caché Protocol (ECP), автоматически получают информацию об обоих узлах системы зеркалирования, в том числе о том, какой из них в данный момент является основным. Другими словами, такие серверы приложений не используют VIP-адрес, а напрямую подключаются к узлу, избранному в качестве основного.

Если основной узел выйдет из строя, серверы приложений ECP воспримут переход на другой узел просто как перезапуск ECP сервера данных – серверы приложений просто установят соединение заново и продолжат работу. В крайнем случае все, с чем могут столкнуться пользователи при сбое, – это небольшая пауза в работе.

Failover кластеры

Один из распространенных вариантов кластерных конфигураций – failover. Такая конфигурация обеспечивает доступ нескольких серверов к одной базе данных, при этом только на одном из них выполняется Caché. Если происходит отказ активного сервера, Caché стартует на другом сервере, который становится активным. Пользователи сразу же могут подключаться к новому серверу.

Сервер данных ECP может быть сконфигурирован как отказоустойчивый кластер. Если основной сервер данных выйдет из строя, вместо него, «заняв его место», будет функционировать резервный сервер данных.

Преимущества Caché

«Пуленепробиваемая» база данных: Журналирование и другие возможности Caché для сохранения целостности базы данных при сбоях и отключениях питания гарантируют целостность структур данных.

Отказоустойчивые конфигурации: Использование конфигураций Caché с теневыми серверами, ECP и failover кластерами дают возможность переключить запасной сервер в активное состояние за несколько секунд. Это позволяет восстановить работоспособность системы в кратчайшее время с минимальным влиянием на работу пользователей.

Повышенная готовность при сниженных расходах: Технология Caché Database Mirroring не требует крупных денежных вложений в аппаратное обеспечение, услуги по технической поддержке, приобретение лицензий на право применения операционных систем и поддержание хранилищ данных. Кроме того, ее отличает простота настройки конфигураций зеркалирования БД, что позволяет минимизировать расходы на администрирование.

МОДЕЛЬ БЕЗОПАСНОСТИ

Система Caché сертифицирована по программе сертификации Common Criteria EAL 3. Модель безопасности системы разработана для поддержки развертывания приложений тремя способами:

Security-model-chart

Безопасность в системе Caché обеспечивается за счет выполнения аутентификации, авторизации, аудита и шифрования БД. Предоставляя пользователям эти возможности, Caché позволяет минимизировать затраты на поддержание высокой производительности приложений в системе.

Аутентификация

Аутентификация в Caché – процедура проверки подлинности пользователя – выполняется как для реальных пользователей, так и для систем и даже устройств. К примеру, пользователем может быть измерительный прибор, сохраняющий сгенеренные данные, или приложение, работающее на базе другой системы, соединенной с Caché. В Caché может применяться ряд механизмов аутентификации, которые перечислены ниже.

  • Протокол сетевой аутентификации Kerberos: Является наиболее надежным средством аутентификации. Kerberos Authentication System обеспечивает математически проверенную, надежную сетевую аутентификацию пользователей.
  • Протокол LDAP: Caché может обеспечить проведение аутентификации по протоколу Ligthweight Directory Access Protocol (LDAP). В этом случае Caché запрашиваетLDAP-сервер для аутентификации пользователя, основываясь на информации своей системной базы данных пользователя. Через LDAP-сервер также могут контролироватся все аспекты управления паролями, политики паролей и т.п.
  • Пароли: Caché подсказывает пользователю о необходимости указания пароля и сравнивает хэш пароля с хэш-значением, которое было в ней сохранено.
  • Делегированная аутентификация: Делегированная аутентификация (Delegated Authentication) применяется как средство создания индивидуально настраиваемых аутентификационных механизмов. Разработчик приложения полностью контролирует логику кода делегированной аутентификации. Caché включает в себя шаблон для построения кода аутентификации уполномоченным пользователем.
  • Аутентификация на базе операционной системы: В этом случае аутентификация основана на уверенности в том, что операционная система проверила идентичность каждого пользователя и что в ней применяются те же аутентификационные данные, которые требуются для работы с Caché.

Вы также можете позволить всем пользователям соединяться с Caché без проведения их аутентификации.

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

Caché обеспечивает реализацию Single Sign-on посредством поддержки конфигураций OpenAM.

Авторизация

После выполнения аутентификации пользователя следующей операцией по обеспечению безопасности является определение того, что этому пользователю разрешено применять, просматривать и редактировать. Определение прав пользователя и контроль пользовательского доступа называется авторизацией. Назначение и контроль прав пользователей обычно осуществляются через Caché Management Portal.

Ресурсы и привилегии

Существуют различные ресурсы (такие как базы данных, приложения и системные службы), и пользователи должны получить доступ (существуют права на READ, WRITE и USE – на чтение, запись и использование, соответственно) для их использования от администратора по безопасности. Вдобавок к определенным в системе ресурсам, администратор может создавать для приложений особые ресурсы и использовать существующие механизмы для разделения полномочий.

Пользователи и роли

Для упрощения, пользователям обычно назначают одну или несколько ролей (например, «LabTech» или «Payroll»), и администратор описывает привилегии доступа к ресурсам для ролей, а не для каждого пользователя. Пользователь наследует все привилегии, разрешенные ролям, на которые он назначен.

Роли, назначаемые приложениям

При описании прав для пользователей приложений часто бывает необходимо вместо назначения администратором длинного списка привилегий на ресурсы приложения (например, возможность чтения и записи в базу данных заработной платы) временно дать дополнительные привилегии на доступ к приложению, и при использовании приложения будут определяться права доступа к его ресурсам.

Для достижения этого роли назначаются приложению. При обращении к приложению пользователь временно приобретает дополнительные роли. Они могут быть представлены простым списком с перечислением уполномоченных на доступ к приложению или более сложным описанием, базирующимся на уже существующих ролях пользователя.

Эта особенно полезно для веб-приложений. После аутентификации пользователя и проверки прав на работу с данным веб-приложением пользователь временно получает дополнительные роли, назначенные этому приложению, на время выполнения запроса на странице приложения.

Администратор безопасности может также определять программы, обращение к которым, после определенных проверок безопасности, также добавляет роли определенных приложений. Это гибко настраиваемый механизм для управления ролями приложений, не использующих браузер.

Аудит

Многим приложениям необходим надежный аудит, особенно это касается тех, к которым предъявляются требования распоряжений правительства или законов, например HIPAA или закон Сарбанеса-Оксли (Sarbanes-Oxley). Все события системы Caché и приложений записываются в журнал, доступный только для добавления и совместимый с любым инструментом для генерации отчетов по SQL-запросам.

Шифрование хранилища данных (Data-at-Rest)

Caché поддерживает два вида шифрования баз данных:

  • Администратор безопасности может определить один или более файлов CACHE.DAT, которые требуется шифровать. После этого все содержимое этих файлов шифруется, включая все индексы.
  • Разработчики приложений могут использовать системные функции для шифрования / дешифрования данных, которые затем могут быть переданы или сохранены в БД. Этот способ может применяться для шифрования важных данных, чтобы защитить их от пользователей, имеющих доступ лишь к содержимому базы данных только для чтения, но не имеющих ключа.

По умолчанию в Caché данные шифруются с применением AES (Advanced Encryption Standard) – симметричного алгоритма, использующего ключи длиной 128, 192 или 256 бит. Ключи шифрования хранятся в защищенной области памяти. Caché предоставляет все необходимые возможности для управления ключами шифрования.

Журналы также могут быть зашифрованы.

Шифрование для обеспечения безопасности каналов передачи данных (Data-in-Motion)

Caché поддерживает протокол безопасности SSL (Secure Sockets Layer) и являющийся его преемником протокол TLS (Transport Layer Security) для обеспечения безопасных соединений нескольких типов, описанных ниже.

  • Когда система Caché функционирует в качестве сервера, она принимает данные о соединениях и организует использование SSL, включая соединения теневых приемников Caché (shadow destinations) и теневых источников Caché (shadow sources).
  • Когда Caché работает в качестве клиента, она может соединяться с серверами, требующими применения SSL.

Во всех случаях Caché использует конфигурацию SSL/TLS Configuration, которая определяет различные характеристики для работы сервера Caché с SSL/TLS-соединениями.

Более подробная информация об обеспечении безопасности каналов передачи данных приведена в разделе «Caché и веб-сервисы».

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