Рус Eng Cn Перевести страницу на:  
Please select your language to translate the article


You can just close the window to don't translate
Библиотека
ваш профиль

Вернуться к содержанию

Кибернетика и программирование
Правильная ссылка на статью:

Метод ссылочной целостности документо-ориентированных баз данных

Лучинин Захар Сергеевич

аспирант, кафедра ИВС, ПГТУ

424000, Республика Марий Эл, г. Йошкар-Ола, пл. Ленина, дом 3.

Luchinin Zakhar Sergeevich

graduate student, Department of Information Computing Systems, Volga State University of Technology

424000, Russia, Marii El, g. Ioshkar-Ola, pl. Lenina, dom 3.

for.zahar@gmail.com

DOI:

10.7256/2306-4196.2014.1.11081

Дата направления статьи в редакцию:

18-01-2014


Дата публикации:

1-02-2014


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


Ключевые слова:

целостность баз данных, ссылочная целостность, нереляционные базы данных, внешний ключ, документо-ориентированная модель, слабоструктурированные данные, большие данные, репликация, партиционирование, foreing key

УДК:

004.65

Abstract: The subject of this study is a document-oriented database that can store semistructured information related to non-relational data storage approach. The basis of the study is in referential integrity. An explanation of the concept of referential integrity is given not only for relational databases. Based on the analysis of the relational approach to support referential integrity, the author proposes the task of handling large amounts of data in a distributed environment using the technology of document-oriented databases taking into account the structure of the data. The article proposes a method to maintain the referential integrity of distributed document-oriented database, based on estimates of links between documents. The method involves the introduction of two types of links between documents, namely the strong and weak links. These types of links mimic the strategy for dealing with foreign keys in relational databases. The author substantiates the introduction of this method as a separate unit from the database management system.


Keywords:

database integrity, referential integrity, relational databases, foreign key, document-oriented model, semistructured data, big data, replication, partitioning, foreing key

Введение

Документо-ориентированные базы данных (ДОБД), относящиеся к NoSQL[1] подходу, получили популярность среди разработчиков высоконагруженного программного обеспечения. Ключевыми факторами популярности являются гибкая модель данных и хорошая горизонтальная масштабируемость. Отсутствие поддержки ссылочной целостности данных на уровне системы управления базой данных влечет ряд неудобств. Прежде всего без данного механизма ответственность за поддержку целостности данных ложится на программистов, что влечет появление ошибки, связанной с человеческим фактором. Реализация механизма позволит избежать ошибок, связанных с человеческим фактором, а также внедрить дополнительные способы обработки данных.

Проблема ссылочной целостности данных

Исследование ссылочной целостности является актуальной задачей, так как с увеличением объема информации в программных приложениях становится сложнее следить за связями между отношениями в базах данных. Соответственно увеличивается вероятность нарушения целостности при выполнении операций над данными. Ссылочная целостность основывается на установлении связи между кортежем из отношения A с определённым кортежем отношения B. Данная связь отвечает за целостность данных. Кроме того всегда имеется возможность выполнения двух операций:

  • Определения того, с каким кортежем в отношении B связан определённый кортеж отношения A;
  • Нахождения всех кортежей отношения A, имеющих связи с определённым кортежем отношения B.

Наиболее известные реализации документо-ориентированных СУБД, такие как MongoDB, CouchDB, RavenDB, хранят и представляют данные в формате JSON/BSON или XML. В таких база данных лежат документы, которые являются аналогом строк в реляционных БД, и коллекции, состоящие из документов. Это, и так называемый «Бессхемный формат». Описания документов в JSON и XML формате позволяют реализовывать сложные иерархические структуры не только для коллекции данных, но и каждого документа индивидуально. Таким образом, нет возможности заранее определить количество внешних ссылок в конкретном документе. В результате необходимы дополнительные системные ресурсы на разбор каждого документа для выявления внешних ссылок при добавлении, редактировании и удаления документа.

Основная идея построения модели данных ДОБД – группировка данных в один документ. Модель данных ДОБД основываются на запросах, которые будут производиться, а не на отношениях между сущностями и понятиях нормализации. Но во избежание высокого уровня избыточности данных выделяют отдельные сущности в новые коллекции [1].

