База данных лучше всего подходит для нескольких и большого набора инженерных выборок - PullRequest
0 голосов
/ 06 января 2019

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

Некоторые определения:

Набор данных: В основном это набор временных рядов. Каждый временной ряд представляет датчик, который был зарегистрирован во время инженерной деятельности. Частота регистрации может сильно варьироваться в зависимости от типа задачи (обычно в диапазоне от 1 до 1000 Гц)

Канал: отдельные временные ряды в наборе данных

Время: каждый канал в наборе данных имеет свой собственный вектор времени. Они могут потенциально все отличаться от каждого. Время относительное и начинается с 0 с

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

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

Чтобы дать некоторым действительным числам для реального проекта, нам может понадобиться хранить:

  • 100 наборов данных

  • 200 каналов каждый набор данных

  • средняя частота записи 500 Гц

  • средняя длина набора данных 10 минут

Это приведет к: - 60 миллионов баллов за набор данных

Критерии выбора базы данных:

Необходимая информация для хранения: - Уникальный идентификатор, связанный с каждым каналом (этот идентификатор является идентификатором прогона) - Единицы для каждого канала - время и вектор данных

Запрос к БД: Я все еще нахожусь на стадии мозгового штурма, и я не уверен на 100%, какой запрос нам нужно выполнить, но я не думаю, что мы получим очень сложный запрос. Причина, по которой я это говорю, заключается в том, что у нас есть очень сложный код, который мы выполняем для вычисления метрик, и реализация / перенос его на другой язык / сейчас, вероятно, не вариант (сейчас это означает следующие несколько лет). Я считаю, что наиболее типичный запрос будет выглядеть примерно так (в псевдо-SQL-подобном): ВЫБЕРИТЕ «Датчик давления 1»> 60 бар ОТ «всей базы данных» Затем я посмотрю, что произошло при выполнении условия и когда во время выполнения. Затем в отдельной среде я собираю данные и вычисляю метрики. Вот почему я не думаю, что запросы станут очень сложными, но я думаю, что они будут очень "проиндексированы по времени".

Я просматривал базы данных временных рядов и играл с InfluxDB. Я думаю, я мог бы заставить это работать с этим, но я не уверен насчет масштабируемости. Я действительно новичок в базах данных NoSQL, поэтому любое ваше предложение определенно увеличит мои знания. Я также посмотрел на Redis. Он кажется самым быстрым и, вероятно, также хорошим решением, учитывая различную структуру данных, которую он может хранить. Тем не менее, я не уверен, что это база данных в памяти ... означает ли это, что все будет храниться в оперативной памяти? Во всяком случае, как я уже сказал, я нахожусь в стадии мозгового штурма этих усилий, поэтому, пожалуйста, не стесняйтесь комментировать все, что вы можете придумать.

Заранее спасибо,

Guido

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...