Доброго времени суток.
Есть большие объемы данных, ~40-45ГБ сутки, 25-30к строк в секунду, запись идет непрерывно.
Конечный объем может насчитывать 50-70ТБ.
Формат данных:
int timestamp
int value1
int value2
int value3
Выборки в основном имеют вид timestamp > date_1 && timestamp < date_2 && data == value*
Какую БД посоветуете? На какой отклик можно рассчитывать ?
Очень приятным бонусом будет если БД умеет сжимать данные.
Добавлю второй вариант, какой есть метод компрессии с так называемым свободным seek по файлу.
Складывайте в файлы по часам (например) - новый час - новый файл. Далее пакуйте.
На timestamp можно отвести 2 байта (т.к. в пределах часа). Посмотрите может value можно уменьшить.
Даже если на запись 16 байт, то современный HDD (150Mb/s) сможет сохранять ~9млн записей в сек (с вашими 30к справится)
Останется только сделать тулзу которая будет по вашим условиям доставать данные.
Файлы можно хранить на диске, можно в файловой БД, можно в GridFS которая будет шардить их по кластеру.
lega Такую тулзу еще сделать. Выборка по `value*` требовательна. Здесь можно было бы параллельно строить какую-нибудь структуру для поиска (чер-кр. бинарное дерево?) на дополнительных винтах.
InfluxDB - специализированная именно под такую задачу.
Yandex Elliptics (в настоящее время легко компилируется только под Ubuntu 14.04 и соответствующее поколение Debian) - не БД, а распределенное хранилище DHT. Зато умеет само масштабироваться и реплицироваться и восстанавливаться. Ваше дело будет только подключать новые сервера к нему (или диски на сервера).
Вам хадуп кластер разворачивать необходимо и архитектуру конструировать на основе доставки сообщений с бд посредником, а все ваши терабайты в логах gzip хранить ну или на кластере в hive. Короче вопрос этот не для тостера. Вам во фриланс платформу за devops'ами нужно, т.к опыта у Вас нет по ходу с такими вопросами.