Freeze is a transactional object-oriented database management system that stores Ice types in Berkeley DB databases. Freeze used to be included in Ice, and two Ice services (IceGrid and IceStorm) relied on Freeze to store their data in Berkeley DB databases.
As of version 3.7, Freeze is an independent component, with its own GitHub repository and manual. Freeze 3.7 depends on Ice 3.7, but is not part of Ice 3.7. IceGrid and IceStorm in Ice 3.7 no longer use Freeze or Berkeley DB: they store their data in LMDB databases instead.
Freeze is now deprecated. Freeze 3.7 is provided primarily for backwards compatibility with Ice 3.6 and prior releases: if you use Ice 3.6 or older, we encourage you to upgrade to Ice 3.7 and Freeze 3.7 in case you were using the Freeze component. We do not recommend that you create new Ice-based applications with Freeze, as Freeze 3.7 will be the last Freeze release.
We deprecated Freeze for the following reasons:
- Berkeley DB open-source license compatibility with GPLv2
Freeze, like Ice, is licensed under GPLv2, which is compatible with the open-source license for Berkeley DB until Berkeley DB 5.x. As of version 6.0, Berkeley DB's open-source license is AGPLv3, which is not compatible with GPLv2. This means Freeze can only rely on Berkeley DB 5.x, and Berkeley DB 5.x is quickly becoming obsolete.
- Operations on Slice classes
Freeze offers two storage mechanism, Freeze evictors and Freeze maps, and Freeze evictors rely heavily on the ability to define operations on Slice classes. Other than for Freeze evictors, this feature (defining operations on classes) has limited use and adds complexity to the Ice programming model and language mappings. Deprecating Freeze allowed us to deprecate operations on classes and related features in Ice.
- Persistent storage is not a core feature for Ice
Ice is all about helping you create networked applications, not store data. If you need persistent storage for your Ice application, you can use any number of storage mechanisms. Ice is completely database-agnostic.
- Supported Platforms for Freeze 3.7
- Using the Windows Binary Distribution
- Using the Linux Binary Distributions
- Using the macOS Binary Distribution