es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo diseñar un sistema de archivos basado en un solo archivo en Android y iOS?

Recientemente, estoy trabajando en un proyecto que tendrá miles de archivos pequeños para administrar. Todo el sistema leerá/ escribirá esos archivos de manera aleatoria. Y algunas partes de ellos se descargarán de redes en el momento en que sean necesarios. Debido a limitaciones de rendimiento y del sistema, solo puedo mantener 10~20 descriptores/manejadores de archivos. Así que decidí crear un único archivo grande como mi ‘disco’. Y luego leer y escribir dinámicamente archivos en él.

Aquí está mi diseño:
1. Un encabezado de archivo para la serialización de la meta-información.
2. Un índice para guardar la posición de cada archivo pequeño.
3. Un grupo de ‘segmentos preasignados’ para guardar los archivos.
4. Soporte para acceso multi-hilo.

Finalmente, parece un sistema de archivos virtual. Pero no estoy seguro si es seguro leer/escribir el mismo archivo al mismo tiempo en Android e iOS. Y no tengo idea de cómo administrar el fragmento de mis ‘segmentos preasignados’.

¿Existen mejores prácticas o marcos de trabajo a los que pueda hacer referencia? ¿Voy en la dirección correcta?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para gestionar miles de archivos pequeños en Android e iOS

    Recientemente, un proyecto requiere gestionar miles de archivos pequeños con acceso de lectura/escritura aleatorio. Debido a limitaciones de rendimiento y del sistema, el desarrollador decidió crear un único archivo grande como el ‘disco’ y leer y escribir archivos de manera dinámica en él. Esta solución se asemeja a un sistema de archivos virtual, pero el desarrollador no está seguro de si es seguro leer/escribir el mismo archivo al mismo tiempo en Android e iOS. Además, gestionar los fragmentos de ‘segmentos preasignados’ es una preocupación.

    Propuesta de diseño

    El diseño propuesto para gestionar miles de archivos pequeños en Android e iOS es el siguiente:

    1. Un encabezado de archivo para la serialización de la meta-información
    2. Un índice para guardar el desplazamiento de cada pequeño archivo
    3. Un grupo de ‘segmentos preasignados’ para guardar archivos
    4. Soporte de acceso multihilo

    Mejores prácticas y marcos de trabajo

    Para asegurar que el diseño propuesto sea seguro y eficiente, se recomienda seguir las mejores prácticas y considerar el uso de marcos de trabajo. A continuación, se presentan algunas mejores prácticas a considerar:

    1. Utilizar un mecanismo de bloqueo para evitar que múltiples hilos accedan simultáneamente al mismo archivo
    2. Utilizar un mecanismo de caché para reducir la cantidad de lecturas y escrituras en disco
    3. Utilizar un mecanismo de búfer para reducir la fragmentación y el tiempo de acceso al disco

    Algunos marcos de trabajo que pueden ser útiles para gestionar archivos en Android e iOS son:

    1. Android Storage Access Framework – Este marco de trabajo proporciona una forma consistente para que las aplicaciones accedan a archivos de diferentes fuentes, incluyendo servicios de almacenamiento en la nube y almacenamiento local.
    2. iOS File System Programming Guide – Esta guía proporciona información sobre la arquitectura del sistema de archivos y cómo gestionar archivos y directorios en iOS.
    3. Apache Common-IO – Este marco de trabajo proporciona clases de utilidad para operaciones comunes de E/S, como leer y escribir archivos, manejar flujos y copiar archivos.

    Conclusión

    Gestionar miles de archivos pequeños en Android e iOS puede ser un desafío, pero siguiendo las mejores prácticas y considerando marcos de trabajo relevantes, se puede hacer de manera eficiente y segura. El diseño propuesto de utilizar un único archivo grande como el ‘disco’ con acceso dinámico de lectura y escritura se asemeja a un sistema de archivos virtual y puede ser útil para gestionar múltiples archivos.

Comments are closed.