Как было сказано ранее современные форматы данных мало подходят для редактирования. Чтобы обеспечить эту лёгкость редактирования, в unDE будут широко использованы файловые базы данных BerkeleyDB.
BerkeleyDB -- это высокопроизводительная база данных, которая по сути реализует хеш. Хеши удобны для хранения самого различного рода информации. База данных BerkeleyDB могут достигать огромных объёмов. А скорость работы с ними на современных машинах достигает миллионов операций чтения/записи в секунду.
Тот факт, что права на BerkeleyDB были куплены фирмой Oracle, явно подтверждают серьёзность этой разработки.
Многие даже не подозревают, что BerkeleyDB используется в ежедневно используемых ими приложениях. Например, в пакетном менеджере rpm, в системе контроле версий subversion, реляционной базе данных mysql версий 3.23 - 5.1.
BerkeleyDB легко позволяет реализовать механизм транзакций без лишних проблем. Механизм блокировок позволит использовать блокировки с точностью до записи, что также сложно реализовать обычными средствами операционной системы.
Конечно, для хранения информации о документе одного BDB-файла часто будет не достаточно. А архивирование в нашем случае будет весьма неуместно.
Потому, одним из принципов unDE станет "всё -- есть директория". В отличие от принятого в современных системах принципа "всё -- есть файл" он является более обобщённым. Ещё в ранних версиях Opera она сохраняла все файлы веб страниц в директорию, вместо одного HTML-файла и директории "имя страницы + Files", как это принято в браузере от Microsoft. На самом деле это прекрасная идея, когда вся веб-страница умещается в одной сущности (не важно файл это или директория). Лишь из-за того, что не было браузеров способных автоматически воспринимать целую директорию как единую сущность, вскоре и Opera стала сохранять веб-страницы в единый файл -- веб-архив или парой файл+директория.
Так в unDE даже для директорий будет возможно назначить обрабатывающее её приложение.
Кроме прочего BerkeleyDB позволит вообще не задумываться о сохранении документов на диск. Программный код будет напрямую работать с записями базы данных, а библиотека libdb и ОС сами решат когда она должна попасть на диск. Благодаря использованию вызовов mmap в BerkeleyDB даже несколько несвязанных приложений при работе с одним документом не будут загружать память копиями одних и тех же данных, а будут разделять одни и те же страницы памяти для чтения.
Так активное использование BerkeleyDB позволит значительно упростить разработку unDE и привить ей множество полезных свойств.