Представлен релиз NoSQL БД HamsterDB 2.1.0, в первую очередь ориентированной для встраивания в приложения функций постоянного хранения или кэширования записей, но поддерживающей работу и в режиме обособленной NoSQL БД с доступом по сети. Код проекта написан на языке C++ и поставляется под лицензией GPLv2+ с исключением для возможности связывания с проектами под несовместимыми с GPL лицензиями (Apache, BSD, Zlib и т.п.). Биндинги для использования HamsterDB доступны для языков C/C++, Python, .NET, Java, Erlang и ADA.
Среди особенностей HamsterDB можно отметить поддержку транзакций, наличие средств для восстановления и ведения журнала изменений, возможность хранения дублирующихся ключей (в том числе в отсортированном виде), очень быструю реализацию курсора для перемещения по записям, возможность частичного чтения и записи данных, поддержку как работы в роли постоянного хранилища, так и в роли хранимой в оперативной памяти БД (In-Memory DB). Формат файла с БД не привязан к архитектурным особенностям процессоров и может использоваться без изменений на различных платформах, включая x86, x64, PowerPC, SPARC, ARM и RISC.
Записи хранятся в виде отсортированного дерева B+Tree, поддерживающего помещение ключей переменной длины. Используемые в HamsterDB алгоритмы и структуры данных оптимизированы для гарантированного достижения высокой производительности для всех возможных сценариев применения. Например, по возможности минимизируются операции доступа к диску и обращения к системным вызовам, структуры данных реализованы с учётом особенности работы кэша в современных CPU, для оптимизации медленного ввода/вывода используется кэширование в памяти. Благодаря использованию 64-разрядных указателей, размер файлов с базой практически не ограничен.
Для логического разделения баз в HamsterDB используется понятие окружений, которые позволяют хранить несколько разных БД в одном файле. HamsterDB может использоваться как в виде связываемой с приложением библиотеки (не требует дополнительных зависимостей), так и в форме сервера. Сервер HamsterDB базируется на использовании небольшого http-сервера, который может запускаться отдельно или встраиваться в приложения. Доступны средства для тонкой настройки и тюнинга БД (размер кэша, ключей, страниц и т.п.).
HamsterDB можно рассматривать как стабильный и зрелый проект, развивающийся с 2004 года. Для тестирования качества кода создано более 45000 проверок и 1800 unit-тестов. HamsterDB активно используется во многих популярных десктоп-приложениях, встраиваемых устройствах, телефонах и даже в облачных системах.
Из изменений в HamsterDB 2.1.0 выделяется поддержка транзакций для окружений с хранением БД в памяти. Кроме того, значительно переработан API, проведена значительная ревизия и чистка. Большинство изменений в API связано с переименованием констант и функций с целью достижения единой схемы наименования. Удалены функции с поддержкой файловых фильтров, сжатия и шифрования хранимых данных. Формат хранилища не изменился. В состав включены две новые утилиты: ham_export для экспорта БД в компактном бинарном формате и ham_import для создания окружения БД из ранее сохранённого бинарного дампа или слияния содержимого дампа с существующей БД. Кроме функций резервного копирования утилиты ham_export/ham_import рассматриваются как инструменты для переноса содержимого БД в процессе обновления версий HamsterDB в будущем.
Среди особенностей HamsterDB можно отметить поддержку транзакций, наличие средств для восстановления и ведения журнала изменений, возможность хранения дублирующихся ключей (в том числе в отсортированном виде), очень быструю реализацию курсора для перемещения по записям, возможность частичного чтения и записи данных, поддержку как работы в роли постоянного хранилища, так и в роли хранимой в оперативной памяти БД (In-Memory DB). Формат файла с БД не привязан к архитектурным особенностям процессоров и может использоваться без изменений на различных платформах, включая x86, x64, PowerPC, SPARC, ARM и RISC.
Записи хранятся в виде отсортированного дерева B+Tree, поддерживающего помещение ключей переменной длины. Используемые в HamsterDB алгоритмы и структуры данных оптимизированы для гарантированного достижения высокой производительности для всех возможных сценариев применения. Например, по возможности минимизируются операции доступа к диску и обращения к системным вызовам, структуры данных реализованы с учётом особенности работы кэша в современных CPU, для оптимизации медленного ввода/вывода используется кэширование в памяти. Благодаря использованию 64-разрядных указателей, размер файлов с базой практически не ограничен.
Для логического разделения баз в HamsterDB используется понятие окружений, которые позволяют хранить несколько разных БД в одном файле. HamsterDB может использоваться как в виде связываемой с приложением библиотеки (не требует дополнительных зависимостей), так и в форме сервера. Сервер HamsterDB базируется на использовании небольшого http-сервера, который может запускаться отдельно или встраиваться в приложения. Доступны средства для тонкой настройки и тюнинга БД (размер кэша, ключей, страниц и т.п.).
HamsterDB можно рассматривать как стабильный и зрелый проект, развивающийся с 2004 года. Для тестирования качества кода создано более 45000 проверок и 1800 unit-тестов. HamsterDB активно используется во многих популярных десктоп-приложениях, встраиваемых устройствах, телефонах и даже в облачных системах.
Из изменений в HamsterDB 2.1.0 выделяется поддержка транзакций для окружений с хранением БД в памяти. Кроме того, значительно переработан API, проведена значительная ревизия и чистка. Большинство изменений в API связано с переименованием констант и функций с целью достижения единой схемы наименования. Удалены функции с поддержкой файловых фильтров, сжатия и шифрования хранимых данных. Формат хранилища не изменился. В состав включены две новые утилиты: ham_export для экспорта БД в компактном бинарном формате и ham_import для создания окружения БД из ранее сохранённого бинарного дампа или слияния содержимого дампа с существующей БД. Кроме функций резервного копирования утилиты ham_export/ham_import рассматриваются как инструменты для переноса содержимого БД в процессе обновления версий HamsterDB в будущем.