Elliptics es un sistema de almacenamiento de datos distribuidos de clave-valor con código fuente abierto . De forma predeterminada, es una tabla hash distribuida (DHT) clásica con múltiples réplicas ubicadas en diferentes grupos (hashes distribuidos). Elliptics se creó para satisfacer los requisitos de ubicaciones de almacenamiento distribuidas físicamente y con múltiples centros de datos cuando se almacenan grandes cantidades de archivos medianos y grandes (de 1 KB a gigabytes de tamaño, de miles a miles de millones de objetos).
Elliptics fue creado en 2007, inicialmente como parte de POHMELFS, [1] [2] un sistema de archivos distribuido coherente con caché desarrollado por el programador de Linux Evgeniy Polyakov. POHMELFS fue anunciado el 31 de enero de 2008, [3] y se fusionó con el área de ensayo del árbol de fuentes del núcleo de Linux en la versión 2.6.30, lanzada el 9 de junio de 2009. El sistema de archivos prácticamente no se utilizó y fue eliminado nuevamente en febrero de 2012. [4]
En 2008, Elliptics se separó como un proyecto independiente. Polyakov probó diferentes enfoques para los sistemas de almacenamiento de datos distribuidos, algunos de ellos no eran adecuados debido a su complejidad y algunos de ellos estaban demasiado lejos de la vida real ( BerkeleyDB , LevelDB , Kyoto Cabinet backends para archivos medianos y grandes, diferentes centros de datos en un solo anillo DHT, recuperación no eventual). Elliptics es finalmente un sistema consistente con múltiples réplicas actualizadas en paralelo que potencialmente viven en ubicaciones distribuidas físicamente. Elliptics contiene múltiples capas desde el almacenamiento en disco de bajo nivel (llamado Eblob) hasta cachés SLRU y protocolo de enrutamiento dinámico. [5]
En 2012, Polyakov anunció una nueva versión de POHMELFS basada en elípticas. [4]
A partir de 2014, Elliptics se utiliza en Yandex Maps , Disk, Music, Photos, Market and Infrastructure, [6] el motor de búsqueda Sputnik y Coub .
De forma predeterminada, Elliptics forma una tabla hash distribuida en un solo grupo (una réplica). El grupo puede contener uno o varios servidores, así como el servidor físico puede contener varios grupos de Elliptics (réplicas) almacenados en diferentes backends. Los grupos pueden residir en diferentes ubicaciones físicas, lo que permite atender las solicitudes de los clientes cuando no se puede acceder a otras ubicaciones. Se puede utilizar un protocolo peer-to-peer (P2P) para acceder a los datos directamente desde los servidores de almacenamiento sin proxy. Elliptics admite la creación de scripts del lado del servidor en C++ , JavaScript , Python , basándose en la tecnología Cocaine , la caché SLRU y varios backends conectables (eblob es el más rápido para datos medianos y grandes y el más popular).
Los clientes de Elliptics se conectan directamente a todos los servidores de almacenamiento, lo que ayuda a:
Existen varias interfaces de programación de aplicaciones (API) para el acceso a datos:
Elliptics y sus proyectos de apoyo se documentan en la wiki de la comunidad Archivado el 21 de enero de 2020 en Wayback Machine . Contiene documentación de diseño de alto nivel, tutorial, detalles de bajo nivel y base de conocimientos. Elliptics y los proyectos relacionados se discuten en un grupo abierto de Google.