wZD es un potente servidor de almacenamiento eficientemente, diseñado para sistemas de almacenamiento de datos grandes con archivos pequeños y grandes para uso mixto y reduce drásticamente una gran cantidad de archivos en una forma compacta que se parece a un servidor WebDAV normal desde el exterior.
El servidor está escrito en lenguaje Go que utiliza una versión modificada de la base de datos BoltDB como back-end para guardar y distribuir cualquier cantidad de archivos pequeños y grandes, claves/valores NoSQL, en una forma compacta dentro de bases de datos micro Bolt (archivos), con distribución de archivos y valores en bases de datos BoltDB dependiendo del número de directorios o subdirectorios y la estructura general de los directorios.
El servidor puede reducir significativamente la cantidad de archivos pequeños en sistemas de archivos regulares o agrupados con soporte de bloqueo total. Con el respaldo de los desarrolladores de wZD, el clúster almacena alrededor de 250 millones de archivos pequeños distribuidos en 15 millones de directorios en el clúster MooseFS FS.
Sobre wZD
wZD hace posible mover (archivar) el contenido de directorios a archivos en formato BoltDB y luego distribuir estos archivos desde estos archivos (o poner archivos en archivos usando el método PUT), reduciendo significativamente el número de archivos en el sistema de archivos y reduciendo la sobrecarga de almacenamiento de metadatos.
Para aumentar la eficiencia del procesamiento de archivos grandes, dichos archivos se pueden almacenar por separado de los archivos de Bolt.
Tal enfoque le permite organizar el almacenamiento de una gran cantidad de archivos pequeños, sin descansar en el límite de la cantidad de inodos en el sistema de archivos.
El servidor también se puede utilizar como una base de datos NoSQL para datos en el formato clave/valor (con particiones basadas en la estructura del directorio) o para distribuir documentos html o json generados previamente desde la base de datos.
En términos de rendimiento, cargar y escribir datos usando archivos Bolt conduce a un aumento en la latencia de aproximadamente 20-25% al leer y de 40 a 50% al escribir. Cuanto más pequeño sea el tamaño del archivo, menor será la diferencia en la latencia.
De las características clave, se destacan las siguientes:
- Multithreading
- Servidores múltiples para tolerancia a fallas y equilibrio de carga
- Máxima transparencia para el usuario o desarrollador
- Métodos HTTP admitidos: GET, HEAD, PUT y DELETE
- Administra el comportamiento de lectura y escritura a través de encabezados de clientes
- Soporte para hosts virtuales personalizables.
- Escalado lineal de lectura y escritura utilizando sistemas de archivos agrupados
- Métodos efectivos de lectura y escritura de datos.
- Admite integridad de datos CRC al escribir o leer
- Compatibilidad con encabezados Range y Accept-Ranges, If-None-Match y If-Modifed-Since
- Almacene y comparta 10.000 veces más archivos que inodos en cualquier sistema de archivos compatible con Posix, dependiendo de la estructura del directorio
- Soporte para agregar, actualizar, eliminar archivos y valores, y compactación retrasada de archivos Bolt
- Permite que el servidor se use como una base de datos NoSQL, con un fragmentación fácil basado en la estructura del directorio
- Soporte de archivos Bolt para lectura selectiva de un cierto número de bytes de un valor
- Fragmentación fácil de datos en miles o millones de archivos Bolt basados en la estructura de directorios
- Soporte de modo mixto, con capacidad para guardar archivos grandes por separado de los archivos Bolt
- Soporte para obtener una lista o número de claves en un directorio, incluidas las no únicas
- Incluye un archivador wZA multiproceso para migrar archivos sin detener el servicio
En cuanto a las limitaciones de la versión actual: no hay soporte para Multipart, el método POST, el protocolo HTTPS, carpetas para lenguajes de programación, eliminación recursiva de directorios, no hay soporte para montar la estructura en el sistema de archivos a través de WebDAV o FUSE, los archivos se almacenan bajo un usuario del sistema.
Finalmente si estás interesado en conocer más al respecto sobre wZD así como las instrucciones y requisitos para su instalación puedes consultar los detalles en el siguiente enlace.
Fuente: desdelinux