Балансировка доступа к хранилищу ключей и значений LSM между пользователями и проблема «зависания»

Типичные базы данных LSM «ключ-значение», такие как goleveldb, имеют непредсказуемую пропускную способность. Они могут записать большой пакет данных в L0, но затем «застрять», пока не будут завершены все так называемые «сжатия». В моем приложении доступ к базе данных распределяется между несколькими пользователями, и я хотел бы сбалансировать пропускную способность записи между ними. Но какой-то «жадный» пользователь может «повесить» базу данных для всех остальных, я бы хотел этого избежать, но не знаю простого способа сделать это. Конечно, самый простой способ — это настроить константу-ограничитель вручную, но я бы хотел, чтобы мое приложение не зависело от конкретной настройки хранилища. Кажется, что Goleveldb предоставляет статистику по уровням, которую теоретически можно использовать для какого-то сложного математического фильтра, который может получить эту константу ограничителя, однако создание такого фильтра не кажется тривиальной задачей. Но в BadgerDB, который выглядит как хорошая замена goleveldb, похоже, даже нет возможности получить эту статистику.

Как другие люди обычно решают такую ​​проблему с «зависанием» базы данных, когда требуется предсказуемая реакция?

0 ответов

Другие вопросы по тегам