LINUX.ORG.RU

Google открывает LevelDB

 , ,


1

1

LevelDB - быстрое хранилище данных, обеспечивающее упорядоченное отображение текстовых ключей на текстовые значения.

Новинка представляет из себя библиотеку для языка C++, которой можно найти множество применений. Например, она может быть использована веб-браузером для хранения кеша недавно открытых страниц, пакетным менеджером для хранения списка установленных пакетов и их зависимостей, приложениями для хранения настроек и так далее.

LevelDB реализована с минимумом зависимостей и поэтому уже доступна на большинстве платформ. Библиотека распространяется под лицензией в стиле BSD.

Сравнение производительности с SQLite и Kyoto Cabinet

Домашняя страница проекта

>>> Подробности

★★★★★

Проверено: mono ()

Ответ на: комментарий от helios

>Извини, можно по-подробнее: как использовать хеши для хранения инфы под 10гб?

Что мешает хранить хеш на диске а работать с ним так как будто он в памяти? Ну помимо традиционного сишного управления памятью ручками

DNA_Seq ★★☆☆☆
()

И подскажите мне

Куда же все это дело, будет уместно применить?

Кто-то уже нашел этому применение? А полезное?

Lavir
()
Ответ на: комментарий от DNA_Seq

А писать как ты туда будешь? А восстановление после сбоев? А многопоточность и многопроцессность ? Оно может быть конечно «хеш», но всё не так просто как ты говоришь и люди таки «хеши» выдрачивают годами.

Reset ★★★★★
()
Ответ на: И подскажите мне от Lavir

Да, есть применение. Подобные хранилища используются во многих высоконагруженных системах. В том числе и в нашей конторе. Ну а совсем совсем подробности это уже NDA :)

Reset ★★★★★
()
Ответ на: комментарий от Reset

>А писать как ты туда будешь? А восстановление после сбоев? А многопоточность и многопроцессность ? Оно может быть конечно «хеш», но всё не так просто как ты говоришь и люди таки «хеши» выдрачивают годами.

Хеш это просто тип данных. Как он представлен в компьютере программиста в идеале волновать не должно. Хоть бэкэнд к постгресу.

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

И вот мы вернулись к тому с чего начали. То есть надо таки брать какую-то базу. А если использовать её только как хранилище ключ-значение, то почему бы сразу не взять продукт только с этим функционалом ?

Reset ★★★★★
()
Ответ на: комментарий от Reset

А разве таких продуктов мало? К тому же где указано что LevelDB обладает теми свойствами что ты перечислил? Хотя гугл всегда славился любовью к велосипедам

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от tensai_cirno

> Kyoto Cabinet же там еще

Который уделывает нафиг этот LevelDB на операциях произвольного чтения и, иногда, на записи. Более того, на записи больших значений и произвольном чтении сабж даже от SQLite отстаёт. Вот такое вот ололо. :)

anonymous
()
Ответ на: комментарий от anonymous

LevelDB очень узкоспециализирован. Kyoto очень много вещей может.

tensai_cirno ★★★★★
()
Ответ на: комментарий от hobbit

По моему дело в лицензии

> > Они изобрели Berkeley DB? (по ссылкам не ходил)

Буду третьим с этим вопросом :)

Если правильно понял на сайте оракла у Berkeley DB лицензия не BSD и не LGPL, а чистая GPL только другими словами. В итоге если гугл захочет хоть что-то закрытое выпустить в свет использующее Berkeley DB, то будет платить ораклу. По моему достаточная причина для того чтобы гуглу не использовать эту библиотеку. Собственно и не гуглу перед использованием Berkeley DB сначала стоит поинтересоваться расценками, т.к. сегодня сделаешь свободный проект и все нормально, а завтра понадобится сделать что-то закрытое но привычную библиотеку не сможешь использовать из-за цены.

http://www.oracle.com/technetwork/database/berkeleydb/downloads/licensing-098...

Dmitry-T
()
Ответ на: По моему дело в лицензии от Dmitry-T

это не GPL.

http://en.wikipedia.org/wiki/Sleepycat_License

эта лицензия означает, что исходники продукта который использует bdb должны быть открыты. других (существенных) ограничений она не накладывает.

