Domino Database
Domino Database (также известна как Domino) — это гибридная NoSQL-база данных и документно-ориентированная система управления базами данных (СУБД), разработанная американской компанией Lotus Development Corporation (позже — IBM, а затем HCL Technologies). Основная особенность системы заключается в сочетании реляционной модели (через встроенный SQL-доступ) и модели документов на основе технологии NSF (Notes Storage Facility). Domino Database является ключевым компонентом платформы HCL Domino (ранее — IBM Domino, Lotus Domino), используемой для создания корпоративных приложений, систем коллективной работы, электронной почты и управления документами.
Архитектура и модель данных
Документная модель NSF
Основной единицей хранения в Domino Database является документ, который представляет собой набор полей произвольного типа: текст, числа, даты, RTF-форматированный текст, вложения, ключевые слова и ссылки на другие документы. В отличие от традиционных реляционных СУБД, схема данных (набор полей) не фиксирована на уровне базы — каждый документ может иметь собственную структуру. Это обеспечивает гибкость при работе с полуструктурированными данными.
Документы группируются в базы данных (NSF-файлы). Каждая база данных представляет собой автономный файл с расширением .nsf, который содержит как сами документы, так и метаданные, дизайн (формы, виды, агенты) и индексы.
Роль форм и видов
Формы (forms) определяют визуальное представление документов при их создании, редактировании и просмотре. Форма включает поля, логику валидации и вычислений (на языке формул LotusScript или JavaScript), а также макет интерфейса. Однако форма не является жёсткой схемой хранения: документ может быть создан через одну форму, а просмотрен через другую.
Виды (views) — это индексированные представления данных, аналогичные представлениям (views) в реляционных БД, но с поддержкой иерархической (древовидной) группировки строк. Виды позволяют отображать документы, отсортированные по значениям полей, с фильтрацией и вычисляемыми колонками.
Иерархический контейнер баз данных
Domino Database поддерживает вложенные базы данных — так называемые «вкладки» (subdatabases) и «каталоги» системных баз. Однако в классической реализации каждый NSF-файл содержит только одну логическую базу данных. Иерархия может быть реализована через ссылки между документами (response documents) — механизм, при котором один документ является «родительским» для другого, формируя древовидную структуру (например, тема и ответы на неё в форуме).
Языки запросов и манипуляции
Domino Database поддерживает несколько способов извлечения и обработки данных:
- Формулы (Formula Language) — простой процедурный язык, используемый в агентах, кнопках, полях и видах. Позволяет выполнять операции над набором документов (SELECT), сортировку, вычисления, условную логику и манипуляцию полями.
- LotusScript — объектно-ориентированный язык, аналогичный Visual Basic for Applications (VBA). Предоставляет доступ к объектной модели Domino (NotesSession, NotesDatabase, NotesDocument и др.) для более сложных операций.
- Java (в версиях от IBM и HCL) — поддерживается для серверных агентов и API.
- SQL — через встроенный SQL-драйвер DECS (Domino Enterprise Connection Services) или внешние ODBC-соединения. Однако SQL-доступ к Domino Database ограничен: он позволяет читать и обновлять данные, но не поддерживает создание таблиц, индексов и транзакции в привычном реляционном смысле.
Транзакции и согласованность
Domino Database не поддерживает стандартные ACID-транзакции в понимании реляционных СУБД. Операции модификации документов выполняются как атомарные изменения на уровне одного документа: сервер Domino фиксирует каждое действие как единицу работы с блокировкой документа на время записи. При обновлении нескольких документов в одном сценарии (например, в LotusScript-агенте) согласованность обеспечивается только программно — система не гарантирует целостности связей между ними. Это компромисс, характерный для документо-ориентированных NoSQL-систем.
Масштабирование и репликация
Ключевой особенностью Domino Database является асинхронная репликация между серверами и клиентами. Репликация работает по принципу «один ко многим»: изменения, внесённые в копию базы данных на одном сервере, автоматически переносятся на другие серверы по расписанию или вручную. Это позволяет создавать распределённые системы совместной работы, где пользователи могут работать с данными даже при временной потере связи с центральным сервером (офлайн-режим).
Масштабирование достигается за счёт разделения нагрузки между серверами и использования кластеризации (Domino Cluster). В кластере серверы синхронизируют данные и могут обслуживать запросы друг друга при отказе одного из узлов.
История разработки
Разработка технологии началась в 1984 году под названием Lotus Notes. Первая версия (Lotus Notes 1.0) вышла в 1989 году и представляла собой платформу для групповой работы с электронной почтой, календарём и общими документами. База данных NSF стала ядром системы.
Компания Lotus Development Corporation была приобретена компанией IBM в 1995 году. В 2000-х годах IBM переименовала продукт в IBM Lotus Domino (серверная часть) и IBM Lotus Notes (клиентская часть). В этот период была добавлена поддержка Java, XML, улучшенная веб-интеграция и SQL-доступ.
В 2018 году IBM продала своих пользователей и часть прав на продукт компании HCL Technologies. С 2019 года система развивается под названием HCL Domino и HCL Notes. HCL активно модернизирует платформу, добавляя поддержку JSON, REST API, интеграцию с современными средствами разработки и повышая производительность.
Применение
Domino Database традиционно используется в крупных корпорациях и государственных учреждениях для построения:
- систем коллективной работы (почта, календари, адресные книги);
- документооборота и управления заявками;
- корпоративных порталов и баз знаний;
- приложений для совместной разработки (например, для управления проектами и отслеживания задач).
В России система применяется в ряде банков, промышленных предприятий и органов власти, хотя с середины 2010-х годов доля рынка Domino сокращается в пользу веб-ориентированных решений (SaaS, облачные сервисы). Тем не менее, платформа сохраняет устоявшуюся пользовательскую базу, особенно в тех организациях, где внедрение началось в 1990–2000-х годах и миграция требует значительных затрат.
Критика и ограничения
Основные недостатки Domino Database включают:
- Сложность администрирования — требуется специализированное обучение; система чувствительна к настройкам репликации, индексации и безопасности.
- Ограниченная масштабируемость — максимальный размер отдельной базы данных (NSF-файла) составляет до 64 ГБ (в классических версиях), хотя HCL увеличила лимит до 256 ГБ; вертикальное масштабирование (увеличение мощности одного сервера) предпочтительнее горизонтального.
- Неполная поддержка SQL — SQL-доступ не является полноценным: невозможно выполнять JOIN между документами разных баз, отсутствует поддержка хранимых процедур.
- Отсутствие ACID-транзакций — приводит к риску нарушения целостности данных при одновременном обновлении связанных документов.
- Устаревшая архитектура — технология NSF разработана в 1980-х годах; современные веб-фреймворки и мобильные приложения часто требуют отдельной интеграции.
Интересные факты
- Оригинальное кодовое название технологии — «Notes Storage Facility» (NSF). Расширение
.nsfдля файлов баз данных сохранилось до сих пор. - Система использует уникальный движок поиска и индексации, способный обрабатывать как полный текст документов, так и метаданные.
- Domino Database поддерживает версионирование документов: при сохранении изменений старые версии могут оставаться в базе (в зависимости от настроек).
- Владельцем товарного знака «Lotus Notes» является компания HCL Technologies; продукт распространяется по коммерческой лицензии.
Источники
- Документация HCL Domino (официальная справка по продукту).
- IBM Redbooks — "IBM Lotus Domino: Administration and Development" (2005).
- Lotus Notes and Domino 7 Developer's Bible (2006) — ISBN 978-0-470-04171-8.
- Материалы конференции Lotusphere (2000–2012).
- Статьи журнала "Byte" за 1987–1995 годы о архитектуре Lotus Notes.
- HCL Tech — официальный сайт компании (раздел HCL Domino).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →