Manifold is extremely reliable software, and Manifold will create accessory files such as the .SAVEDATA file to defend as much as possible against hardware and other crashes. Despite such measures Manifold cannot fend off all threats from failures in hardware or Windows system problems or other threats external to Manifold. We can increase the reliability of our data by taking a few simple measures:
Save projects frequently, and reasonably frequently use Save As to save a project under a new name. This makes it much harder for a disk error to kill a project. Always saving a project to the same file name is putting all of our eggs in the same basket. Saves are fast, and disk space for a few extra saved versions of work in progress is much cheaper than the cost of time to redo a project.
Use File - Export Project to export a project into Manifold's archival MXB format. MXB format is not just a more compact format, it is also designed to be as bulletproof as possible, something we all want in an archival format.
Manifold .map project format is very fast, but it necessarily depends on the correct operation of very much code, including much code not written by Manifold such as Microsoft ODBC drivers, other third party code like ESRI's GDB libraries and so on. However durable Manifold's own code may be, no matter how compartmentalized any third party code may be, and no matter how reliable .map format may be, MXB is even more reliable because it is reduced to the minimum possible structures required to archive a project. If anything odd has sifted into a project as a result of any error, for example, an index improperly constructed during an import, an export to MXB will often clean out such errors as part of the reduction to basics. When the MXB is re-opened by Manifold, new indices and other infrastructure are computed based on a clean start.
Use an uninterruptable power supply (UPS) to protect your computer against power failures. Manifold protects against power failures but Windows is more vulnerable.
By default, Manifold uses a saving process that is resilient to power failures. This means that a save is either completely successful or completely unsuccessful, including if it has been interrupted by a loss of power.
A project save is performed in two phases. First, a .SAVEDATA file is created and pending changes are written to that file. Next, the contents of the .SAVEDATA are applied to the .MAP file. If a loss of power occurs during the first phase, a subsequent opening of the .MAP file will ignore the incomplete changes in the .SAVEDATA file. If a loss of power occurs during the second phase, a subsequent opening of the .MAP file will reapply the changes from the .SAVEDATA file. Data can only be corrupted if the first phase succeeds, and then the second phase fails, and then finally the .SAVEDATA file which contains changes is somehow removed.
In addition to protecting against power failures during saves, Manifold protections for safe saves also help protect against unexpected interruptions such as connection failures. However, Manifold hardening cannot protect against unsafe operating system functions, such as non-failsafe cache utilization in USB drivers and networking software.
A classic example of non-failsafe cache and resulting save failures can occur with USB failures. USB drives sometimes get disconnected, for example, due to a port failure. Even worse is that drivers for USB drives usually aggressively cache writes. This means that a driver can be told to complete a write to a specific file, and then the driver may report that this has been done without actually flushing data to the device. In such cases, if there is a failure that disconnects the drive before all data in the cache is flushed to the device, the data on the device will be only partially changed.
Such non-failsafe use of cache can prevent Manifold protections for safe saves from working, because such protections depend on accurate reports from the operating system of which operations were completed. False reports from USB drivers which say an operation was completed when it was not completed can prevent a safe save.
To enhance USB device reliability, locate the device in the Windows Device Manager app and examine options exposed by the driver. Many drivers expose ‘write caching’ as an option. By default the option is normally turned on, because it increases the apparent performance of the drive. If such an option is available, turn off write caching. There are many other ways for USB devices to fail and for Windows USB drivers to lose their minds, so for maximum reliability do not write projects directly to USB storage from within Manifold. Instead, write to local storage (SSD or disk) and then copy that .map or .mxb project file to USB.
Networking software also may be vulnerable to disconnects and interruptions in non-failsafe ways. Networks are generally safe to use for read-only sources, but given the frequency with which errors or transient disconnects occur in networks it is tempting fate to write data over networks. For example, launching Manifold on our desktop in Kansas City and opening a .map file that is located on a server in Germany and then proceeding to make significant updates and writes to that .map file is betting a lot on a very long chain of network connections through very many devices. If the network works perfectly without errors or disconnects we will have no problems, the key word being if.