Bitcask - это приложение на Erlang, которое предоставляет API для хранения и извлечения данных ключ / значение в хэш-таблицу с лог-структурой . Дизайн во многом основан на принципах файловых систем с журнальной структурой и черпает вдохновение из ряда проектов, которые включают объединение файлов журналов.
Разработчики) | Basho Technologies |
---|---|
Репозиторий | |
Написано в | Erlang |
Операционная система | Linux , BSD , Mac OS X , Solaris |
Платформа | IA-32 , x86-64 |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | документы |
Сильные стороны
Bitcask имеет ряд преимуществ благодаря формату данных на диске с однократной записью и только для добавления, а также использованию хэш-таблицы ключей в памяти для поиска:
- Низкая задержка для операций чтения и записи.
- Высокая пропускная способность, особенно при записи входящего потока случайных элементов: поскольку записываемые данные не нужно упорядочивать на диске, а структура с журнальной структурой позволяет минимизировать перемещение головки диска во время записи, эти операции обычно насыщают I / O и пропускная способность диска.
- Одиночный поиск для получения любого значения: хеш-таблица ключей Bitcask в памяти указывает непосредственно на места на диске, где находятся данные. Bitcask никогда не требует более одного поиска на диске для чтения значения, а кэширование файловой системы операционной системы может полностью избавить от необходимости поиска на диске для некоторых поисков.
- Предсказуемая производительность поиска и вставки: операции чтения и записи имеют фиксированное предсказуемое поведение. Операции записи требуют только поиска до конца текущего файла, открытого для записи, и добавления к этому файлу.
- Быстрое ограниченное восстановление после сбоя: формат диска Bitcask упрощает восстановление. Единственные элементы, которые могут быть потеряны, - это частично записанные записи в конце файла, который был открыт для записи последним. Для восстановления требуется только просмотреть последнюю или две записанные записи и проверить контрольные суммы, чтобы убедиться, что данные согласованы.
- Простое резервное копирование: формат диска Bitcask означает, что любая утилита, которая архивирует или копирует файлы в порядке блоков диска, будет правильно выполнять резервное копирование или копирование базы данных Bitcask.
Слабое место
Поскольку Bitcask постоянно хранит все ключи в памяти, в системе должно быть достаточно памяти, чтобы содержать все пространство ключей в дополнение к другим рабочим компонентам и буферам файловой системы операционной системы .