¿Qué almacenamiento de datos distribuidos debo usar para almacenar de manera confiable datos sobre un conjunto de nodos con una red deficiente entre ellos?
Quiero algo que:
- No espera que todos los nodos sean accesibles ahora, incluido el soporte de la operación fuera de línea;
- Inicialmente almacene datos localmente, pero eventualmente (cuando la red es buena y hay más nodos en línea) los distribuye a otros nodos necesarios;
- Tenga un buen reequilibrio automático y reparación frente a los nodos unirse y salir de la red;
- Maneje nodos que difieran mucho en capacidad, almacenando solo cosas pequeñas y de alta prioridad en pequeños nodos;
- Trate el nodo local especial: los datos "my" siempre se almacenan primero en el nodo local, luego se respaldan en otros nodos.
La mayoría de las soluciones como Tahoe-LAFS o GlusterFS parecen esperar un conjunto más o menos estable de nodos que se mantienen en línea y conectados con una buena red, sin tiempos de inactividad planificados prolongados. ¿Existe un almacenamiento distribuido especial que permita que los nodos estén desconectados de forma regular?
No creo que vaya a encontrar ninguno que "espere" el tiempo de inactividad. Lo mejor que obtendrá son aquellos que pueden evitar el tiempo de inactividad a través del registro en el diario y la paridad adecuados, e incluso esos tendrán límites (y requerirán más almacenamiento para extender la expectativa de tiempo de inactividad a más nodos). ¿Cuál es la razón por la que necesita tiempo de inactividad "esperado" integrado en su solución? ¿No sería la razón para esperar el tiempo de inactividad el primer paso para implementar una solución?
—
MaQleod
Por ejemplo, debido a que varios nodos pueden ser PC normales, teléfonos inteligentes y servidores. Entre los nodos del servidor, debería funcionar más o menos como los almacenamientos de cuadrícula tradicionales. Pero en un teléfono inteligente debería funcionar [cuantitativamente] de manera diferente. Los nodos que están fuera de línea también deberían hacer algo útil, como mantener el acceso a datos pequeños pero altos (que se copian en todos los nodos de la red). El almacenamiento no debe centrarse en el rendimiento, sino en la fiabilidad "construida con ladrillos pobres y cemento pobre".
—
Vi.
Nota: "desconectado" aquí significa "operativo, pero sin red". En el modo fuera de línea, el nodo debe proporcionar acceso al recurso que tiene localmente y aceptar nuevos datos, cargando esos datos en la red cuando el nodo finalmente lo haga en línea.
—
Vi.