2010-01-26 9 views
10

Estoy trabajando en una aplicación que voy a escribir con C y estoy considerando utilizar un db de nosql para almacenar datos de series de tiempo con un máximo de 8 o 9 campos. Pero en cada 5 minutos habrá enormes operaciones de escritura, como entre 2 y 10 millones de filas, y luego habrá lecturas (pero el rendimiento no es tan importante en lectura como en la operación de escritura).¿Qué DB noSQL usar con C?

Estoy considerando utilizar una base de datos NoSQL aquí para almacenar los datos, pero no pude decidir cuál utilizar. Couchdb parece tener un controlador estable llamado pillowtalk para C; pero el conductor de Mongo no parece tan prometedor como el de una almohada. También estoy abierto a otras sugerencias.

¿Cuál es su recomendación?

Respuesta

6

Para contraints rendimiento locos no se puede mejorar Tokio Gabinete: http://fallabs.com/tokyocabinet/

También hay un componente de servidor llamada Tokio tirano que se ve muy cool.

+0

¿Tiene un API C y que me puede proporcionar algo de información de referencia en relación con esto. – systemsfault

+0

Está escrito en C y tiene una API excelente. Puede leer los puntos de referencia aquí: http://1978th.net/tokyocabinet/benchmark.pdf – jckdnk111

+0

wow results are really awesome, actualmente estoy probando el tokyo cabinet. También del documento que ha enviado, el rendimiento de cdb también parece atractivo. ¿Cuáles son los principales beneficios de tokyodb sobre cdb? – systemsfault

0

¿Qué hay de Sqlite? El sitio es here. La interfaz para editar/administrar la base de datos sqlite es sqliteman.

Espero que esto ayude.

+0

sí, sé sobre sqllite y bdb. Pero no estoy seguro si rdbms encajará en mi caso. Porque mi objetivo principal aquí es archivar los datos. No realizaré consultas complejas. también la escalabilidad vertical de couchdb también parece atractiva. Pero esta opción que has mencionado todavía está en mi mente. – systemsfault

+0

@holydiver: mira aquí ... en la otra pregunta de SO ... http: //stackoverflow.com/questions/417917/alternatives-to-sqlite – t0mm13b

1

¿Su proyecto desea admitir algún tipo de datos sin conexión? Si es así, probablemente debería usar CouchDB ya que el modelo de replicación está diseñado para admitir cambios y sincronización de datos sin conexión.

+0

sí en realidad admite datos fuera de línea. pero couchdb es bastante lento en comparación con otras opciones. – systemsfault

+2

conozco las bases de datos de couchdb con muchos terabytes y muchos índices que corren bastante rápido para muchos usuarios simultáneos. la mayoría de los benchmarks de MongoDB (para escrituras) son un poco engañosas ya que las llamadas a insert() en MongoDB no devuelven una respuesta y no se garantiza que se escriban en el disco o incluso se pueda acceder a ellas. Los benchmarks de escritura de MongoDB parecen probar principalmente socket.write() veces :) – mikeal

5

MongoDB funciona muy bien con C: hay un controlador C y un controlador C++. La base de datos usa el controlador C++ para funciones como la replicación (MongoDB está escrito en C++).

http://www.mongodb.org/display/DOCS/Drivers

Cuestiones relacionadas