sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Qué base de datos NoSQL usar para series temporales dispersas como datos?

Creo que, literalmente, todas las principales bases de datos NoSQL admitirán ese requisito, especialmente si en realidad no tiene un gran volumen de datos (lo que plantea la pregunta, ¿por qué NoSQL?).

Dicho esto, recientemente tuve que diseñar y trabajar con una base de datos NoSQL para datos de series temporales, por lo que puedo brindar información sobre ese diseño, que luego se puede extrapolar para todos los demás.

Nuestra base de datos elegida fue Cassandra , y nuestro diseño fue el siguiente:

  • Un solo espacio de teclas para todos los 'símbolos'
  • Cada símbolo era una nueva fila
  • Cada entrada de tiempo era una nueva columna para esa fila relevante
  • Cada valor (puede ser más de un solo valor) era la parte del valor de la entrada de tiempo

Esto le permite lograr todo lo que solicitó, sobre todo leer los datos de un solo símbolo y usar un rango si es necesario (llamadas de rango de columna). Aunque dijo que el rendimiento no era crítico, lo era para nosotros y esto también fue bastante eficaz:todos los datos para cualquier símbolo individual se ordenan por definición (clasificación de nombre de columna) y siempre se almacenan en el mismo nodo (sin comunicación entre nodos para consultas simples ). Finalmente, este diseño se traduce bien en otras bases de datos NoSQL que tienen columnas dinámicas.

Además de esto, aquí hay información sobre el uso de MongoDB (y colecciones limitadas si es necesario) para una tienda de series temporales:MongoDB como base de datos de series temporales

Finalmente, aquí hay una discusión de SQL vs NoSQL para series temporales:https://dba.stackexchange.com/questions/7634/timeseries-sql-or-nosql

Puedo agregar a esa discusión lo siguiente:

  • La curva de aprendizaje de NoSQL será más alta, no obtendrá la flexibilidad y la funcionalidad añadidas de forma gratuita en términos de 'costos indirectos'. ¿Quién apoyará operativamente esta base de datos?
  • Si espera que esta funcionalidad crezca en el futuro (ya sea a medida que se agreguen más campos a cada entrada de tiempo, o una capacidad mucho mayor en términos de número de símbolos o tamaño de la serie temporal del símbolo), entonces definitivamente opte por NoSQL. El beneficio de la flexibilidad es enorme, y la escalabilidad que obtiene (con el diseño anterior) tanto por símbolo como por número de símbolos es casi ilimitada (digo casi ilimitada:el máximo de columnas por fila es de miles de millones, el máximo las filas por espacio clave son ilimitadas, creo).