2010-05-05 25 views
13

¿Cuál sería la base de datos adecuada para seguir? Estoy especialmente interesado en tus experiencias con los sistemas no relacionales NoSQL. ¿Son útiles para este tipo de uso, qué sistema ha utilizado y recomendaría, o debería ir con una base de datos relacional normal (DB2)?Qué son buenas soluciones de bases de datos NoSQL y no relacionales para la base de datos de auditoría/registro

Necesito recopilar información de auditoría/tipo de registro desde un grupo de fuentes a un servidor centralizado donde podría generar informes de manera eficiente y examinar lo que está sucediendo en el sistema.

Normalmente, un evento de auditoría/registro consistiría siempre de algunos campos obligatorios, por ejemplo

Identificación del
  • único global (de alguna forma generada por programa que generó este evento)
  • timestamp
  • tipo de evento (es decir, el usuario ha iniciado sesión, que pasó de error, etc.)
  • alguna información acerca de la fuente (server1, server2)

Además, el evento podría contener pares clave-valor 0-N, donde el valor podría ser de hasta algunos kilobytes de texto.

  • Se debe ejecutar en el servidor Linux
  • Se debe trabajar con una alta cantidad de datos (100 GB, por ejemplo)
  • debería apoyar algún tipo de eficiencia de búsqueda de texto completo
  • Debe permitir la lectura simultánea y escribiendo
  • Debe ser flexible para agregar nuevos tipos de eventos y agregar/eliminar pares clave-valor a nuevos eventos. Flexible = no se requieren cambios al esquema de la base de datos, la aplicación que genera los eventos puede agregar nuevos tipos de eventos/nuevos campos según sea necesario.
  • debería ser eficiente realizar consultas en la base de datos. Para informar y explorar lo que sucedió. Por ejemplo:
    • Cuántos eventos con tipo = X ocurrieron en algún período de tiempo.
    • obtener todos los eventos donde el campo A tiene un valor Y.
    • Obtener todos los eventos con tipo X y el campo A tiene el valor 1 y el campo B no es 2 y el evento ocurrido en las últimas 24 horas

Respuesta

4

El dos que he visto usar con éxito son MongoDB y Cassandra.

+0

¿Quisces decir MongoDB? –

+1

MongoDB es fantástico para la registración: http://blog.mongodb.org/post/172254834/mongodb-is-fantastic-for-logging – kristina

2

Utilizamos Redis para hacer todo nuestro registro centralizado para todos nuestros servidores de aplicaciones en mflow.com. Es muy rápido, que basado en these benchmarks hace aproximadamente 110000 SET por segundo, aproximadamente 81000 GET por segundo. Tiene una implementación de VM (si su conjunto de datos excede la memoria disponible) que intercambia valores no frecuentados en el disco.

Es un servidor avanzado de estructuras de datos que puede almacenar cualquier información binaria segura con soporte nativo para cadenas, listas, conjuntos, conjuntos ordenados y hash. En función de las discusiones en la lista de correo, muchas personas lo usan mucho para almacenar análisis.

2

¿Debería ir con la base de datos relacional normal (DB2)?

Sí, deberías! Si solo quiere almacenar cosas y escanearlas, también puede escribir en un archivo. Muy rápido, sin gastos generales Pero en el momento en que desee resumir los datos a lo largo del tiempo (últimas 24 horas, o entre el tiempo t y t + 1), cuanto más se preocupe por los datos como algo más que líneas de texto, no hay duda de que un RDBMS adecuado es su amigo.

Cuestiones relacionadas