The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

28.07.2011 10:33  Компания Google открыла исходные тексты БД LevelDB

Компания Google объявила о переводе LevelDB, высокопроизводительной системы для хранения данных в формате ключ/значение, в разряд открытых проектов. Хранилище LevelDB написано на языке С++ и подключается к приложениям в виде разделяемой библиотеки (как SQLite и BerkeleyDB), обеспечивая возможность хранения упорядоченных наборов данных, в которых строковые ключи сопоставлены со строковыми значениями. Код LevelDB открыт под лицензией BSD.

Отдельно подчеркивается поддержка эффективного упорядоченного хранения, т.е. связки ключ/значение хранятся в отсортированном виде. Среди примеров возможных применений LevelDB, упоминается использование библиотеки в web-браузере, для хранения кэша последних открытых страниц, или использование в пакетном менеджере для хранения списка установленных пакетов и связанных с ними зависимостей. Библиотека спроектирована с учетом возможности построения на её основе более высокоуровневых систем хранения. В частности, LevelDB планируется использовать в будущей версии браузера Chrome для организации работы IndexedDB HTML5 API. Более того, LevelDB уже поддерживается в качестве низкоуровневого хранилища в таких закрытых проектах Google, как Bigtable (в формате LevelDB хранятся конечные записи) и распределенной БД Riak (LevelDB может использоваться как хранилище для конечных узлов).

Положительной чертой LevelDB является минимальное число зависимостей, что позволяет легко портировать библиотеку для разнообразных систем. В настоящий момент LevelDB уже работает в Unix-подобных ОС, Mac OS X, Windows и Android. Отдельно отмечается, что LevelDB является достаточно специализированным решением, например, LevelDB не поддерживает выполнение SQL-запросов и подключение индексов; не поддерживается одновременный доступ к БД нескольких процессов - в заданный момент времени только один процесс может работать с файлом базы (возможна работа в многопоточных программах); отсутствует встроенное решение для организации клиент-серверного доступа, работа сервера может быть организована в виде приложения-надстройки.

Основные возможности LevelDB:

  • В качестве ключей и привязанных к ним значений может использоваться произвольный байтовый массив;
  • Данные хранятся отсортированными по связанному с ними ключу;
  • Пользователь может переопределить метод сортировки, указав собственную функцию сравнения;
  • Управление данными производится через базовые операторы Put(key,value), Get(key) и Delete(key);
  • В рамках одной атомарной операции в базу может быть внесено сразу несколько изменений;
  • Поддерживается создание снапшотов, представляющих собой неизменный срез состояния БД на текущий момент времени. Со снапшотом можно работать в штатном режиме, но в нём не будут отражаться изменения базы, производимые после его создания;
  • Над данными можно использовать прямые и обратные итерации (переходить к следующему или предыдущему элементу отсортированного списка);
  • Данные хранятся в сжатом виде, для сжатия используется библиотека Snappy;
  • Все внешние операции на уровне операционной системы, такие как работа с файлами, производится через виртуальный программный интерфейс, который позволяет пользователю изменить поведение библиотеки при взаимодействии с операционной системой.

Библиотека достаточно хорошо оптимизирована и демонстрирует высокую производительность при различных видах использования. Разработчики Google провели сравнение производительности LevelDB c такими системами, как SQLite, Kyoto Cabinet и InnoDB. В результате тестирования было выявлено, что существенное преимущество LevelDB наблюдается при пакетном обновлении данных (изменение сразу порции записей), затрагивающем большое число ключей, распределенных по всему хранилищу.