Благодаря хранению связанных данных в одном документе уменьшается время выборки данных, так как производится один запрос вместо нескольких[3]. Так же уменьшается нагрузка на СУБД за счет отсутствия операции соединения таблиц, то есть выборка происходит только из одной коллекции. Но из-за избыточности данных, документы одной коллекции могут ссылаться на несколько других документов в разных коллекциях. Нет возможности однозначно заранее определить количество, местоположение и тип ссылаемых данных. Указанные факторы накладывают дополнительные требования к модулю целостности данных при горизонтальном партиционировании и при синхронизации нескольких копий коллекций [4].

Новозеландский ученый Харша Раджа [2], имеющий научные работы по ссылочной целостности нереляционных баз данных, предлагает добавлять метаинформацию, хранящую ограничения целостности, к каждой записи базы данных. Данный метод позволяет получить информацию об ограничениях при выборке данных. Основным недостатком такого подхода является большая избыточность служебной информации, объем которой может превосходить объем основных данных.

Метод ссылочной целостности для документо-ориентированных баз данных

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

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

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

Для поддержки ссылочной целостности необходимо описание связей на уровне модели данных, но контроль целостности ложится на систему управления базами данных. Для повышения производительности и сохранности данных применяется репликация и шардинг базы данных. Учет количества ссылок происходит на мастер-сервере. При операциях добавления или редактирования данных производится разбор запроса. Выделяется множество документов, на которые направлен запрос. Если выясняется, что операция приведёт к появлению “битых” ссылок, то запрос не выполняется, и в ответе возвращается ошибка. За счет учета проводимых операций над всем множеством данных на одном сервере имеется возможность поддерживать ссылочную целостность на распределенных базах на несколько серверов, то есть при репликации и партиционировании.

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

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

Библиография
1. D. Abadi. Problems with CAP, and Yahoo’s little known NoSQL system, 2010. [Online]. Доступно по: http://dbmsmusings.blogspot.co.nz/2010/04/problems-with-cap-and-yahoos-little.
2. M. Blaha. Referential integrity is important for databases, 2005. ModelsoftConsulting Corporation.
3. E. A. Brewer. Pushing the CAP: Strategies for Consistency and Availability. IEEE Computer, 45(2):23–29, 2012.
4. C. J. Date. Referential Integrity. In Proceedings of the 7th International Conference on Very Large Data Bases, volume 7, pages 2–12, Cannes, France, 1981. VLDB Endowment.
5. А.Г. Коробейников, Н.Г. Птицына, В.С. Исмагилов, Ю.А. Копытенко Вычисление топологии магнитного поля в электромобиле с использованием фазово-градиентного метода // Программные системы и вычислительные методы. - 2013. - 1. - C. 45 - 55. DOI: 10.7256/2305-6061.2013.01.4.
6. А.Г. Коробейников, С.С. Кувшинов, С.Ю. Блинов, А.В. Лейман, И.М. Кутузов Генерация цифровых водяных знаков в графических файлах // Программные системы и вычислительные методы. - 2013. - 1. - C. 35 - 44. DOI: 10.7256/2305-6061.2013.01.3.
References
1. D. Abadi. Problems with CAP, and Yahoo’s little known NoSQL system, 2010. [Online]. Dostupno po: http://dbmsmusings.blogspot.co.nz/2010/04/problems-with-cap-and-yahoos-little.
2. M. Blaha. Referential integrity is important for databases, 2005. ModelsoftConsulting Corporation.
3. E. A. Brewer. Pushing the CAP: Strategies for Consistency and Availability. IEEE Computer, 45(2):23–29, 2012.
4. C. J. Date. Referential Integrity. In Proceedings of the 7th International Conference on Very Large Data Bases, volume 7, pages 2–12, Cannes, France, 1981. VLDB Endowment.
5. A.G. Korobeinikov, N.G. Ptitsyna, V.S. Ismagilov, Yu.A. Kopytenko Vychislenie topologii magnitnogo polya
v elektromobile s ispol'zovaniem
fazovo-gradientnogo metoda // Programmnye sistemy i vychislitel'nye metody. - 2013. - 1. - C. 45 - 55. DOI: 10.7256/2305-6061.2013.01.4.

6. A.G. Korobeinikov, S.S. Kuvshinov, S.Yu. Blinov, A.V. Leiman, I.M. Kutuzov Generatsiya tsifrovykh vodyanykh znakov
v graficheskikh failakh // Programmnye sistemy i vychislitel'nye metody. - 2013. - 1. - C. 35 - 44. DOI: 10.7256/2305-6061.2013.01.3.