Выбор системы базы данных для приложения зависит от различных факторов, поэтому не так просто ответить на ваш вопрос.
Но, учитывая предоставленные вами подробности высокого уровня, KDB определенно выглядит как один из приемлемых вариантов.
KDB - это база данных, ориентированная на столбцы временных рядов,Судя по вашим данным, ваше приложение предъявляет те же требования.
Ваш запрос в основном нацелен на 2 столбца (идентификатор пользователя и метку времени), и один из этих столбцов имеет тип данных времени.KDB имеет прямую поддержку типов данных дата / время и предназначена для обеспечения более высокой производительности таких данных.
Как правило, ориентированная на столбцы база данных будет работать лучше, чем ориентированная на строки база данных для этих случаев, так как она читает меньше данных и может управлятьи запрашивать данные более эффективно, поскольку данные имеют одинаковый тип для столбца, поэтому они могут применять другие оптимизации.
DataSize : 100000 в минуту = 6 миллионов в час.Я бы сказал, что это таблица среднего размера с точки зрения KDB.Запросы KDB не требуют много времени для выполнения таблицы такого размера, если система спроектирована правильно.
Атрибуты : KDB также поддерживает атрибуты таблиц, такие как отсортированные, уникальные, сгруппированные и разделенные.Атрибуты помогают запросам работать лучше.Например, вы можете хранить данные, отсортированные по идентификатору пользователя, а затем отсортированные по метке времени для каждого идентификатора пользователя.Сортированный атрибут заставит запрос использовать бинарный поиск вместо линейного поиска.Точно так же другие атрибуты имеют другие полезные функции.
Язык запросов: Язык запросов является важной частью любой системы баз данных.KDB использует язык «Q».Это мощный векторный язык с хорошим набором функций для работы с вектором.
Точно так же вы можете очень легко запросить ваши шаги в KDB.Но, как вы упомянули, это может быть сложной задачей, чтобы получить целевую задержку.Но существуют различные способы проектирования вашей системы для повышения производительности для этого варианта использования.
В KDB есть и другие полезные функции для управления данными, такие как распределение данных по нескольким узлам, настройка различных процессов и межпроцессное взаимодействие.
Все сводится к тому, как вы проектируете свою систему и как вы организовываете свои данные в таблицы.
Как я уже сказал в начале, выбор базы данных зависит от различных факторов.Я бы предложил настроить KDB на вашем компьютере (это очень просто) и провести тест на небольшом наборе данных, чтобы получить представление.