Tengo un proceso que inicialmente generará 3-4 millones de archivos PDF y continuará a una velocidad de 80 K/día. Serán bastante pequeños (50K) cada uno, pero lo que me preocupa es cómo administrar la masa total de archivos que estoy generando para facilitar la búsqueda. Algunos detalles:La mejor manera de almacenar/recuperar millones de archivos cuando sus metadatos están en una base de datos SQL
- Voy a tener algunos otros pasos para ejecutar una vez que se haya generado un archivo, y habrá algunos servidores participantes, por lo que tendré que vigilar los archivos a medida que se generan.
- Una vez generados, los archivos estarán disponibles a través de un proceso de búsqueda que he escrito. Esencialmente, tendré que extraerlos en función de un número de pedido, que es único por archivo.
- En cualquier momento, se puede reenviar un número de pedido existente, y el archivo generado deberá sobrescribir la copia original.
Originalmente, había planeado escribir estos archivos en un solo directorio en un NAS, pero me doy cuenta de que esto podría no ser una buena idea, ya que hay millones y Windows podría no manejar un millón de archivos -Parece muy elegante. Estoy buscando algunos consejos:
- ¿Está bien una sola carpeta? Los archivos nunca aparecerán en la lista; solo se recuperarán utilizando un System.IO.File con un nombre de archivo que ya he determinado.
- Si hago una carpeta, ¿puedo buscar nuevos archivos con un System.IO.DirectoryWatcher, incluso con tantos archivos, o empezará a ser lento con tantos archivos?
- ¿Deberían almacenarse como BLOB en una base de datos de SQL Server? Como tendré que recuperarlos por un valor de referencia, tal vez esto tenga más sentido.
¡Gracias por tu opinión!
usted tiene que generar a todos ellos ¿frente? ¿Puedes generarlos bajo demanda? ¿Quizás incluso los genere a pedido cada vez que los necesite, para que no tenga que almacenar los archivos? Obviamente, los datos de los que se generan están almacenados en algún lugar, entonces, ¿por qué duplicarlos? – rmeador
Los informes tardan unos 5 segundos en generar, pero contienen algunas instantáneas de cómo están las cosas ahora (algunos términos de contrato), por lo que no se pueden generar a pedido (podría almacenar el historial y hacerlo de esa manera, pero legal nos ha aconsejado que los necesitamos todos desde el principio, ya que los términos del contrato a pedido, que podrían haber cambiado, los pusieron nerviosos). – SqlRyan
Simplemente genere a pedido. Almacene la instantánea y llévela "generada" a legal. Es por eso que no dejas que las personas entiendan los detalles de lo que haces. Solo asegúrate de que el resultado es el que desean y gestiona los detalles tú mismo. De esta forma, puede generar material a pedido si el resultado es el mismo. – Pyrolistical