Muévete sobre Memcached y Redis, aquí viene Netflix's Hollow

Después de dos años de uso interno, Netflix ofrece un nuevo proyecto de código abierto como una opción poderosa para almacenar en caché conjuntos de datos que cambian constantemente.

Hollow es una biblioteca y un conjunto de herramientas de Java cuyo objetivo es el almacenamiento en caché en memoria de conjuntos de datos de hasta varios gigabytes de tamaño. Netflix dice que el propósito de Hollow es triple: está destinado a ser más eficiente en el almacenamiento de datos; puede proporcionar herramientas para generar API automáticamente para un acceso conveniente a los datos; y puede analizar automáticamente los patrones de uso de datos para sincronizar de manera más eficiente con el back-end.

Mantengamos esto entre nosotros

La mayoría de los escenarios para almacenar datos en caché en un sistema donde no se almacenan (un sistema de "consumidor" en lugar de un sistema de "productor") implican el uso de un producto como Memcached o Redis. Hollow recuerda a ambos productos, ya que utiliza almacenamiento en memoria para un acceso rápido, pero no es un almacén de datos real como Redis.

A diferencia de muchos otros sistemas de almacenamiento en caché de datos, Hollow está diseñado para acoplarse a un conjunto de datos específico: un esquema dado con ciertos campos, generalmente un flujo JSON. Esto requiere algo de trabajo de preparación, aunque Hollow proporciona algunas herramientas para automatizar parcialmente el proceso. La razón para hacerlo: Hollow puede almacenar los datos en la memoria como fragmentos de longitud fija y fuertemente tipados que no están sujetos a la recolección de basura de Java. Como resultado, son más rápidos de acceder que los objetos Java convencionales.

Otra supuesta ventaja de Hollow es que proporciona una gama de herramientas para trabajar con los datos. Una vez que haya definido un esquema para los datos, Hollow puede producir automáticamente una API de Java que puede proporcionar datos de autocompletado a un IDE. Los datos también se pueden rastrear a medida que cambian, por lo que los desarrolladores tienen acceso a instantáneas de un momento determinado, diferencias entre instantáneas y reversiones de datos.

Más rápido en todas partes

Muchas de las ventajas que Netflix afirma para Hollow implican una eficiencia operativa básica, es decir, un tiempo de inicio más rápido para los servidores y menos pérdida de memoria. Pero las herramientas de gestión y modelado de datos de Hollow también están destinadas a ayudar con el desarrollo, no simplemente a acelerar la producción.

“Imagine poder derivar rápidamente todo su conjunto de datos de producción, actual o de cualquier punto del pasado reciente, a una estación de trabajo de desarrollo local, cargarlo y luego reproducir exactamente escenarios de producción específicos”, dice Netflix en su entrada de blog introductoria.

Una advertencia es que Hollow no es adecuado para conjuntos de datos de todos los tamaños: "KB, MB y GB, pero no TB", es la forma en que la empresa lo incluye en su documentación. Dicho esto, Netflix también implica que Hollow reduce la cantidad de expansión que requiere un conjunto de datos en caché. "Con el marco adecuado y un poco de modelado de datos, ese umbral [de memoria] probablemente sea mucho más alto de lo que cree", escribe Netflix.