2011-01-20 15 views
7

Tengo una base de datos MS SQL que se utiliza para capturar estadísticas de ancho de banda. Contamos con una tabla de datos brutos y para mejorar la velocidad de los informes en diferentes niveles de desglose agregamos y acumulamos datos por hora, por día y por semana para separar las tablas.Bases de datos NoSQL: ¿son buenos candidatos para el procesamiento/agregación y acumulación de registros?

¿Sería una base de datos NoSQL como Mongo o Raven un buen candidato para este tipo de aplicación?

Respuesta

16

Diferentes soluciones NoSQL resolver diferentes problemas para diferentes usos - por lo que primero fuera lo mejor que puede hacer es mirar a su problema y descomponerlo

  • Estás escribiendo fuertemente de almacenamiento, por lo tanto, la velocidad de escritura es importante para usted
  • Desea realizar operaciones de agregación en esos datos y tener los resultados de esa consulta fácilmente
  • La velocidad de lectura no es tan importante por el sonido de las cosas, al menos no en una "aplicación web debe ser realmente receptivo para millones de personas rsonas" tipo de camino
  • No sé si necesita consultas dinámicas o no

Veamos Couch, Mongo y Raven en un nivel muy alto, de forma generalizada

Cuervo

  • escrituras rápidas
  • consultas rápidas (eventualmente consistentes, pre-computados, a través de la agregación mapa/reducir)
  • consultas dinámicas posible, pero no es realmente adecuado para su caso de uso, ya que lo más probable va a consultar por fecha etc

Mongo escrituras

  • tan rápidos (en mi opinión peligrosamente, porque el poder de apagarse significa perder los datos ;-))
  • lenta lee (relativamente), a través de la agregación map/reduce, no pre-computados
  • consultas dinámicas se acaba what_you_do, pero es probable que tenga que definir índices en sus columnas si desea cualquier tipo de actuación en este tipo de datos

Couch

  • escrituras rápidas
  • Fast-ish lee (pre-calculada, pero actualiza sólo cuando se lee (IIRC)
  • consultas dinámicas no es posible, todos los pre-definida a través de un mapa o un mapa/reducir funciones

Entonces, básicamente, ¿necesita consultas dinámicas sobre este tipo de datos? ¿Es la velocidad de lectura increíblemente importante para ti? Si necesita consultas dinámicas, querrá Raven o Mongo (para este tipo de cosas, Couch probablemente no sea lo que está buscando de todos modos).

FWIW, el único caso de uso de Mongo en mi opinión ES para el registro, por lo que puede tener un inversor allí.

+0

nice answer preguntando cuáles serán los requisitos antes de elegir :) – stack72

+0

@Rob: Entiendo que las consultas de CouchDB no están precalculadas, se calculan de forma diferida a pedido y luego se guardan en caché. Aparte de eso, +1. – skaffman

+0

¿No es eso lo que dije? Eso es precomputado efectivamente: las consultas adicionales combinarán los resultados hasta el momento con cualquier cambio de datos "pero solo se actualizó cuando lo lea" –

Cuestiones relacionadas