TimescaleDB - хорошее решение для вашей проблемы. Это не накладывает ограничений на данные, поступающие в отсортированном виде. Временная шкала разбивает ваши данные на измерение по вашему выбору, время является наиболее частым примером монотонного измерения (но для разделения данных можно использовать любой целочисленный тип). Вы указываете размер раздела (размер чанка), и TimescaleDB создает новые разделы автоматически для каждого интервала. Пока ваши данные попадают в интервал между несколькими блоками, база данных может работать с этими блоками в памяти, что увеличивает скорость приема. Неважно, если данные поступают абсолютно отсортированы. Поскольку TimescaleDB построен на PostgreSQL, он не имеет модели хранения только для добавления, что позволяет даже модифицировать старые данные или даже выполнять обратное заполнение без ущерба для производительности.
Еще одно преимущество использования TimescaleDB:
- Собственное сжатие, может снизить требования к хранилищу до 20 или 30 раз (и более в зависимости от вашего макета данных)
- Многоуровневое хранение данных присоединение табличных пространств к более медленному хранилищу и автоматическое перемещение старых чанков в более медленное хранилище нужно сканировать на основе предикатов вашего запроса, основываясь на выбранном вами разделе