RocksDB: предварительное исследование высокопроизводительного механизма хранения ключей и значений
RocksDB: предварительное исследование высокопроизводительного механизма хранения ключей и значений
1. Основные возможности RocksDB
высокая производительность:RocksDBДля высокой скоростихранилище Устройства оптимизированы,Он использует ряд технических средств,Например, многопоточное компактное письмо、Сжатие данные и отложенное удаление и т. д. для достижения высокого производительностьоперации чтения и записи。
Постоянное хранилище:какключевое значениехранилищесистема,RocksDB предоставляет гарантии сохранности данных. Даже после существования системы сбой или перезагрузка,Хранилищесуществовать данные в RocksDB все равно можно безопасно восстановить.
Настраиваемость:RocksDBПредоставляет богатые возможности конфигурации.,Разрешить разработчикам выполнять настройку в соответствии с конкретными сценариями приложений и характеристиками рабочей нагрузки.,Для достижения наилучшей производительности.
Поддерживает различное оборудование:RocksDBМожетсуществовать Работает на нескольких аппаратных платформах,Включая, помимо прочего, SSD, HDD, NVMe и т. д. Он также способен использовать многоядерные процессоры для параллельной обработки данных.,дальнейшее улучшение производительности.
совместимость:RocksDBПоддержка нескольких операцийсистемаиязык программирования,Это позволяет легко интегрировать его в существующие системы.
2. Внутренняя структура RocksDB.
Внутреннюю структуру RocksDB можно разделить на несколько ключевых компонентов:
MemTable:Это в памятиданныеструктура,Используется для кэширования последних операций записи. Когда MemTable достигает определенного размера,Его содержимое будет сброшено в SSTable на диске.
SSTable(Sorted String Table):Это настойчивый、отсортировано по ключуданныеструктура,хранилищесуществовать на диске. Каждая таблица SSTable содержит серию пар ключ-значение.,Эти пары ключ-значение расположены в порядке ключей.
Write-Ahead Logging(WAL):Чтобы обеспечитьданныедолговечность и устойчивость,RocksDBсуществованные перед записью в MemTable,Операция записи сначала будет записана в WAL. так,Сбой системы происходит даже несмотря на то, что существующиеMemTableданные не сбрасываются на диск.,Также укажите данные восстановления WAL.
Compaction:через некоторое время,На диске может быть несколько версий SSTable. Процесс сжатия объединит эти таблицы SSTables.,Удалить данные с истекшим сроком действия,И реорганизуйте данные, чтобы уменьшить использование пространства и повысить эффективность чтения.
Bloom Filter:Чтобы улучшить производительность чтения,RocksDBиспользовалBloom Фильтр, чтобы быстро определить, может ли ключ существовать в SSTable. Это позволяет избежать ненужных операций ввода-вывода с диска.
3. Сценарии применения RocksDB
Благодаря своей высокой производительности и надежности RocksDB широко используется в самых разных сценариях:
система баз данных:RocksDBМожеткак Первый этажхранилищедвигатель,Поддерживает реляционную библиотеку данных или нереляционную систему баз данных.
распределенная система:существоватьраспределенная система, RocksDB может каклокальное хранилище,Обеспечьте быстрый доступ к данным,В то же время в сочетании с сервисами распределенной координации (такими как ZooKeeper),Для достижения согласованности и доступности данных.
обработка больших данных:существовать Справляйтесь с большими масштабамиданные Время сбора,RocksDBВысокая пропускная способность и низкая задержка делают его идеальным выбором.。это МожеткакHadoop、Sparkждатьобработка больших серверная часть хранилища для инфраструктуры данных.
Аналитика и потоковая передача в реальном времени:Для приложений, требующих ответа в реальном времени,нравиться Аналитика и потоковая передача в реальном временисистема,RocksDB может обеспечить быстрое чтение и запись данных.,Соответствуйте требованиям реального времени.
Применение RocksDB в TiDB
существоватьTiDBсередина(TiDBявляется распределеннымSQLданные Библиотека,Его движок хранилища TiKV представляет собой распределенный движок хранилища с ключом и значением),TiKViспользовалRocksDB как лежащий в его основе движок хранилища.,Используйте хранилище значений ключа и функции чтения и записи, предоставляемые RocksDB.,А архитектура LSM-дерева обеспечивает постоянство и эффективное чтение и запись данных.
Применение RocksDB позволяет TiKV эффективно работать в многопроцессорных сценариях, полностью использовать быстрое хранилище, такое как SSD, и поддерживать эластичную архитектуру расширения. Эти функции позволяют TiDB поддерживать высокую производительность и масштабируемость при обработке крупномасштабных данных.
Применение RocksDB во Flink
Уровень хранения и извлечения данных Apache Flink использует RocksDB в качестве серверной части состояния по умолчанию. Эффективность, надежность и гибкость RocksDB делают его идеальным для управления состоянием в Flink.
В Flink управление состоянием является основной функцией, особенно при работе с крупномасштабными потоками данных. Flink нужен способ хранения и извлечения состояния своего приложения, чтобы оно могло восстановить состояние и продолжить обработку данных при необходимости. RocksDB предоставляет такую возможность и благодаря своим конструктивным особенностям хорошо подходит в качестве серверной части состояния для Flink.
Вот некоторые ключевые преимущества RocksDB как государственного бэкэнда для Flink:
локальное хранилище:RocksDB Разместить статус хранилища данныхсуществовать на локальном диске,а не в распределенной файловой системе. Это значительно снижает задержку доступа к состоянию.,Потому что доступ к локальному диску обычно намного быстрее, чем доступ к сети.
Эффективное письмо:RocksDB использовал Write-Ahead Ведение журнала (WAL) и в памяти MemTable для оптимизации операций записи. ВАЛ Гарантированная долговечность данных, при этом MemTable Это обеспечивает высокую производительность записи.
Сжатие данных:RocksDB Поддерживает несколько алгоритмов сжатия, таких как Snappy、Zlib ждать。Эти алгоритмы сжатия Может Уменьшите использование дискового пространства,и улучшить производительность чтения,Потому что нужно меньше данных загружать с диска в память.
Многоверсионный параллельный контроль(MVCC):RocksDB проходить MVCC Поддерживает одновременный доступ к библиотеке данных нескольких устройств чтения и записи, не мешая друг другу. Это существует Flink важен в среде параллельной обработки, поскольку позволяет нескольким задачам одновременно получать доступ и обновлять состояние.
Восстановление:потому что RocksDB Сохраняйте данные состояния на локальном диске, чтобы даже в случае сбоя существующего узла Flink также может восстанавливать состояние из резервных копий данных других узлов.,И продолжаем разбираться с данными.
Масштабируемость:RocksDB предназначен для легкого масштабирования до нескольких дисков и нескольких узлов. Это делает Flink Способность поддерживать высокий уровень при обработке крупномасштабных потоков данных. производительностьи Масштабируемость。
Таким образом, RocksDB, как серверная часть состояния Flink, обеспечивает эффективный, надежный и масштабируемый способ управления состоянием приложения. Это позволяет Flink поддерживать высокую производительность при обработке крупномасштабных потоков данных и обеспечивает высокую отказоустойчивость и возможности восстановления.
4. Резюме и перспективы
RocksDB как высокопроизводительный механизм хранения данных типа «ключ-значение» играет все более важную роль в области больших данных и распределенных систем. Гибкие возможности конфигурации и оптимизированная структура хранения позволяют адаптировать его к различным сценариям применения. Учитывая постоянное развитие аппаратных технологий и постоянный рост масштаба данных, мы с нетерпением ожидаем, что RocksDB продолжит развиваться в будущем, чтобы обеспечить мощную и надежную поддержку хранения для большего количества приложений.
Навыки обновляются благодаря обмену ими, и каждый раз, когда я получаю новые знания, мое сердце переполняется радостью.
Искренне приглашаем вас подписаться на публичный аккаунт 『 код тридцать пять 』 , для получения дополнительной технической информации.