- Mais de 300 mil vídeos
- Mais de 10 milhões de marcadores apontando para intervalos de tempo em vídeos
{
"markerCategory": "something",
"markerDesc": "something-more-specific",
"frameIn": 120001,
"frameOut": 140002
},
{
"markerCategory": "something-else",
"markerDesc": "something-else-more-specific",
"frameIn": 130001,
"frameOut": 135002
}
Alguma sugestão de qual banco de dados/índice de pesquisa teria melhor desempenho
ao pesquisar algo neste sentido:
Vídeos com eventos de
category A
ANDcategory B
em intervalos de tempo sobrepostos,
classificados por quantidade de tempo coberto
Atualmente, os vídeos são exportados de algum banco de dados relacional proprietário e armazenados em uma instância do Apache SOLR para pesquisa.
- Existe um nome específico para esse tipo de consulta ("consultas de intervalo invertido" ou algo assim...)?
- Alguma sugestão de qual tecnologia teria melhor desempenho para esses tipos de consultas?
Eu estava pensando talvez em Elasticsearch?
Qualquer sistema de banco de dados relacional convencional deve funcionar bem. Parece que o esquema dos seus dados está bem definido.
Claro, um índice em
(markerCategory, frameIn, frameOut)
provavelmente seria o que você desejaria. Em um RDBMS (sistema de gerenciamento de banco de dados relacional), você também pode adicionar uma coluna computada/gerada à tabela que armazena a diferença entreframeIn
eframeOut
para a quantidade de tempo coberto, e adicioná-la ao índice também.A menos que sua definição de tempo coberto seja o intervalo total entre as duas categorias sobrepostas após elas serem unidas. Nesse caso, uma Indexed View pode ser capaz de ser aproveitada para persistir os resultados da junção e o intervalo total de tempo coberto entre os resultados unidos, tornando-os indexáveis também.
O Elasticsearch é destinado à indexação e busca de grandes instâncias de texto, semelhante a um mecanismo de busca como o Google. É bom para o conceito de Full-Text Search. Não acredito que seu caso de uso faça sentido para ele.