The open source SQlite database engine is used by Ultra Recall, with some modifications to support encryption and stored content storage. Each Info Database is a binary database file.
There are several advantages to using a binary database storage mechanism, including:
|•||Instant load time: Ultra Recall starts nearly instantaneously even with very large (2+ GB) Info Databases.|
|•||Performance: Using a true database engine, the time required to add, modify or even retrieve data remains constant as database grows. Storing to a flat text or XML file causes save time to increase with the size of the file.|
|•||Indexed searches: Since .urd files are actually binary database files, they can be indexed in multiple ways, in some cases increasing the performance of searches by a factor of a 100 or more.|
|•||Smaller files: Most human-readable formats such as XML are not very space efficient, with repetitive text consuming significant amounts of space and little opportunity for compression. An Ultra Recall database file is highly efficient in size, and all stored binary data stored is compressed. The net result is that quite often, less space is consumed for documents stored in Ultra Recall (including meta data and indices) than the original files on disk.|
|•||Data consistency: Due to the additional information stored (attributes, text, logical links, etc.) for every item of data added to Ultra Recall, multiple database changes are required for most operations. Using a database with atomic commits ensures that all or none of the changes in a overall update are done; other file formats do not provide for this capability.|
The only disadvantage is that .urd files can't be opened in other applications. To address this concern, several export capabilities are provided, including an xml export capability, which allows all data stored in an Info Database to be exported to a human-readable file format.
Note: Transactional processing is achieved through the use of journal files, which are hidden, temporary files created in the same path as each .urd file, which end in "-journal", during any change to the Info Database. These journal files exist only while an update is executing, but will remain if Ultra Recall is terminated during the update (due to a system crash, power failure, or other error condition).
It is imperative that these journal files are not deleted until the Info Database is reopened in Ultra Recall, so the journal file can be reversed (which is done automatically by the Ultra Recall application). Any 3rd-party "Temporary File Cleaner" application installed must not delete these files, or data corruption can occur (in the event of abnormal application termination).
Note 2: In addition, small cache files for each opened Info Database are created by Ultra Recall in the temporary path to optimize query performance. These temporary files (named "ultrarecall_***", where *** is a random string) are also automatically deleted by Ultra Recall at normal shutdown, but can remain in the event of abnormal application termination. They are locked while Ultra Recall has them in use, but can safely be deleted when not in use by Ultra Recall.