Voldemort — это распределенное хранилище данных , разработанное как хранилище «ключ-значение», используемое LinkedIn для высокомасштабируемого хранения. [1] Оно названо в честь вымышленного злодея из Гарри Поттера Лорда Волан-де-Морта .
Voldemort не пытается удовлетворить произвольные отношения и свойства ACID , а скорее является большой, распределенной, постоянной хеш-таблицей. [2] Исследование 2012 года, сравнивающее системы для хранения данных управления производительностью приложений, показало, что Voldemort, Apache Cassandra и HBase в большинстве случаев предлагают линейную масштабируемость, причем Voldemort имеет самую низкую задержку, а Cassandra — самую высокую пропускную способность. [3]
Выражаясь языком теоремы Эрика Брюэра CAP , Волан-де-Морт — это система типа AP.
Создатель и основной корпоративный спонсор Волдеморта, LinkedIn, перенес все свои системы с Волдеморта примерно в августе 2018 года, и по состоянию на октябрь 2018 года у него не было нового спонсора [обновлять]. [4] В 2022 году LinkedIn анонсировал проект Венеция в качестве открытой замены [5]
Voldemort использует кэширование в памяти для устранения отдельного уровня кэширования. Он имеет слой хранения, который можно эмулировать. Voldemort считывает и записывает масштабирование горизонтально . API принимает решения о репликации и размещении данных и поддерживает широкий спектр стратегий, специфичных для приложений. [2] [6]
Распределенное хранилище данных Voldemort поддерживает стратегии подключаемого размещения для распределения по центрам обработки данных. Данные автоматически реплицируются между серверами. Данные разделены, что означает, что один сервер содержит только часть всех данных. Каждый узел данных независим, чтобы избежать центральной точки отказа . Подключаемая сериализация позволяет использовать расширенные ключи и значения, включая списки и кортежи с именованными полями, а также интеграцию с распространенными фреймворками сериализации, такими как Avro , Java Serialization, Protocol Buffers и Thrift . Сбои сервера обрабатываются прозрачно. Элементы данных версионируются, что обеспечивает максимальную целостность данных. [1]