ObjectDatabase++

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
ObjectDatabase++
Тип ООБД
Разработчик Ekky Software
Написана на C++, C#, VB.NET & TScript
Операционные системы Windows & Linux
Последняя версия 3.4 (1 октября 2012[1])
Лицензия Проприетарное[2]
Сайт ekkysoftware.com

ObjectDatabase++ (ODBPP) — это встраиваемая объектно-ориентированная база данных, предназначенная для серверных приложений, которые требуют минимального внешнего обслуживания. Она написана на C++ и использует ISAM с возможностью автоматического восстановления системы после сбоев при условии сохранения целостности базы данных. Особенности ODBPP: полный мультипроцессный и многопоточный контроль транзакций, автоматическое восстановление базы данных в режиме реального времени, иерархическая структура данных, простой код, многочисленные поддерживаемые методы индексации.

История[править | править код]

  • Первоначально ODBPP разрабатывалась Ekky Software с 2001 по 2003.
  • База данных переписывалась 4 раза, пока тестирование не подтвердило, что она соответствует спецификации.
  • За последнее десятилетие многочисленные усовершенствования продукта позволили улучшить процесс индексации и поддержку данных.

Иерархические объекты данных[править | править код]

ODBPP поддерживает объекты,,[3][4] похожие на XML или JSON. Именно такая структура хранения данных, при которой объект хранится одной записью, а не распределяется по нескольким таблицам, является главным отличием объектно ориентированных баз данных от их реляционных аналогов.

Традиционная реляционная структура[править | править код]

Традиционно базы данных разрабатывались с применением реляционной модели. Согласно этой модели, данные делятся на несколько таблиц, и с помощью уникальных идентификаторов можно получить полные данные об объекте. Основанные на SQL базы данных используют для ассоциации данных оператор JOIN, что может отрицательно сказываться на производительности.[5]

Объектно ориентированная структура[править | править код]

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

Мульти-процессное управление транзакциями[править | править код]

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

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

Поддерживаемые индексы[править | править код]

В отличие от некоторых более ранних моделей объектных баз данных,[6][7] ODBPP поддерживает большое разнообразие индексов.

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

Статический хеш-индекс[править | править код]

Все объекты в базе данных обладают уникальным идентификатором который формируется через статический hash index. Статический hash index — просто индекс массива. Взяв ID, умножив его на 12 и добавив значение смещения мы получим физический адрес объекта. Этот метод перевода ID в свой физический адрес позволяет извлекать данные вне зависимости от того, сколько объектов хранятся в базе данных.

Индексация B+-деревья[править | править код]

Индекс B+-дерево является распространённой структурой хранения баз данных, и ODBPP не является исключением. Наибольшее количество поисков осуществляется через поиск позиции индекса многократно повторяясь для каждого следующего значения. ODBPP поддерживает большое количество фильтров на B+-деревьях, чтобы сделать результаты более удобным. Например, он может быть установлен, чтобы преобразовать все символы нижнего регистра в верхний регистр, или установить для удаления пробелов или не-алфавитно-цифровых символов, а также обеспечить естественный порядок сортировки, где '9 'стоит до '10'.

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

Пространственные и временные индексы[править | править код]

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

Биометрические паттерны[править | править код]

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

Полнотекстовый поиск[править | править код]

ODBPP обеспечивает полнотекстовое индексирование текста с помощью маркера индексов списка. Эти индексы представляют собой сочетание B+-дерева и области памяти для размещения переполняющих данных (overflow bucket), где текстовая строка разбивается на отдельные лексемы и индексируются в B+-дерево.

Примечания[править | править код]

  1. Ekky Software Архивировано 29 сентября 2012 года.
  2. Ekky Software Sales Архивировано 21 августа 2013 года.
  3. Khoualdi, K, & Alghamdi, T 2011, 'Developing Systems by Using Object Oriented Database Practical Study on ISO 9001:2000 System', Journal Of Software Engineering & Applications, 4, 12, pp. 666—671, Computers & Applied Sciences Complete
  4. Naser, T, Alhajj, R, & Ridley, M 2009, 'Two-Way Mapping between Object-Oriented Databases and XML', Informatica (03505596), 33, 3, pp. 297—308, Computers & Applied Sciences Complete
  5. Suri, P, & Sharma, M 2011, 'A COMPARATIVE STUDY BETWEEN THE PERFORMANCE OF RELATIONAL & OBJECT ORIENTED DATABASE IN DATA WAREHOUSING', International Journal Of Database Management Systems, 3, 2, pp. 116—127, Computers & Applied Sciences Complete
  6. Hardwick, M, Samaras, G, 1989, 'Using a relational database as an index to a distributed object database in engineering design systems ', Data and Knowledge Systems for Manufacturing and Engineering, 1989., Second International Conference on Date of Conference: 16-18 Oct 1989
  7. Zhang, F, Ma, Z, & Yan, L 2011, 'Construction of ontologies from object-oriented database models', Integrated Computer-Aided Engineering, 18, 4, pp. 327—347, Computers & Applied Sciences Complete

Ссылки[править | править код]