¿Lecturas basadas en el sistema de archivos frente a una consulta de base de datos simple?

StackOverflow https://stackoverflow.com/questions/5341480

Pregunta

Un CMS que utilizamos llamado Kentico Stores Media Library archivos en el sistema de archivos, y también almacena un registro en la base de datos para meta datos del archivo (título, descripción, etc.). Cuando usa un control de biblioteca de medios para enumerar esos elementos, leerá los archivos del sistema de archivos para mostrarlos. ¿Es más rápido leer desde el sistema de archivos y luego consultar la base de datos? ¿O sería más rápido ejecutar una consulta simple en la tabla de la base de datos de meta datos del archivo multimedia?

Suposiciones:

  • Kentico es una aplicación ASP.NET, por lo que el código está en C#. Utilizan conjuntos de datos simples para pasar sus datos.
  • Solo los meta datos se leerían de los archivos directos como el nombre de archivo y el tamaño.
  • A lo máximo de 100 archivos por carpeta.
  • La consulta de la base de datos se indexaría correctamente.
  • La consulta sería algo como:

    SELECCIONE *
    De Media_File
    Donde filepath como 'ruta/to/current/medios/carpeta/%'

¿Fue útil?

Solución

La respuesta corta es que depende de una serie de factores variables, pero el sistema de archivos generalmente será más rápido que un DB.

La respuesta más larga es: escanear el sistema de archivos local en una ubicación conocida es generalmente rápido, porque el recurso está cerca del hogar y las computadoras están diseñadas para realizar estas operaciones de manera muy eficiente.

Sin embargo, si es más rápido que una base de datos depende de la implementación de la base de datos, donde se encuentra y de cuántos datos estamos hablando. En general, los DBMSE están optimizados para almacenar y consultar de manera muy efectiva grandes conjuntos de datos, mientras que un sistema de archivos "plano" solo puede escanear la unidad tan rápido como va el hardware. Qué tan rápido son depende de la implementación (SQLite no será tan rápido en general como MS SQL Server o Oracle), el esquema de comunicación (transferir archivos a través de una red es lo más lento que su computadora hace regularmente; por contraste, con nombres tuberías con nombre Proporcione una comunicación interproceso muy rápida), y cuánto hardware le está arrojando (un servidor de cuchilla Quad-Xeon con rayas SATA-RAID será mucho más rápido que su computadora portátil Celeron).

Otros consejos

Además de lo que otros han dicho aquí, el almacenamiento en caché también puede entrar en juego dependiendo de su configuración de caché. No olvide tenerlos en cuenta como Kentico, SQL e IIS tienen muchos niveles diferentes de almacenamiento en caché y se usan en diferentes momentos dependiendo de su configuración, configuración y qué casos de uso están optimizando.

Cuando se trata de problemas de rendimiento en este nivel, la respuesta es a menudo: depende. Así que compare su propia solución para ver cuál ayuda más en las necesidades situacionales de sus usuarios particulares.

Kentico lanzó un par de guías de rendimiento (para 5.0 y otro para 5.5) Eso puede ayudar, pero aún así no le darán una respuesta definitiva hasta que la pruebe usted mismo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top