Представлен (http://hamsterdb.com/news/show/id/60) релиз NoSQL БД HamsterDB 2.1.0 (http://hamsterdb.com), в первую очередь ориентированной для встраивания в приложения функций постоянного хранения или кэширования записей, но поддерживающей работу и в режиме обособленной NoSQL БД с доступом по сети. Код проекта написан на языке C++ и поставляется под лицензией GPLv2+ с исключением (http://hamsterdb.com/licensing) для возможности связывания с проектами под несовместимыми с 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 активно используется во многих популярных десктоп-приложениях, встраиваемых устройствах, телефонах и даже в облачных системах.Из изменений (http://hamsterdb.com/dl/RELEASE-NOTES-2.1.0.html) в HamsterDB 2.1.0 выделяется поддержка транзакций для окружений с хранением БД в памяти. Кроме того, значительно переработан API, проведена значительная ревизия и чистка. Большинство изменений в API связано с переименованием констант и функций с целью достижения единой схемы наименования. Удалены функции с поддержкой файловых фильтров, сжатия и шифрования хранимых данных. Формат хранилища не изменился. В состав включены две новые утилиты: ham_export для экспорта БД в компактном бинарном формате и ham_import для создания окружения БД из ранее сохранённого бинарного дампа или слияния содержимого дампа с существующей БД. Кроме функций резервного копирования утилиты ham_export/ham_import рассматриваются как инструменты для переноса содержимого БД в процессе обновления версий HamsterDB в будущем.
URL: http://hamsterdb.com/news/show/id/60
Новость: http://www.opennet.me/opennews/art.shtml?num=36282
Блин, и как я про неё не знал ранее. Ну, лучше поздно, чем никому. Спасибище!
> ... в первую очередь ориентированной для встраивания в приложения функций постоянного хранения или кэширования записей ...
> ... активно используется во многих популярных десктоп-приложениях, встраиваемых устройствах, телефонах и даже в облачных системах.Интересно почему в "Амароке" не "Хомячёк", а "Мускуль" ?
> Интересно почему в [KDE4] не "Хомячёк", а "Мускуль" ?Боюсь, выбирали про другое и не слышавшие школьники (буквально).
Мишаня, ты меня расстроил :-)Коммент твой по ссылке прочитал, но не понял откуда ты эту инфу про школьников почерпнул.
> Коммент твой по ссылке прочитал, но не понял откуда ты эту инфу
> про школьников почерпнул.Из первых рук.
я тоже про hamster не слышал, хотя могу пяток базёнок похожих назвать. и когда целенаправленно искал - не нашёл. вот что значит "если нет в debian, значит - на задворках мировой истории".
> вот что значит "если нет в debian, значит - на задворках мировой истории".Значит, нет в debian, на складах мировой истории.
PS: :)
В частной переписке разрабы кдешного аконади честно отписываются - они из очень бедной страны (не помню точно, что-то вроде Афганистана) и этот проект им только для того, чтобы их заметили и пригласили работать хоть куда-нибудь в европы и америки. Это был ответ на мое предложение сделать бэкенд на эскулайт - выяснилось, мускуль они немного видели, потому его и выбрали, а других систем хранения не знают и знать не хотят. Другой вопрос, кто решил сделать это поделие одной из основных подсистем КДЕ.
> В частной переписке разрабы кдешного аконади честно отписываются - они из очень
> бедной страны (не помню точно, что-то вроде Афганистана)Пруф или не было. Если ты посмотришь в AUTHORS в исходниках этого аконади, то по именам легко заметишь, что авторы из европы (Гермашка, например) и штатов в основном.
Письмо за давностью лет не сохранил (как можно увидеть по первой ссылке, баг я вешал весной 2009 г), но тогда у аконади было двое авторов (студенты, один вроде в Германии учился) - Tobias Koenig и Volker Krause. Если очень интересно, думаю, можно нагуглить по соцсетям, например.
О сути см. https://bugs.kde.org/show_bug.cgi?id=188536 и http://lists.debian.org/debian-russian/2010/02/msg00158.html
> Tobias Koenig и Volker Krause.Типичные афганские имена.
Из рассылки:
> Недавно был топик про КДЕ4 и аконади. В общем, делают сабж пара человек из афганистана, имхо абсолютно невменяемых.И опять же без ссылок и каких-либо пруфов. Я представляю это так — кто-то в топике про KDE сделал вброс и кучка людей повелось, даже не удосужившись проверить, а теперь спустя годы это "всем известно что".
Но заметь, я не спорю с тем, что писали неопытные студенты, или с тем, что аконади говно (сам я его всегда отключал). Мне нужен пруф именно на вот это:
> они из очень бедной страны (не помню точно, что-то вроде Афганистана) и этот проект им только для того, чтобы их заметили и пригласили работать хоть куда-нибудь в европы и америки
Перерыл все исходники, но так я и не нашел заявленной поддержки питона... видимо предполагается, что питоновцам хватит и ctypes. Если так, то кушайте без меня - и без того хватает проблем, что бы их еще плодить на проблемах с биндингами.Хотя конечно весьма жаль: идея встраиваемой NoSQL БД с транзакциями для питоновых проектов была бы очень даже ничего.
А вот для жабки и дотнета авторы постарались на славу; постарались так, что сразу видно что эта база для:
1) сишников
2) сишников
3) жабовцев и дотнетчиков
4) немножко для всех остальных, но тут пусть они выкручиваются сами
Товарищ Джокер, что это за "плачь Ярославны" ты нам тут преподносишь? Неужели слабо байндинги написать, если тебе так нужен "Хомячёк"?
Хм.. а вам доводилось писать биндинги под СУБД? Считаете что это так легко и не будет проблем с преобразованием сложных типов? Ню-ню...А так, между нами:
>Биндинги для использования HamsterDB доступны для языков C/C++, Python, .NET, Java, Erlang и ADAС/С++ - есть
.NET - есть
Java -есть
Python - нет
Erlang - нет, обеспечивается сторонним проектом на гитхабе
ADA - я не в курсе, может и естьНу и для кого эта БД?
> Python - нетОни убили хомячка!
> Хм.. а вам доводилось писать биндинги под СУБД?Мне кажется, это была неудачная попытка потроллить на тему "тебе надо, ты и делай".
Для того, чтобы понять эту фразу -- надо хотя бы разик попробовать её в деле на себе.
Михаил, это была попытка довести до товарища мысль, что глазами потребителя все делается очень просто и быстро. Но стоит начать делать, так тут же приходит понимание, что "под капотом" куда больше деталей чем тебе изначально казалось, и что все не так легко, как ты полагал изначально (а тем более писал от анонимуса).
Не надо ля-ля !Код открыт, для Жабки байндинги готовые есть, бери и делай по аналогии, если тебе они действительно до зарезу нужны, а иначе дамская истерика получается.
Я с трудом себе могу представить что нибудь более бесполезное для сооружения питоновских иайндингов чем жаба-байндинг :)На самом деле там есть С - стало быть кому реально надо - реально можно :)
PS: Навеяло Хомячок: Скажи нет змеям! :)
> PS: Навеяло Хомячок: Скажи нет змеям! :):-)
> Перерыл все исходники, но так я и не нашел заявленной поддержки питонаПлохо искали: https://github.com/cruppstahl/hamsterdb-python
>> Перерыл все исходники, но так я и не нашел заявленной поддержки питона
> Плохо искали: https://github.com/cruppstahl/hamsterdb-pythonВы правы, действительно это оно.
Меня просто ввел в заблуждение, тот факт, что в архиве с кодом СУБД уже лежали биндинги к яве и дотнету, а к питону не было... Уже пробую, спасибо за подсказку
как оно?
http://labs.codernity.com/codernitydb/ - не? =)
Очень интересно! Спасибо за ссылку.
> Хотя конечно весьма жаль: идея встраиваемой NoSQL БД с транзакциями для питоновых проектов была бы очень даже ничего.bdb
> bdb+100500
Оно конечно не модно говорить что тулза наших отцов (а кому и дедов!) - делает то же самое в 100500 раз быстрее почти не имеет глюков и применяется в каждом первом железе ... но ведь святая правда же! :)
> bdbAs of July 2011, Oracle's list price for commercial Berkeley DB licenses varies between 900 and 13,800 USD per processor.
есть мнение, что автор hdb не настолько зажрался.
> commercialКлючевое слово.
Авторы всех этих хомячковых поделок могут есть что угодно, но до bdb им как муравью до Бреста.
> Авторы всех этих хомячковых поделок могут есть что угодно, но до bdb
> им как муравью до Бреста....сказал человек, явно ни разу не сопоставлявший bdb и hdb как бэкенды под нагруженным openldap, например...
> бэкенды под нагруженным openldap, напримерЭтот пример может показывать что угодно. Например, рукожопие авторов бэкенда или админов.
>> бэкенды под нагруженным openldap, например
> Этот пример может показывать что угодно.
> Например, рукожопие авторов бэкенда или админов.Если что, на "bdb index corruption" гугль вываливает пять миллионов результатов, а на hdb всё заработало в штатном режиме. Что может показывать Ваш комментарий -- опустим.
Михаил, а Вы сопоставляли?
А если сопоставляли, прошу поделиться результатами.
> Михаил, а Вы сопоставляли?Да.
> А если сопоставляли, прошу поделиться результатами.
bdb был выкинут из-за развалов индексов под нагрузкой -- в 2005 в пользу ldbm за неимением лучшего, затем использовали уже написанный к тому времени hdb backend. См. тж. http://www.openldap.org/faq/data/cache/44.html
Надо у Нетча уточнить, что было в последний раз...
Забудьте про оракловый BDB, есть ведь отличная современная альтернатива - Tokyo Cabinet и Kyoto Cabinet.
> Забудьте про оракловый BDB, есть ведь отличная современная альтернатива - Tokyo Cabinet
> и Kyoto Cabinet.вот только hdb как минимум фичастей.
а где http://vschart.com/compare/berkeley-db/vs/ ?