Spostati su Memcached e Redis, ecco che arriva Hollow di Netflix

Dopo due anni di utilizzo interno, Netflix offre un nuovo progetto open source come potente opzione per memorizzare nella cache set di dati che cambiano costantemente.

Hollow è una libreria e un set di strumenti Java finalizzati alla memorizzazione nella cache di set di dati di dimensioni fino a diversi gigabyte. Netflix afferma che lo scopo di Hollow è triplice: è pensato per essere più efficiente nell'archiviazione dei dati; può fornire strumenti per generare automaticamente API per un comodo accesso ai dati; e può analizzare automaticamente i modelli di utilizzo dei dati per una sincronizzazione più efficiente con il back-end.

Teniamolo tra noi

La maggior parte degli scenari per la memorizzazione nella cache dei dati su un sistema in cui non sono archiviati, un sistema "consumer" piuttosto che un sistema "produttore", comportano l'utilizzo di un prodotto come Memcached o Redis. Hollow ricorda entrambi i prodotti poiché utilizza l'archiviazione in memoria per un accesso rapido, ma non è un vero e proprio archivio dati come Redis.

A differenza di molti altri sistemi di memorizzazione nella cache dei dati, Hollow è progettato per essere accoppiato a un set di dati specifico: un determinato schema con determinati campi, in genere un flusso JSON. Ciò richiede un po 'di lavoro di preparazione, sebbene Hollow fornisca alcuni strumenti per automatizzare parzialmente il processo. Il motivo per farlo: Hollow può memorizzare i dati in memoria come blocchi di lunghezza fissa e fortemente tipizzati che non sono soggetti alla garbage collection di Java. Di conseguenza, sono più veloci da accedere rispetto agli oggetti Java convenzionali.

Un altro presunto vantaggio di Hollow è che fornisce una gamma di strumenti per lavorare con i dati. Dopo aver definito uno schema per i dati, Hollow può produrre automaticamente un'API Java in grado di fornire dati di completamento automatico a un IDE. I dati possono anche essere monitorati man mano che cambiano, in modo che gli sviluppatori abbiano accesso a istantanee temporali, differenze tra istantanee e rollback dei dati.

Tutto più veloce

Molti dei vantaggi che Netflix rivendica per Hollow riguardano l'efficienza operativa di base, vale a dire, tempi di avvio più rapidi per i server e meno abbandono della memoria. Ma gli strumenti di modellazione e gestione dei dati di Hollow sono pensati anche per aiutare con lo sviluppo, non semplicemente per accelerare la produzione.

"Immagina di essere in grado di trasferire rapidamente l'intero set di dati di produzione, attuale o da qualsiasi punto del recente passato, a una workstation di sviluppo locale, caricarlo e quindi riprodurre esattamente scenari di produzione specifici", afferma Netflix nel suo post sul blog introduttivo.

Un avvertimento è che Hollow non è adatto per set di dati di tutte le dimensioni: "KB, MB e GB, ma non TB", è il modo in cui l'azienda lo inserisce nella sua documentazione. Detto questo, Netflix implica anche che Hollow riduce la quantità di sprawl richiesta da un set di dati memorizzati nella cache. "Con il giusto framework e un po 'di modellazione dei dati, quella soglia [di memoria] è probabilmente molto più alta di quanto pensi", scrive Netflix.