Добрый день. Есть такая структура данных:
{
key_number_1: {
key_date_1: [
{'min': 125,
'max': 300},
{'min': 10,
'max': 15},
{'min': 15,
'max': 20,}
...
{'min': 0,
'max': 10},
],
key_date_2: [
{'min': 125,
'max': 300},
...
{'min': 10,
'max': 15},
],
...
key_date_3: [
{'min': 600,
'max': 800},
...
{'min': 90,
'max': 100},
],
}
key_number_2: {
key_date_1: [
{'min': 10,
'max': 40},
...
{'min': 0,
'max': 10},
],
key_date_2: [
{'min': 125,
'max': 300},
{'min': 10,
'max': 15},
],
...
key_date_3: [
{'min': 600,
'max': 800},
...
{'min': 110,
'max': 111},
}
}
Решением «в лоб» было создание одной «плоской» таблицы с такой структурой:
id
number
date
min
max
Одной из идей как увеличить быстродействие было разнести данные по key_number_* и key_number_ в отдельные таблицы. Название таблиц — Table{$key_number}_{$str_key_date}. От этой идеи отказался, так как будет трудно делать выборку по key_number_*, игнорируя key_number_* из-за того, что появится куча таблиц, названия которых придется получать, как-то отделять номер от даты.
Сейчас смотрю в сторону нереляционных баз данных, в которых можно будет извлекать нужные данные по нужным мне ключам.
Сейчас выбираю себе нереляционное СУБД. Пока что по документации:
- Redis — простая БД для хранения ключ -> значение;
- CouchDB — умеет хранить данные в формате JSON, но не понятно, может ли быстро извлекать данные;
- MongoDB — судя по документации, у меня сложилось впечатление, что эта штука нужна для создания «плоских» таблиц без структуры. По идеи можно перенести данные с MySQL, но не думаю, что быстродействие увеличится.
Собственно вопрос в том, какую СУБД мне выбрать?