ObjectDatabase++: различия между версиями
[непроверенная версия] | [непроверенная версия] |
м Автоматическое исправление опечаток с помощью Pywikipediabot (replace.py); косметические изменения |
PBot (обсуждение | вклад) м автоматическая замена параметров карточки в соответствии с новым форматом |
||
Строка 11: | Строка 11: | ||
| genre = [[Object database]] |
| genre = [[Object database]] |
||
| license = [[Proprietary software|Proprietary]]<ref>http://www.ekkysoftware.com/Sales</ref> |
| license = [[Proprietary software|Proprietary]]<ref>http://www.ekkysoftware.com/Sales</ref> |
||
| website = |
| website = http://www.ekkysoftware.com |
||
}} |
}} |
||
Версия от 13:39, 19 января 2014
ObjectDatabase++ | |
---|---|
Файл:ObjectDatabase++ Logo (clear background).png | |
Тип | Object database |
Разработчик | Ekky Software |
Написана на | C++, C#, VB.NET & TScript |
Операционные системы | Windows & Linux |
Последняя версия | 3.4 (Шаблон:Release date[1]) |
Лицензия | Proprietary[2] |
Сайт | ekkysoftware.com |
ObjectDatabase++ (ODBPP) это встраиваемая объектно-ориентированная база данных, предназначеная для серверных приложений, которые требуют минимального внешнего обслуживания. Она написана на C++, как база данных уровня ISAM с возможностью автоматического восстановления системы после сбоев при условии сохранении целостности базы данных. Особенности ODBPP: полный мульти-процессная и многопоточный контроль транзакций, авто восстановление базы данных в режиме реального времени, иерархическую структуру данных, простой код, многочисленные поддерживаемые методы индексации.
История
- Первоночально ODBPP разрабатывалась Ekky Software с 2001 по 2003.
- База данных переписывалась 4 раза, пока тестирование не подтвердило, что она соответсвует спецификации и функционирует как она была задумана.
- За последнее десятилетие многочисленные усовершенствования продукта позволили улучшить процесс индексации и поддержку данных.
Иерархические объекты данных
ODBPP поддерживает объекты,,[3][4] похожие на XMLили JSON. Именно такая структура хранения данных, при которой объект хранится одной записью, а не распределяется по нескольким таблицам, является главным отличием объектно ориентированных баз данных от их реляционных аналогов.
Традиционная реляционная структура
Традиционно базы данных разрабатывались с применением реляционной модели. Согласно этой модели, данные делятся на несколько таблиц, и с помощью уникальных идентификаторов можно получить полные данные об объекте. Чтобы собрать данные вместе SQL базы данных будут строить joins, которое отрицательно сказываются на производительности.[5]
Объектно ориентированная структура
В объектно ориентированных базах данных, в противовес использованию многочисленных таблиц, данные хранятся одной записью.Это позволяет избежать дополнительных операций чтения и записи при работе с объектом и эффективно работать с очень большими и очень сложными базами данных.
Посмотрите на изображение, справа, на верхнем рисунке изображена реляционная модель. Данные разделены на две таблицы. Родитель, обозначенным желтым, а потомки, обозначенными синим. В объектно ориентированной модели, оба и родитель и потомки хранятся в одной записи, информация, которая была ранее хранится в связанной таблице теперь хранится в подменю или вложенные таблицы Foo.
Мульти-процессное управление транзакциями
ODBPP реализует контроль над транзакциями, который позволяет процессу продолжаться в то время как другой прекращается. Это уникальное управление транзакциями позволяет выполняющемуся процессу идентифицировать прерванную транзакцию, восстановить целостность базы данных и продолжить выполнение транзакции. Именно эта возможность прекратить транзакцию в любой момент, позволяет позволяет построить реализацию сделок в режиме реального времени на серверной стороне.
После того, как транзакция коммитится, база данных пишет всю транзакцию из файла памяти в файл журнала. Это делается в три этапа. Первый заключается в выявлении, какие изменения необходимы, и дописывании инструкций в конец файла, записавшись на диск, заголовок обновляется для указания необходимости обновления. Во-вторых файл обновляется, пока заголовок не будет изменен, чтобы показать что обновление завершено. такая архитектура гарантирует что файл всегда будет валиден, потому что, если процесс прервется на первом этапе, файл просто обрежется и вернется в исходное состояние, и если транзакция прервется во время второго этапа, то следующая транзакция открыв файл, вновь выполнит те сохраненные инструкции.
Поддерживаемые индексы
В отличие от некоторых более ранних моделей объектных баз данных, [6] [7] ODBPP поддерживает большое разнообразие индексов. В ходе первоначального развития объектной модели, базовая конструкция использовала схему, которая содержала только сериализованный бинарный объект, который был передан в его ID. Никакого другого доступа предусмотрено не было. ODBPP разработан с применением объектной модели, он понимает иерархическую природу объектов и способен индексировать данные, содержащихся в них.
Статический хэш индекс
Все объекты в базе данных обладают уникальным идентификатором который формируется через статический hash index. Статический hash index - просто индекс массива. Взяв ID, умножив его на 12 и добавив значение смещения мы получим физический адрес объекта. Этот метод перевода ID в свой физический адрес позволяет извлекать данные вне зависимости от того, сколько объектов хранятся в базе данных.
Индексация B+ деревья
Индекс B + дерево является основным лошадкой всех баз данных и ODBPP не является исключением. наибольшее количество поисков осуществляется через поиск позиции индекса многократно повторяясь для каждого следующего значения. ODBPP поддерживает большое количество фильтров на B + Дереьях, чтобы сделать результаты более удобным. Например, он может быть установлен, чтобы преобразовать все символы нижнего регистра в верхний регистр, или установить для удаления пробелов или не-алфавитно-цифровых символов, а также обеспечить естественный порядок сортировки, где '9 'стоит до '10'.
Одна из особенностей ODBPP в отличие от стандартной СУБД является то, что данные, хранящиеся в иерархическом объекте также могут быть проиндексированы.
Пространственные и временные индексы
Пространственные индексы используются, для осуществления возможности поиска двух и трехмерных координат пространств. Временные индексы служат для реализации той же идеи, но только не в пространстве а во времени.
Биометрические паттерны
ODBPP также поддерживает наборы пространственных данных, которые представляют ключевые моменты двух и трех объектов измерения, таких как отпечатки пальцев или человеческих лиц. Эти наборы индексируются с помощью пространственного индекса, который подходит для поиска группы. Сам поиск создаст временный индекс, который будет включать все объекты, которые удовлетворяют шаблону поиска или или отклоняются в пределах заданной ошибки.
Полнотекстовый поиск
ODBPP обеспечивает полное индексирование текста с помощью маркера индексов списка. Эти индексы представляют собой сочетание из B + Tree и переполнение ведро, где текстовая строка разбивается на отдельные лексемы и индексируются в B + Tree.
References
- ↑ Ekky Software
- ↑ http://www.ekkysoftware.com/Sales
- ↑ 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
- ↑ 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
- ↑ 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
- ↑ 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
- ↑ 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
External links
На эту статью не ссылаются другие статьи Википедии. |