Preciso criar um banco de dados de séries temporais e executar as seguintes tarefas:
- criar novas séries temporais
- atualizar séries temporais existentes
- consultar uma ou várias séries temporais ao mesmo tempo (por exemplo, todas as séries temporais para a mesma data, etc ...)
O Mongo está adaptado a isso e, se sim, como devo estruturar o banco de dados? (uma série temporal = um documento? Ou um documento = uma entrada da série temporal, e todos esses documentos formam a coleção, que é a série temporal inteira?)
Estou um pouco perdido aqui e acho difícil encontrar qualquer informação, pois geralmente o Mongo é apresentado como muito flexível, para que o usuário possa escolher a infraestrutura.
Qualquer link para o tutorial que explique especificamente como gerenciar séries temporais no Mongo é muito bem-vindo.
Obrigado!
Respostas:
Sugiro uma única entrada de série temporal por documento. Existem alguns problemas com o armazenamento de várias entradas por documento:
Observe também que um carimbo de data / hora está embutido no MongoDB ObjectId padrão . Você pode usar isso se a precisão da série temporal for inferior a um segundo.
Aqui está um exemplo de documento BSON de uma biblioteca de log de eventos que usa o MongoDB :
Como um log de eventos é semelhante a uma série temporal, pode valer a pena estudar o restante do código . Existem versões em Java, C #, PHP e Python.
Aqui está outro projeto semelhante de código aberto: Zarkov
[update] Em resposta ao comentário do @ RockScience, adicionei mais algumas referências:
fonte
Encontrei essa pergunta no SO ( /programming/4814167/storing-time-series-data-relational-or-non ), onde o OP pergunta como armazenar uma série temporal. Embora a pergunta dele seja mais baseada no uso de um banco de dados NoSQL ou RDBMS, e você parece bem decidido em usar um banco de dados NoSQL.
Também encontrou este artigo em " Os requisitos exclusivos do banco de dados de dados de séries temporais " que podem ser úteis.
Espero que isto ajude.
fonte
Sim, definitivamente, o banco de dados NoSQL é mais adequado para armazenar dados de séries temporais do que o RDBMS tradicional.
Sim O MongoDB está excepcionalmente adaptado a este caso de uso.
-Como você deve estruturar o banco de dados? Um documento = uma entrada de série temporal VS várias séries temporais.
A resposta é armazenar em um documento várias séries temporais. Ter menos documentos ajudará o desempenho com menos leituras. Um truque é preparar seu documento com os valores predefinidos. Isso otimizará a atualização do documento, evitando o preenchimento de registros .
Aqui está um exemplo de esquema sobre como armazenar idealmente uma hora no valor de séries temporais com um intervalo de minutos:
Você o inicia com 0 valores e as atualizações serão otimizadas. As leituras são otimizadas porque um documento é lido em vez de 60. Se você precisar armazenar um dia de dados ou um mês em que prosseguir com a mesma técnica, terá uma idéia.
Aqui está o link para um tutorial que explica especificamente como gerenciar séries cronológicas no MongoDb a partir do Blog oficial do MongoDb: http://blog.mongodb.org/post/65517193370/schema-design-for-time-series-data-in- mongodb
fonte