Estoy buscando una solución rápida (como de gran rendimiento, solución no rápida) para persistir y recuperar decenas de millones de objetos binarios pequeños (alrededor de 1k). Cada objeto debe tener una identificación única para la recuperación (preferiblemente, un GUID o SHA). Los requisitos adicionales son que debería ser utilizable desde .NET y no debería requerir instalación de software adicional.La forma más rápida de recuperar/almacenar millones de pequeños objetos binarios
Actualmente, estoy usando una base de datos SQLite con una sola tabla para este trabajo, pero quiero deshacerme de la sobrecarga de procesar instrucciones SQL simples como SELECCIONAR datos FROM store WHERE id = id.
También probé la persistencia directa del sistema de archivos bajo NTFS, pero el rendimiento se degrada muy rápido tan pronto como llega a medio millón de objetos.
P.S. Por cierto, los objetos nunca necesitan ser eliminados, y la tasa de inserción es muy, muy baja. De hecho, cada vez que un objeto cambia una nueva versión se almacena y la versión anterior permanece. Esto es realmente un requisito para apoyar el viaje en el tiempo.
Simplemente añadiendo alguna información adicional a este tema:
Para Blob o no a BLOB: almacenamiento de objetos grandes en una base de datos o un sistema de archivos http://arxiv.org/abs/cs.DB/0701168
Parece que mis pruebas preliminares (en nUnit) sugieren un tiempo de lectura ReadWrite Vector [10, 100, 1000] objetos de .3 segundos en SQLite y 3.01s utilizando NTFS, para un objeto de 50 bytes. :-( –
Pero leer 10k objetos en 2.8s todavía es demasiado lento para mí :-( –
Necesitaría algo así como 100k en aproximadamente 1s. –