ObjectDatabase ++ (ODBPP) is an embedded object-oriented database designed for server applications that require minimal external maintenance. It is written in C ++ and uses ISAM with the ability to automatically restore the system after a failure, while maintaining the integrity of the database . Features of ODBPP: full multiprocess and multi-threaded transaction control, automatic database recovery in real time, hierarchical data structure, simple code, numerous supported indexing methods.
| ObjectDatabase ++ | |
|---|---|
| Type of | OBOB |
| Developer | Ekky Software |
| Written on | C ++ , C # , VB.NET & TScript |
| operating system | Windows & Linux |
| Latest version | 3.4 (October 1, 2012 [1] ) |
| License | Proprietary [2] |
| Site | ekkysoftware.com |
History
- ODBPP was originally developed by Ekky Software from 2001 to 2003.
- The database was rewritten 4 times, until testing confirmed that it met the specification.
- Over the past decade, numerous product enhancements have improved the indexing process and data support.
Hierarchical Data Objects
ODBPP supports objects, [3] [4] similar to XML or JSON . It is such a data storage structure, in which an object is stored in one record, and not distributed across several tables, that is the main difference between object-oriented databases and their relational counterparts.
Traditional Relational Structure
Traditionally, databases have been developed using the relational model . According to this model, data is divided into several tables, and using unique identifiers you can get complete data about the object. SQL-based databases use the JOIN operator to associate data, which can adversely affect performance. [five]
Object Oriented Structure
In object-oriented databases, as opposed to using multiple tables, data is stored in one record. This avoids additional read and write operations when working with the object and effectively works with very large and very complex databases.
Multi-Process Transaction Management
ODBPP implements transaction control, which allows the process to continue while the other terminates. This unique transaction management allows the ongoing process to identify the aborted transaction, restore database integrity, and continue the transaction. It is this ability to terminate the transaction at any time that allows you to build the implementation of transactions in real time on the server side.
After the transaction is committed, the database writes the entire transaction from the memory file to the log file. This is done in three stages. The first is to identify what changes are needed, and to add instructions to the end of the file, writing to disk, the header is updated to indicate the need for updates. Secondly, the file is updated until the header is changed to indicate that the update is complete. This approach ensures that the file will always contain the correct data, because if the process is interrupted at the first stage, the file will simply be truncated and will return to its original state, and if the transaction is interrupted during the second stage, then the next transaction, opening the file, will again execute the saved instructions.
Supported Indexes
Unlike some earlier object database models, [6] [7] ODBPP supports a wide variety of indexes.
During the initial development of the object model, the basic design used a circuit that contained only the serialized binary object that was passed in its ID. No other access was provided. ODBPP is developed using the object model, it understands the hierarchical nature of objects and is able to index the data contained in them.
Static Hash Index
All objects in the database have a unique identifier that is generated through a static hash index . The static hash index is just the index of the array. Taking the ID, multiplying it by 12 and adding the offset value, we get the physical address of the object. This method of translating the ID into its physical address allows you to retrieve data regardless of how many objects are stored in the database.
Indexing B + Trees
The B + tree index is a common database storage structure, and ODBPP is no exception. The largest number of searches is carried out through the search for the position of the index repeatedly repeating for each subsequent value. ODBPP supports a large number of filters on B + trees to make the results more convenient. For example, it can be set to convert all lowercase characters to uppercase, or set to remove spaces or non-alphanumeric characters, as well as provide a natural sort order where '9' stands for '10'.
One of the features of ODBPP is that data stored in a hierarchical object can also be indexed.
Spatial and temporal indexes
Spatial indices are used to make it possible to search for coordinates in two- and three-dimensional spaces. Time indexes are used to implement time indexing.
Biometric Patterns
ODBPP also supports spatial datasets that represent key points of two and three dimension objects. [ specify ] , such as fingerprints or human faces. These sets are indexed using a spatial index that is suitable for group searches. The search itself will create a temporary index that will include all objects that match the search pattern or or are rejected within the specified error.
Full Text Search
ODBPP provides full-text indexing of text using a list index marker. These indexes are a combination of the B + tree and the memory area for placing overflow bucket, where the text string is divided into separate tokens and indexed into the B + tree.
Notes
- ↑ Ekky Software Archived on September 29, 2012.
- ↑ Ekky Software Sales Archived August 21, 2013.
- ↑ 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