Показать HN: ToplingDB — постоянное хранилище ключей и значений для внешнего хранилища=news.ycombinator.com=

Показать HN: ToplingDB — постоянное хранилище ключей и значений для внешнего хранилища ( github.com/topling ) Как создатель TerarkDB (приобретенного ByteDance в 2019 году), я разрабатывал ToplingDB в последние годы.

ToplingDB является ответвлением RocksDB, в котором мы заменили почти все компоненты более эффективными альтернативами (db_bench показывает, что ToplingDB примерно в 8 раз быстрее, чем RocksDB):

* MemTable: SkipList заменен на CSPP (Crash Safe Parallel Patricia trie), который в 8 раз быстрее.

* SST: BlockBasedTable заменен на ToplingZipTable, реализованный с помощью алгоритма сжатия с возможностью поиска, он очень маленький и быстрый, обычно менее 1 мкс на поиск:

* Ключи/индексы сжимаются с помощью NestLoudsTrie (многослойное вложенное сжатое дерево LOUDS). * Значения в SST сжимаются вместе с лучшим коэффициентом сжатия, чем zstd, и могут распаковываться по одному значению со скоростью 1 ГБ/с. * BlockCache больше не нужен, двойное кэширование (BlockCache и PageCache) исключено Другие горячие точки также улучшены:

* Сброс MemTable в L0 исключен, что значительно снижает объем записи и очень удобно для больших (ГБ) MemTable

* MemTable служит индексом ключа для «позиции значения в журнале WAL» * Поскольку содержимое файла WAL почти всегда находится в кэше страниц, к содержимому значения можно эффективно получить доступ с помощью mmap * Когда происходит очистка, MemTable выводится как SST, а WAL обрабатывается как файл BLOB-объектов * CSPP MemTable использует целочисленный индекс вместо физических указателей, поэтому формат в памяти точно такой же, как и в файле * Кэш префикса для поиска кандидатов в SST и кэш префикса для сканирования итераторами

* Кэширование префикса ключа фиксированной длины в массив, двоичный поиск в нем как в массиве uint * Распределенное уплотнение (превосходная замена удаленному уплотнению RocksDB)

* Изящная поддержка MergeOperator, CompactionFilter, PropertiesCollector… * Значительно сокращены усилия по разработке сразу после установки * Очень простое совместное использование сервиса уплотнения на отдельных экземплярах для многих узлов БД Полезная бонусная функция:

* Конфигурация через json/yaml: можно настроить почти все функции

* Опционально встроенный WebView: отображение структур базы данных в веб-браузере, обновление страниц, как анимация

* Онлайн-обновление конфигураций БД по http

Интеграция с MySQL. ToplingDB интегрирована в MySQL от MyTopling, которая является ответвлением MyRocks и имеет значительные улучшения, такие как улучшения ToplingDB в RocksDB:

* WBWI(WriteBatchWithIndex): как и MemTable, SkipList заменен на CSPP, в 20 раз быстрее (ускорение больше, чем у MemTable).

* LockManager и LockTracker: в 10 раз быстрее

* Кодирование и декодирование: в 5 раз быстрее

* Другие ….

MyRocks имеет множество недостатков по сравнению с InnoDB, в то время как MyTopling превосходит InnoDB практически по всем параметрам, за исключением различий в функциях.

Мы создали ~100 PR для RocksDB, из которых были приняты ~40. Наши PR в основном представляют собой «небольшие» изменения, поскольку большие изменения вряд ли будут приняты.

ToplingDB был развернут во многих производственных средах.

Приветствую всех, кто использует ToplingDB и MyTopling, и обсуждайте на https://github.com/topling/toplingdb/discussions

ChocolateGod 17 минут назад [–]
Я не понимаю, что делает это облако родным?

отвечать


Рассмотрите возможность подачи заявки на набор в YC на осень 2025 года! Заявки принимаются до 4 августа

Source: news.ycombinator.com

Leave a Reply

Your email address will not be published. Required fields are marked *