| Elliptics | |
|---|---|
| Developer | Evgeniy Polakov withYandex support |
| Initial release | 2008; 17 years ago (2008) |
| Repository | |
| Written in | C++,Python,Go |
| Type | NoSQL |
| License | GNU Lesser General Public License |
| Website | www |
Elliptics is a distributed key–value data storage withopen source code. By default it is a classicdistributed hash table (DHT) with multiple replicas put in different groups (distributed hashes). Elliptics was created to meet requirements of multi-datacenter and physically distributed storage locations when storing huge amount of medium and large files (1 KB up to gigabytes in size, thousands to billions of objects).
Elliptics was created in 2007, initially as a part of POHMELFS,[1][2] acache coherentdistributed file system developed by Linux programmer Evgeniy Polyakov. POHMELFS was announced on January 31, 2008,[3] and merged into the staging area of theLinux kernel source tree in version 2.6.30, released June 9, 2009. The filesystem went practically unused and was removed again in February 2012.[4]
In 2008 Elliptics separated as an independent project. Polyakov tried different approaches to distributed data storage systems, some of them were not suitable because of their complexity and some of them were too far from a real-life (BerkeleyDB,LevelDB,Kyoto Cabinet backends for medium and big files, different datacenters in a single DHT ring, non eventual recovery).Elliptics is eventually consistent system with multiple updated in parallelreplicas potentially living in physically distributed locations. Elliptics contains multiple layers from low-level on-disk store (named Eblob) up to SLRU caches and dynamic routing protocol.[5]
In 2012, Polyakov announced a new version of POHMELFS based on Elliptics.[4]
As of 2014, Elliptics is used inYandexMaps, Disk, Music, Photos, Market and infrastructure,[6]Sputnik search engine andCoub.
By default, Elliptics forms a distributed hash table in single group (a replica). Group may contains one or many servers as well as physical server can contain multiple elliptics groups (replicas) stored on different backends. Groups can live in different physical locations thus allowing to serve clients' requests when other locations are not accessible. Apeer-to-peer (P2P) protocol can be used to access data directly from storage servers without proxying. Elliptics supports server-side scripting inC++,JavaScript,Python, based on theCocaine technology, SLRU cache and multiple pluggable backends (eblob is the fastest for medium and large data and the most popular one).
Elliptics clients connect directly to all storage servers which helps to:
There are severalapplication programming interfaces (APIs) for data access:
Elliptics and its supporting projects are being documented at communitywikiArchived 2020-01-21 at theWayback Machine. It contains high-level design docs, tutorial, low-level details and knowledge base. Elliptics and related projects are discussed in open Googlegroup.