Как лучше всего структурировать таблицу из 100 М записей для быстрых специальных запросов?

Сценарий довольно прост, в таблице с 10 столбцами около 100 миллионов записей (вид аналитических данных), и мне нужно иметь возможность выполнять запросы по любой комбинации этих 10 столбцов. Например, что-то вроде этого:

  • сколько записей с a = 3 && b > 100было за последние 3 месяца?

В основном все запросы будут типа сколько записей с атрибутами Xимеется в интервале времени Y, где X] может быть любой комбинацией этих 10 столбцов.

Данные будут поступать, это не просто заранее заданный набор из 100 миллионов записей, они со временем растут.

Поскольку выбор столбцов может быть совершенно случайным, создание индексов для популярных комбинаций, скорее всего, невозможно.

Вопрос состоит из двух частей:

  • Как мне структурировать это в базе данных SQL, чтобы сделать запросы максимально быстрыми, и какие общие шаги я могу предпринять для повышения производительности?
  • Существует ли какая-либо база данных NoSQL, оптимизированная для такого рода поиска? Я могу думать только об ElasticSearch, но я не думаю, что он будет очень хорошо работать с этим большим набором данных.
7
задан Jakub Arnold 27 April 2012 в 07:34
поделиться