Git en almacenamiento de objetos: reinventar los packfiles para que funcione
You can run Git on object storage if you re-make packfiles
Tigris está construyendo un servidor Git open source sobre almacenamiento de objetos. El enfoque inicial, un shim de sistema de archivos, no escalaba a repositorios reales. El problema: los packfiles de Git están diseñados para mmap y disco local, no para latencias de red. La solución fue un nuevo formato de packfile columnar, nativo de object storage, que permite leer objetos individuales con HTTP Range requests sin cambios en el cliente.
Los packfiles son difíciles porque están diseñados pensando en almacenamiento local y/o mmap. Git escribe packfiles constantemente en disco y luego los vuelve a leer. Las lecturas del sistema de archivos en ese caso son de 10 nanosegundos como máximo (el caché del sistema de archivos ayuda muchísimo aquí), pero hacer cualquier roundtrip de red es de 10 milisegundos como mínimo. Es al menos un millón de veces más lento por cómo funciona la realidad.