например: питон использует bdb, его исходники открыты, лицензия - Python license. другие продукты используют питон, но не используют bdb напрямую, на них распространяется Python license, их исходники могут быть закрыты.

anonymous
()
Ответ на: комментарий от DNA_Seq

Что мешает хранить хеш на диске а работать с ним так как будто он в памяти?

Ты про mmap? Большой вопрос с синхронизацией обновлений данных, однако.

Casus ★★★★★
()
Ответ на: комментарий от yirk

Они изобрели Berkeley DB

У BDB наркоманская лицензия, какбэ

Divius ★★
()
Ответ на: комментарий от random_linux_user

Сравнил! А если у тебя база в памяти не помещается?

Divius ★★
()
Ответ на: комментарий от anonymous

> это не GPL.

Правильно, я и оговорился что «GPL только другими словами». Смысл тот же (в сравнении с LGPL и BSD).

эта лицензия означает, что исходники продукта который использует bdb должны быть открыты.


А используя библиотеку предпочтительно так же как у GTK что-то типа LGPL
http://en.wikipedia.org/wiki/LGPL
которая изначально даже называлась не GNU Lesser General Public License, а GNU Library General Public License.

например: питон использует bdb, его исходники открыты, лицензия - Python license. другие продукты используют питон, но не используют bdb напрямую, на них распространяется Python license, их исходники могут быть закрыты.


Это мнение от Oracle или ваша трактовка? Вот их пункт дословно:

" * 3. Redistributions in any form must be accompanied by information on
* how to obtain complete source code for the DB software and any
* accompanying software that uses the DB software. The source code
* must either be included in the distribution or be available for no
* more than the cost of distribution plus a nominal fee, and must be
* freely redistributable under reasonable conditions. For an
* executable file, complete source code means the source code for all
* modules it contains. It does not include source code for modules or
* files that typically accompany the major components of the operating
* system on which the executable file runs."

Вот их исключение из правил:

«The following are not redistribution:

* Building an application for use internal to your organization, deployed and managed on your company servers.
* Off-site backups or other software archival procedures.

If you have questions about whether your use of Berkeley DB, Berkeley DB Java Edition or Berkeley DB XML constitutes redistribution, please contact us at berkeleydb-info_us@oracle.com. »

Dmitry-T
()
Ответ на: комментарий от Dmitry-T

>and any accompanying software that uses the DB software

ещё раз: прямое использование - подпадает под лицензию. непрямое использование - не подпадает. иначе питоновский модуль bsddb очень ко многому обязывал бы разработчиков.

Это мнение от Oracle или ваша трактовка?

когда-то у sleepycat был FAQ разъясняющий этот момент. мнение оракла не спрашивал.

anonymous
()
Ответ на: комментарий от anonymous

> http://web.archive.org/web/200012161057/http://www.sleepycat.com/faq.html#A22

из веб-архива. это разумеется не мнение оракла.


Приятные оговорки в этом архиве:

«19. Do I have to license Berkeley DB to create an application for a single customer?

No. We suggest that you download Berkeley DB onto the customer's machine when you create the application. If you do that, you will not have redistributed Berkeley DB, and do not require a commercial license. You must make your customer aware of the restriction against redistribution, of course, so that they do not redistribute Berkeley DB, e.g., they may not install the application in thousands of sites around the world.

20. Do I have to license Berkeley DB to use it in Perl or Python?

No. The Berkeley DB license requires that software that uses Berkeley DB be freely redistributable. In the case of Perl or Python, that software is Perl or Python, and not your scripts. Any scripts you write are your property, including scripts that make use of Berkeley DB. None of the Perl, Python or Berkeley DB licenses place any restrictions on what you may do with them.»

У оракла FAQ другое :)

Кстати странное отношение sleepycat к языкам Perl и Python, потому что с юридической точки зрения это банальная лазейка или они надеялись что скрипты это всегда открытый код без компиляции и обфускации? Еще вариант, если на C/C++ написать открытую библиотеку использующую Berkeley DB и с ее помощью без статической линковки пользоваться Berkeley DB, соответственно не распространяя их со своей программой, то это тоже разрешалось бы? За много лет такой вопрос должен был попасть не один раз в FAQ, но его там нет.

Dmitry-T
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.