• Какое подобрать хранилище 3 триллионов событий?

    @Blowspirit Автор вопроса
    Итог: попробовали несколько макетов, самым интересным оказался hadoop.
    hdfs - используем для хранения данных, MapReduce - для аналитики
  • Какое подобрать хранилище 3 триллионов событий?

    @Blowspirit Автор вопроса
    У меня есть пока следующие соображения:
    1. поскольку при поиске данных всегда фигурирует id устройства и временной диапазон, то можно это дело хранить в hdfs в структуре типа /id_устройства/день/файл_с_данными. Соответственно нужный файл (~400мб) или файлы мы можем быстро найти, а затем данные в нем мы фильтруем с помощью чего-либо (spark, flink или hive??).
    2. Можно хранить данные в кластере с elasticsearch выпилив ненужные поисковые причиндалы (full-text) из структуры данных. Идея такая: создаем каждый день новый индекс(аля база данных в реляционных терминах) где к названии индекса будем в постфиксе добавлять текущую дату. В индексе будет будет где-то 130-150 шардов (т.к. 1 шард это максимум ~2 миллиарда событий). Поисковый запрос в elasticsearch позволяет искать сразу в нескольких индексах (можно использовать соответствующие паттерны в запросе). Плюс в эластике каждое поле уже автоматом является индексом что большой плюс. Тут очень интересно насколько адекватно такой кластер с таким количеством шардов будет работать
  • Какое подобрать хранилище 3 триллионов событий?

    @Blowspirit Автор вопроса
    Одно событие весит примерно 150 байт. С учетом необходимость большого количества ssd это под вопросом. А если разливать события вручную на диск, то фактически вы предлагаете использовать полностью самописное решение для шардинга, репликации, индексации и тд, что конечно же не комильфо
  • Какое подобрать хранилище 3 триллионов событий?

    @Blowspirit Автор вопроса
    nirvimel: хранятся не тики, а события от устройств. Обработка в реальном времени не нужна, поэтому и храним за месяц
  • Какое подобрать хранилище 3 триллионов событий?

    @Blowspirit Автор вопроса
    Clickhouse конечно хорош, но это OLAP решение, а мы аналитические запросы не будем делать, нам нужна только фильтрация. Плюс там есть ограничение - результат выполнения запроса должен помещаться в оперативку на одном сервере.
    Aerospike - это kev/value БД, т.е. сортировку и поиск по критериями уже не выполнить. Возможно ошибаюсь, т.к. с этой базой глубоко не знаком.
    DynamoDB - платная, руководство такое врядли пропустит, плюс это также key/value БД
  • Какое подобрать хранилище 3 триллионов событий?

    @Blowspirit Автор вопроса
    "быстро" - поиск не более 5-10 секунд за конкретную дату и не более 30-60 если поиск производится за месяц.
    "устойчивым к отказам узлов" - при отказе узла данные не должны теряться, т.е. нужна авто репликация данных
    "быть надежным и проверенным решением" - малоизвестное решение, которое не решало схожего масштаба задачи не рассматривается
    И оценочную $ - бесплатное и opensource решение