Результаты тестирования производительности базы LevelDB (ключ - 16 байт, значение - 100 байт, изначальное число записей - 1 миллион, итоговый размер базы с учетом сжатия - 62 Мб):

  • Последовательная запись: 1.765 micros/op; 62.7 MB/s;
  • Запись со сбросом изменений на диск (выполнение вызова fsync) после каждой операции: 268.409 micros/op; 0.4 MB/s (10000 операций в секунду);
  • Записи в случайном порядке: 2.460 micros/op; 45.0 MB/s;
  • Перезапись существующих ключей: 2.380 micros/op; 46.5 MB/s;
  • Случайное чтение в режиме холодного старта: 60 тыс операций в секунду;
  • Последовательное чтение в режиме холодного старта: 232.3 MB/s;
  • Последовательное чтение в обратном порядке в режиме холодного старта: 152.9 MB/s;
  • Случайное чтение после проведения большого числа случайных записей: 85 тыс операций в секунду;
  • Случайное повторяющиеся чтение: 100 тыс операций в секунду;
  • Случайное повторяющиеся чтение с кэшем в который вмещаются все распакованные данные: 190 тыс операций в секунду.


  1. Главная ссылка к новости (http://google-opensource.blogs...)
  2. OpenNews: Компания Google открыла код Snappy, библиотеки для сжатия данных
Лицензия: CC-BY
Тип: Программы
Ключевые слова: LevelDB, database, nosql
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, тоже Аноним, 11:38, 28/07/2011 [ответить] [смотреть все]
  • +11 +/
    Похоже, в ChromeOS таки будет реестр.
     
     
  • 2.3, klalafuda, 11:49, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]
  • +2 +/
    Ну в ff вообще sqlite встроен - и ничего и ничего и ничего с ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.4, anon8, 11:55, 28/07/2011 [^] [ответить] [смотреть все]  
  • +5 +/
    ...ничего хорошего
     
     
  • 4.14, Аноним, 13:10, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Да вообще-то лучше чем тот ужас который до него был Никогда не видели RDF-портя... весь текст скрыт [показать]
     
     
  • 5.46, Аноним, 19:30, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Да и с sqlite при превышении 15к записей в истории firefox начинает тупить Но м... весь текст скрыт [показать]
     
  • 3.11, Аноним, 13:00, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    SQLite нынче встроен уже дохрена куда, начиная от XnView и заканчивая Андроидом ... весь текст скрыт [показать]
     
  • 2.9, gkv311, 12:42, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ориентация Chrome на множество процессов как-то не стыкуется с ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.15, uhbif19, 13:12, 28/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    В чем проблема ?

    Выделенный процесс "chrome-leveldb",

     
     
  • 4.16, uhbif19, 13:13, 28/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    а все остальные с ним и разговаривают ... весь текст скрыт [показать]
     
     
  • 5.21, тоже Аноним, 13:35, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Не говоря уже о том, что в реестр гораздо реже пишут, чем читают Во всяком случ... весь текст скрыт [показать]
     
  • 5.24, gkv311, 13:38, 28/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    На своём уникальном языке, ибо SQL им не нужен По-моему это огород в огороде ... весь текст скрыт [показать]
     
     
  • 6.51, Аноном, 22:08, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    К сожалению, W3C не приняли SQL-реализацию базы, а прията будет, судя по всему, ... весь текст скрыт [показать]
     
     
  • 7.55, anonymous, 22:18, 28/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    s/К сожалению/К счастью/

    obvious fix.

     
  • 6.59, all_glory_to_the_hypnotoad, 22:41, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Разговаривают на своём API, а не языке. Для KV хранилищь большего не нужно
     
  • 1.2, Аноним, 11:40, 28/07/2011 [ответить] [смотреть все]  
  • +4 +/
    Что-то я не понял, а чем гугла не устроил Tokyo Cabinet? Not invented here?
     
     
  • 2.43, a, 17:23, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Если бы вы занимались профессиональными разработками, то знали бы, что свой код,... весь текст скрыт [показать] [показать ветку]
     
  • 1.5, gegMOPO4, 11:56, 28/07/2011 [ответить] [смотреть все]  
  • +3 +/
    Чем оно лучше Berkeley DB? Совместимо ли API с Berkeley DB (или существует ли адаптер)?

    Кто додумался сравнивать продукт типа Berkeley DB (ключ/значение) с SQLite?

     
     
  • 2.6, Аноним, 12:02, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Вообще, над bdb помнится сделали какой-то урезанный вариант sql. Может поэтому?
     
     
  • 3.7, gegMOPO4, 12:23, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Хотите сказать, что тестировали работу LevelDB с SQL? ;)
     
     
  • 4.13, Аноним, 13:07, 28/07/2011 [^] [ответить] [смотреть все]  
  • +2 +/
    Нет, не хочу сказать А он это умеет К bdb вроде как урезанный вариант скуля пр... весь текст скрыт [показать]
     
     
  • 5.26, gegMOPO4, 13:45, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Значит они тестировали совсем не то, для чего эти БД предназначены В забивании ... весь текст скрыт [показать]
     
  • 3.38, Veter, 16:21, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Отстали вы от жизни Оракл давно уже вовсю продвигает BerkeleyDB как сторадж с... весь текст скрыт [показать]
     
  • 2.10, anon8, 12:47, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Да, не хватает сравнения с постгресом и ораклом.
     
     
  • 3.17, Аноним, 13:14, 28/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    А постгреса и оракла можно влинковать в программу как статическую либу-движок ра... весь текст скрыт [показать]
     
     
  • 4.25, sanDro, 13:39, 28/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    А ничего что SQLite и InnoDB это реляционные движки Которые медленние по опреде... весь текст скрыт [показать]
     
     
  • 5.36, anonymous, 15:36, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    ничего сложилась практика применять SQLite там, где достаточно простых key-valu... весь текст скрыт [показать]
     
     
  • 6.37, sanDro, 15:46, 28/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    InnoDB тоже применяют Там где достаточно key-value сложилась практика применять... весь текст скрыт [показать]
     
     
  • 7.39, anonymous, 16:29, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    на картинке вижу киото и скулит возможно, стоило бы добавить bdb, но кому эта о... весь текст скрыт [показать]
     
     
  • 8.40, sanDro, 16:41, 28/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    Эта окаменелость вовсю используется в продакшене, в проектах которым не пару л... весь текст скрыт [показать]
     
     
  • 9.42, anonymous, 17:20, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    > в проектах которым не пару лет от рождения

    вот именно.

     
     
  • 10.61, Аноним, 03:47, 29/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Даже до тебя дошло что bdb порвёт их как Тузег грелку И при этом не имеет ог... весь текст скрыт [показать]
     
     
  • 11.62, anonymous, 04:21, 29/07/2011 [^] [ответить] [смотреть все]  
  • +/
    нет, даже до меня дошло, что legacy 8212 это страшно ... весь текст скрыт [показать]
     
  • 5.52, Аноном, 22:11, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Чего бы они были медленными п определению Они вылизывались десятки лет, и как п... весь текст скрыт [показать]
     
  • 4.47, anon8, 19:41, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Мда, видимо придется в таких случаях тег сарказм Сказано это было к тому, что... весь текст скрыт [показать]
     
  • 2.12, 1, 13:02, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Oracle же !
     
     
  • 3.22, gegMOPO4, 13:35, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Oracle Berkeley DB?

    Да, это веская причина.

     
  • 2.18, uhbif19, 13:14, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Ну видимо, не монструозно ... весь текст скрыт [показать] [показать ветку]
     
  • 2.23, Аноним, 13:38, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Тем, что Berkley DB принадлежит Oracle у, а LevelDB нет Никто не хочет ввязыва... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.27, gegMOPO4, 13:49, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Патентные разборки не связаны с происхождением кода Придолбаться могут и к сове... весь текст скрыт [показать]
     
     
  • 4.33, Аноним, 14:51, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    А если разработка не независима, то придолбаться значительно легче И для суда ... весь текст скрыт [показать]
     
  • 1.19, uhbif19, 13:17, 28/07/2011 [ответить] [смотреть все]  
  • +/
    Говорили вот, что RedisDB какой-то нереально быстрый.

    Как я понял, такая производительность - обычное дело для key-value хранилищ "/

     
     
  • 2.20, Аноним, 13:33, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Редис быстрый так как вся база в оперативной памяти При падении системы потеря ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.29, Crazy Alex, 13:58, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Это у кого ж пол-базы в залоченном состоянии получается Ну ладно SQLite лочит в... весь текст скрыт [показать]
     
     
  • 4.31, uhbif19, 14:17, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Ошибаетесь ... весь текст скрыт [показать]
     
     
  • 5.56, Аноном, 22:20, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Я с ним в продакшне работаю, вообще-то На 64-битной системе с разумными размера... весь текст скрыт [показать]
     
     
  • 6.66, uhbif19, 23:39, 31/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Извиняюсь, возможно вы и правы У Redis, как заявляют сами разработчики, проблем... весь текст скрыт [показать]
     
  • 3.32, uhbif19, 14:20, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    У Mongo атомарности нет вообще, у Couch ЕМНИП тоже Там есть Safe-mode Правда в... весь текст скрыт [показать]
     
     
  • 4.34, Аноним, 15:00, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Изменяет Атомарность там на уровне записи единичного документа http guide co... весь текст скрыт [показать]
     
  • 2.28, Crazy Alex, 13:53, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Redis - он не совсем key-value, вообще-то А так - ну, собственно, выборка по пе... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.30, uhbif19, 14:16, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Достали уже 1 Redis key-value, просто со структурами данных 2 Неправильно сч... весь текст скрыт [показать]
     
     
  • 4.41, Аноним, 16:53, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Структуры данных индексировать гораздо сложнее, чем текстовые строки Следовател... весь текст скрыт [показать]
     
     
  • 5.45, Аноним, 19:04, 28/07/2011 [^] [ответить] [смотреть все]  
  • +/
    А кстати, что насчет Exadata 2 Это если говорить о транзакциях Кто там кому сл... весь текст скрыт [показать]
     
  • 5.64, uhbif19, 23:25, 31/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Массивы и словари обычные И о какой индексации, вообще идет речь Redis - это ... весь текст скрыт [показать]
     
     
  • 6.65, uhbif19, 23:28, 31/07/2011 [^] [ответить] [смотреть все]  
  • +/
    крайне для key-value DB сложные операции над данными И очень хорошая доку... весь текст скрыт [показать]
     
  • 4.54, Аноном, 22:15, 28/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    Покажите мне в MyISAM транзакции Что до редиса - штуковину, умеющую делать inte... весь текст скрыт [показать]
     
     ....нить скрыта, показать (14)

  • 1.35, anonymous, 15:34, 28/07/2011 [ответить] [смотреть все]  
  • +/
    на random reads sosnooley. откуда вывод: подходит в качестве архива, не подходит в качестве базы, где данные постоянно нужны. не буду кабинет на неё менять.
     
  • 1.44, evgeny_t, 18:59, 28/07/2011 [ответить] [смотреть все]  
  • +/
    #Случайное чтение в режиме холодного старта: 60 тыс операций в секунду;

    удивляют эти тесты,
    просто весь 64 мб файл закеширован в памяти.

    давайте на базе 1000 терабайт потестим ? и общей памятью 100 гб

     
     
  • 2.50, Аноним, 21:56, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    У тебя есть такая СХД и генераторные скрипты для правдоподобных данных? Давай.
     
  • 1.48, pro100master, 21:19, 28/07/2011 [ответить] [смотреть все]  
  • +/
    сразу видна жесткая специализация под элементарные вещи. Такое ощущение, что разрабы таких вот noSQL только и занимаются, что тестируют быстродействие.
    Попробовали бы на немного более серьёзных вещах, чем
    for x in 0..1000:
    db.put('key',i)

    Почему нельзя сделать группы (метки, теги - как угодно). Ведь если есть:
    a1=>value1
    a2=>value2

    часто необходимо выбрать/удалить/обновить ключи вида a* сразу. Не говоря уже об таких примитивах, как поиск. Это не noSQL, а какой-то usefulDB получается.

     
     
  • 2.57, Аноном, 22:21, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    угу, мне тоже интересно, кто бы по префиксам мог выбирать эффективно. Реализаций же масса возможна, по идее.
     
  • 1.49, szh, 21:44, 28/07/2011 [ответить] [смотреть все]  
  • +/
    http://maxpert.tumblr.com/post/3329352663/the-nosql-dogma


        100,000 writes took 29.6542 seconds ( ~ 3372 writes / second )
        100,000 reads in order took 18.4197 seconds ( ~ 5429 reads / second )
        100,000 reads in random order 17.0343 seconds ( ~ 5870 reads / second ) (Socking!)

    CREATE TABLE 'foo'.'kv' (
        'key' CHAR(255) NOT NULL,
        'val' TEXT NOT NULL,
        PRIMARY KEY ('key')
    ) ENGINE = MyISAM;

     
     
  • 2.58, Аноном, 22:27, 28/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Именно
     
  • 2.63, Аноним, 10:09, 31/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Смешные результаты Запись константной строки Очень реалистичная задача Польз... весь текст скрыт [показать] [показать ветку]
     
  • 1.60, Телегин Дмитрий, 01:44, 29/07/2011 [ответить] [смотреть все]  
  • +/
    > Чем оно лучше Berkeley DB?

    Если не ошибаюсь лицензией. У Berkeley DB не LGPL как того хотелось бы для библиотеки, а GPL только другими словами. В итоге если гугл захочет хоть что-то закрытое выпустить в свет использующее Berkeley DB, то будет платить ораклу. По моему достаточная причина для того чтобы гуглу не использовать эту библиотеку. Собственно и не гуглу перед использованием Berkeley DB сначала стоит поинтересоваться расценками, т.к. сегодня сделаешь свободный проект и все нормально, а завтра понадобится сделать что-то закрытое но привычную библиотеку не сможешь использовать из-за цены.
    http://www.oracle.com/technetwork/database/berkeleydb/downloads/licensing-098

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor TopList