ObjectDatabase++ has been especially designed for the unique needs of wireless applications. By implication, wireless applications are inherently client-server, the wireless device running the client software somewhere far away and the server application is home alone. This creates the situation where there is often no one able to service the server application in case of any unforeseen problems and as such quality wireless server application will need to monitor and repair themselves. This is an impossible task to do in one single kernel level process, as errors can come from the dozens of embedded sub systems or even the OS itself. This is why at Ekky Software we have raised the bar when looking at moden database management systems underpinning the server application, we have made ours to work in both a multi-threaded and multi-process environment.
The second distinctive design requirement of wireless applications is that without any person to monitor the server, it needs to be able to be able to recover from exactly from where if left off. Many database management systems do not continually write through all changes to the disk at the time they happen and in a client-server context it is possible to commit a transaction, send off a receipt number and then crash before the OS flushes the transaction to disk, this leaving the user unaware of what has just happened and allows other users to make mistakes by processing their transactions with old data.
Another requirement of modern database server applications is that they often need to run 24 hours a day, 7 days a week and 365 days a year. This leaves no time to maintain the database file systems. ObjectDatabase++ has been designed to compact the data files whenever a change has been made affecting the available free space. Also ObjectDatabase++ has been designed to be able to back up the data files without stopping the server processes by temporarily having an exclusive transaction to control the database.
ObjectDatabase++ has been designed to meet all these new requirements of wireless applications, while adding some new ideas as well, for example spatial indexing, hash indexing of object identifiers, unbounded variable length B+-tree indexing, global locking order, real time data file compaction, real time file recovery and a free graphical user interface.