Решение для базы данных для статических данных временных рядов

У нас есть большой и растущий набор экспериментальных данных, взятых у около 30 000 субъектов. Для каждого предмета есть несколько записей данных. Внутри каждой записи имеется набор из нескольких временных рядов физиологических данных, каждый длиной около 90 секунд и с частотой дискретизации 250 Гц. Я должен отметить, что любой конкретный экземпляр временного ряда никогда не продлевается, в набор данных добавляются только дополнительные записи. Эти записине все одинаковой длины, а также. В настоящее время данные для каждой записи содержатся в отдельном плоском файле. Эти файлы организованы в структуру каталогов, которая иерархически разбита по версии общего эксперимента, местоположению эксперимента, дате и терминалу эксперимента (в этом иерархическом порядке).

Большая часть нашего анализа проводится в MATLAB, и мы планируем продолжать широко использовать MATLAB для дальнейшего анализа. Ситуация в ее нынешнем виде была работоспособной (если нежелательной), когда все исследователи находились в одном месте. Сейчас мы разбросаны по всему миру, и я изучаю лучшее решение, чтобы сделать все эти данные доступными из удаленных мест. Я хорошо разбираюсь в MySQL и SQL Server и могу легко найти способ структурировать эти данные в рамках такой парадигмы. Однако я скептически отношусь к эффективности этого подхода. Я буду признателен за любые предложения, которые могут указывать мне в правильном направлении. Должен ли я рассмотреть что-то другое? Базы данных временных рядов (хотя мне кажется, что они настроены на расширение существующих временных рядов)? Что-то другое?

Анализ не нужно делать онлайн, хотя возможность сделать это была бы плюсом. На данный момент наш типичный вариант использования будет состоять в том, чтобы запросить определенное подмножество записей и извлечь соответствующие временные ряды для локального анализа. Я ценю любой совет, который вы могли бы иметь!

Обновить:

В моем исследовании ямы нашлиЭта бумагагде они хранят и анализируют очень похожие сигналы. Oни'мы выбрали MongoDB по следующим причинам:

Скорость развитияПростота добавления полей в существующие документы (функции, извлеченные из сигналов и т. Д.)Простота использования MapReduce благодаря самому API MongoDB

Это все привлекательные преимущества и для меня. Разработка выглядит предельно простой, и возможность легко дополнять существующие документы результатами анализа явно полезна (хотя я знаю, что это не так).Это трудно сделать в тех системах, с которыми я уже знаком.

Чтобы быть ясным, я знаю, что я могу оставить данные, хранящиеся в плоских файлах, и я знаю, что я мог бы просто организовать безопасный доступ к этим плоским файлам через MATLAB по сети. Естьмногочисленные Причины, по которым я хочу хранить эти данные в базе данных. Например:

В настоящее время существует небольшая структура для плоских файлов, за исключением иерархической структуры, указанной выше. Невозможно получить все данные за определенный день, например, без удаления всех отдельных файлов для каждого терминала за определенный день.Нет способа выполнить запрос к метаданным, связанным с конкретной записью. Мне страшно подумать об обручах, которые янапример, мне нужно прыгнуть, чтобы получить все данные для женщин.

Короче говоря, я хочу сохранить эти данные в базе данных по множеству причин (среди прочего, из-за простоты, эффективности и простоты доступа).

Обновление 2

Кажется, я недостаточно описываю природу этих данных, поэтому я попытаюсь уточнить. Эти записи, безусловно, являются данными временных рядов, но не так, как многие думают о временных рядах. Я не собираю данные для добавления в существующий временной ряд. Я действительно делаю несколько записей, все с разными метаданными, но с теми же тремя сигналами. Эти сигналы можно рассматривать как вектор чисел, и длина этих векторов варьируется от записи к записи. В традиционной СУБД я мог бы создать одну таблицу для типа записи A, одну для B и т. Д. И рассматривать каждую строку как точку данных во временном ряду. Однако это не работает, поскольку записи различаются по длине. Скорее, я бы предпочел иметь сущность, которая представляет человека, и связать эту сущность с несколькими записями, взятыми у этого человека. Вот почему я рассмотрел MongoDB, так как могу вложить несколько массивов (различной длины) в один объект в коллекции.

Потенциальная структура MongoDB

В качестве примера здесьВот что я набросал в качестве потенциальной структуры BSON MongoDB для предмета:

{
    "songs": 
    {
        "order": 
        [
            "R008",
            "R017",
            "T015"
        ],
        "times": [
            { 
                "start": "2012-07-02T17:38:56.000Z",
                "finish": "2012-07-02T17:40:56.000Z",
                "duration": 119188.445
            },
            { 
                "start": "2012-07-02T17:42:22.000Z",
                "finish": "2012-07-02T17:43:41.000Z",
                "duration": 79593.648
            },
            { 
                "start": "2012-07-02T17:44:37.000Z",
                "finish": "2012-07-02T17:46:19.000Z",
                "duration": 102450.695
            }
        ] 
    },
    "self_report":
    {
        "music_styles":
        {
                "none": false,
                "world": true
        },
        "songs":
        [
            {
                "engagement": 4,
                "positivity": 4,
                "activity": 3,
                "power": 4,
                "chills": 4,
                "like": 4,
                "familiarity": 4
            },
            {
                "engagement": 4,
                "positivity": 4,
                "activity": 3,
                "power": 4,
                "chills": 4,
                "like": 4,
                "familiarity": 3
            },
            {
                "engagement": 2,
                "positivity": 1,
                "activity": 2,
                "power": 2,
                "chills": 4,
                "like": 1,
                "familiarity": 1
            }
        ],
        "most_engaged": 1,
        "most_enjoyed": 1,
        "emotion_indices":
        [
            0.729994,
            0.471576,
            28.9082
        ]
    },
    "signals":
    {
        "test":
        {
            "timestamps":
            [
                0.010, 0.010, 0.021, ...
            ],
            "eda":
            [
                149.200, 149.200, 149.200, ...
            ],
            "pox":
            [
                86.957, 86.957, 86.957, ...
            ]
        },
        "songs":
        [
            {
                "timestamps":
                [
                    0.010, 0.010, 0.021, ...
                ],
                "eda":
                [
                    149.200, 149.200, 149.200, ...
                ],
                "pox":
                [
                    86.957, 86.957, 86.957, ...
                ]
            },
            {
                "timestamps":
                [
                    0.010, 0.010, 0.021, ...
                ],
                "eda":
                [
                    149.200, 149.200, 149.200, ...
                ],
                "pox":
                [
                    86.957, 86.957, 86.957, ...
                ]
            },
            {
                "timestamps":
                [
                    0.010, 0.010, 0.021, ...
                ],
                "eda":
                [
                    149.200, 149.200, 149.200, ...
                ],
                "pox":
                [
                    86.957, 86.957, 86.957, ...
                ]
            }
        ]
    },
    "demographics":
    {
        "gender": "female",
        "dob": 1980,
        "nationality": "rest of the world",
        "musical_background": false,
        "musical_expertise": 1,
        "impairments":
        {
            "hearing": false,
            "visual": false
        }
    },
    "timestamps":
    {
        "start": "2012-07-02T17:37:47.000Z",
        "test": "2012-07-02T17:38:16.000Z",
        "end": "2012-07-02T17:46:56.000Z"
    }
}

Теsignals время серии.

Ответы на вопрос(3)

Ваш ответ на вопрос