<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Компания Google открыла исходные тексты БД LevelDB]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=15400</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=15400&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Компания Google открыла исходные тексты БД LevelDB».]]></description>
		<lastBuildDate>Thu, 28 Jul 2011 09:34:29 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Компания Google открыла исходные тексты БД LevelDB]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=198462#p198462</link>
			<description><![CDATA[<p>Компания Google объявила о переводе <a href="http://code.google.com/p/leveldb/">LevelDB</a>, высокопроизводительной системы для хранения данных в формате ключ/значение, в разряд открытых проектов. Хранилище LevelDB написано на языке С++ и подключается к приложениям в виде разделяемой библиотеки (как SQLite и BerkeleyDB), обеспечивая возможность хранения упорядоченных наборов данных, в которых строковые ключи сопоставлены со строковыми значениями. Код LevelDB <a href="http://code.google.com/p/leveldb/source/browse/#svn%2Ftrunk">открыт</a> под лицензией BSD.</p><p>Отдельно подчеркивается поддержка эффективного упорядоченного хранения, т.е. связки ключ/значение хранятся в отсортированном виде. Среди примеров возможных применений LevelDB, упоминается использование библиотеки в web-браузере, для хранения кэша последних открытых страниц, или использование в пакетном менеджере для хранения списка установленных пакетов и связанных с ними зависимостей. Библиотека спроектирована с учетом возможности построения на её основе более высокоуровневых систем хранения. В частности, LevelDB планируется использовать в будущей версии браузера Chrome для организации работы IndexedDB HTML5 API. Более того, LevelDB уже поддерживается в качестве низкоуровневого хранилища в таких закрытых проектах Google, как Bigtable (в формате LevelDB хранятся конечные записи) и распределенной БД Riak (LevelDB может использоваться как хранилище для конечных узлов).</p><p>Положительной чертой LevelDB является минимальное число зависимостей, что позволяет легко портировать библиотеку для разнообразных систем. В настоящий момент LevelDB уже работает в Unix-подобных ОС, Mac OS X, Windows и Android. Отдельно отмечается, что LevelDB является достаточно специализированным решением, например, LevelDB не поддерживает выполнение SQL-запросов и подключение индексов; не поддерживается одновременный доступ к БД нескольких процессов - в заданный момент времени только один процесс может работать с файлом базы (возможна работа в многопоточных программах); отсутствует встроенное решение для организации клиент-серверного доступа, работа сервера может быть организована в виде приложения-надстройки.</p><p>Основные возможности LevelDB:</p><ul><li><p>В качестве ключей и привязанных к ним значений может использоваться произвольный байтовый массив;</p></li><li><p>Данные хранятся отсортированными по связанному с ними ключу;</p></li><li><p>Пользователь может переопределить метод сортировки, указав собственную функцию сравнения;</p></li><li><p>Управление данными производится через базовые операторы Put(key,value), Get(key) и Delete(key);</p></li><li><p>В рамках одной атомарной операции в базу может быть внесено сразу несколько изменений;</p></li><li><p>Поддерживается создание снапшотов, представляющих собой неизменный срез состояния БД на текущий момент времени. Со снапшотом можно работать в штатном режиме, но в нём не будут отражаться изменения базы, производимые после его создания;</p></li><li><p>Над данными можно использовать прямые и обратные итерации (переходить к следующему или предыдущему элементу отсортированного списка);</p></li><li><p>Данные хранятся в сжатом виде, для сжатия используется библиотека <a href="http://www.opennet.ru/opennews/art.shtml?num=30003">Snappy</a>;</p></li><li><p>Все внешние операции на уровне операционной системы, такие как работа с файлами, производится через виртуальный программный интерфейс, который позволяет пользователю изменить поведение библиотеки при взаимодействии с операционной системой.</p></li></ul><p>Библиотека достаточно хорошо оптимизирована и демонстрирует высокую производительность при различных видах использования. Разработчики Google провели сравнение производительности LevelDB c такими системами, как SQLite, Kyoto Cabinet и InnoDB. В результате тестирования было выявлено, что существенное преимущество LevelDB наблюдается при пакетном обновлении данных (изменение сразу порции записей), затрагивающем большое число ключей, распределенных по всему хранилищу.</p><p>Результаты тестирования производительности базы LevelDB (ключ - 16 байт, значение - 100 байт, изначальное число записей - 1 миллион, итоговый размер базы с учетом сжатия - 62 Мб):</p><ul><li><p>Последовательная запись: 1.765 micros/op; 62.7 MB/s;</p></li><li><p>Запись со сбросом изменений на диск (выполнение вызова fsync) после каждой операции: 268.409 micros/op; 0.4 MB/s (10000 операций в секунду);</p></li><li><p>Записи в случайном порядке: 2.460 micros/op; 45.0 MB/s;</p></li><li><p>Перезапись существующих ключей: 2.380 micros/op; 46.5 MB/s;</p></li><li><p>Случайное чтение в режиме холодного старта: 60 тыс операций в секунду;</p></li><li><p>Последовательное чтение в режиме холодного старта: 232.3 MB/s;</p></li><li><p>Последовательное чтение в обратном порядке в режиме холодного старта: 152.9 MB/s;</p></li><li><p>Случайное чтение после проведения большого числа случайных записей: 85 тыс операций в секунду;</p></li><li><p>Случайное повторяющиеся чтение: 100 тыс операций в секунду;</p></li><li><p>Случайное повторяющиеся чтение с кэшем в который вмещаются все распакованные данные: 190 тыс операций в секунду.</p></li></ul><p>Источник — <a href="http://www.opennet.ru/opennews/art.shtml?num=31325">http://www.opennet.ru/opennews/art.shtml?num=31325</a><br />Главная ссылка к новости — <a href="http://google-opensource.blogspot.com/2011/07/leveldb-fast-persistent-key-value-store.html">http://google-opensource.blogspot.com/2 … store.html</a></p>]]></description>
			<author><![CDATA[null@example.com (XRevan86)]]></author>
			<pubDate>Thu, 28 Jul 2011 09:34:29 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=198462#p198462</guid>
		</item>
	</channel>
</rss>
