Эллиптика - Elliptics

Эллиптика
ӘзірлеушілерЕвгений Полаков Yandex қолдау
Бастапқы шығарылым2008; 12 жыл бұрын (2008)
Репозиторий Мұны Wikidata-да өңдеңіз
ЖазылғанC ++, Python, Барыңыз
ТүріNoSQL
Веб-сайтwww.арқа ми.com

Эллиптика - деректердің кілт-мәні бойынша бөлінген сақтау орны ашық ақпарат көзі код. Әдепкіде бұл классика таратылған хэш-кесте (DHT) әр түрлі топтарға салынған бірнеше көшірмелермен (үлестірілген хэштер). Эллиптика орта және үлкен көлемді файлдарды сақтау кезінде көп деректер орталығы мен физикалық бөлінген сақтау орындарының талаптарын қанағаттандыру үшін жасалған (өлшемі 1 килобайтқа дейін, гигабайтқа дейін, мыңдаған объектілерге дейін).

Тарих

Эллиптика 2007 жылы құрылған, бастапқыда POHMELFS құрамында,[1][2] а кэш келісімді таратылған файлдық жүйе Linux бағдарламашысы Евгений Поляков әзірлеген. POHMELFS 2008 жылдың 31 қаңтарында жарияланды,[3] қойылым аймағына біріктірілді Linux ядросы 2009 жылғы 9 маусымда шыққан 2.6.30 нұсқасындағы түпнұсқа ағаш. Файлдық жүйе іс жүзінде қолданылмады және 2012 жылдың ақпанында қайта жойылды.[4]

2008 жылы эллиптика тәуелсіз жоба ретінде бөлінді. Поляков мәліметтерді сақтау жүйелеріне әртүрлі тәсілдерді қолданып көрді, олардың кейбіреулері күрделілігіне байланысты, ал кейбіреулері өмірден тым алыс болды (BerkeleyDB, LevelDB, Киото кабинеті Эллиптика ақырында жүйеге сәйкес келеді, бірнеше рет параллель жаңартылады. көшірмелер физикалық бөлінген жерлерде ықтимал өмір сүру. Эллиптика дискідегі төменгі деңгейден (Eblob деп аталатын) SLRU кэштеріне дейін және динамикалық маршруттау хаттамасына дейінгі бірнеше қабаттарды қамтиды.[5]

2012 жылы Поляков POHMELFS-тің Эллиптикаға негізделген жаңа нұсқасын жариялады.[4]

2014 жылдан бастап Эллиптика қолданылады Yandex Карталар, Диск, музыка, фотосуреттер, нарық және инфрақұрылым,[6] Sputnik іздеу жүйесі және Coub

Сәулет

Әдепкі бойынша, Эллиптика бір топта (реплика) бөлінген хэш кестені құрайды. Топта бір немесе бірнеше серверлер болуы мүмкін, сонымен қатар физикалық серверде әр түрлі артқы жағында сақталған бірнеше эллиптикалық топтар (репликалар) болуы мүмкін. Топтар әртүрлі физикалық жерлерде өмір сүре алады, осылайша басқа орындарға қол жетімді болмаған кезде клиенттердің сұраныстарын орындауға мүмкіндік береді. A пиринг жүйесі (P2P) протоколы деректерді прокси-серверсіз сақтау серверлерінен тікелей қатынасу үшін пайдалануға болады. Эллиптика сервер жағында сценарийді қолдайды C ++, JavaScript, Python, негізінде Кокаин технологиясы, SLRU кэші және бірнеше қосылатын backends (eblob орташа және үлкен деректер үшін ең жылдам және ең танымал болып табылады).

Эллиптика клиенттері барлық сақтау серверлеріне тікелей қосылады, бұл көмектеседі:

  • Орындау іздеу O (1) желілік сұраныстарда (реплика бойынша бірыңғай желі сұрауы)
  • Жазу / жаңарту командаларын қатар бірнеше репликаларға қосыңыз

Бірнеше бағдарламалық интерфейстер Деректерге қол жеткізу үшін (API):

  • Асинхронды мүмкіндік-уәде C ++ кітапхана
  • Python міндетті
  • Барыңыз міндетті
  • HTTP-прокси аталды Рифт TheVoid кітапханасына негізделген шелектермен және ACL-мен (boost :: asio пайдалану арқылы)
  • Қоғамдастық басқарады Эрланг байланыстыру

Ерекшеліктер

  • Таратылған хэш кестелер, метадеректер серверлері жоқ, шын көлденең масштабтау
  • Деректердің репликациясы - репликалар әртүрлі физикалық жерлерде сақталуы мүмкін
  • Ауқымды және жаппай сұраныстар
  • Әр түрлі енгізу-шығару сақтық көшірмелері, өзінің төменгі деңгейлі сақтау артын құру үшін API
  • Жойылған немесе қосылған түйіндер жағдайында деректерді автоматты түрде қайта бөлу
  • Ақырында тұрақты қалпына келтіру
  • Хэштеудің тұрақты моделі
  • Кластерлік статистика
  • Frontend: HTTP; байланыстыру: C /C ++, Барыңыз, Python
  • Серверлік сценарийдің орындалуын қолдау (аналогты триггер жазу)
  • TTL бар таратылған SLRU кэші
  • P2P ағындық қолдауы (тек eblob және файлдардың артқы жағы - сыртқы қосымшалар сияқты Nginx веб-сервер деректерді eblob нысаны файлдарынан тікелей клиенттерге прокси жасамай жібере алады)

Мәселелер мен шектеулер

  • Ақыр соңында бірізділік. Эллиптика төтенше жағдайда толығымен таратылғандықтан, сервер нақты көшірмеден ескі файл көшірмесін қайтара алады. Кейде бұл қолайсыз болуы мүмкін. Мұндай жағдайларда уақытты жоғалтуға байланысты деректерді сұраудың сенімді тәсілдерін қолданған дұрыс.
  • Клиент пен серверлер арасындағы желі әлсіз нүктеге айналуы мүмкін, өйткені мәліметтер бірнеше серверлерде қатар жазылады.
  • Жоғары деңгейлі сұраныстар үшін API ыңғайсыз болуы мүмкін. Эллиптика өз қолданушыларын SQL-ге ұқсас мәліметтер сұраныстарымен қамтамасыз етпейді.
  • Эллиптикада транзакциялардың жоғары деңгейлі қолдауы жоқ, сондықтан командалық топтың толық орындалуына немесе мүлдем орындалмайтындығына кепілдік беру мүмкін емес.
  • Транзакциялар тек топ ішінде атомдық болып табылады және негізгі кілт негізінде құлыпталады.

Құжаттама

Эллиптика және оны қолдайтын жобалар қоғамда құжатталуда уики. Онда жоғары деңгейлі дизайн құжаттары, оқулық, төмен деңгейлі мәліметтер және білім қоры бар. Эллиптика және онымен байланысты жобалар ашық Google-да талқыланады топ.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ «POHMELFS: жаңа, бірақ ескі таратылған Linux файлдық жүйесі - Phoronix». www.phoronix.com. Алынған 8 мамыр 2017.
  2. ^ «POHMELFS қайтарады [LWN.net]». lwn.net. Алынған 8 мамыр 2017.
  3. ^ «Кіру 2008.01.31». Архивтелген түпнұсқа 6 қазан 2008 ж. Алынған 8 мамыр 2017.
  4. ^ а б Евгений Поляков (8 ақпан 2012). «pohmelfs: қосылуға шақыру».
  5. ^ «Как устроены облака Яндекса: Эллиптика». Алынған 8 мамыр 2017.
  6. ^ «Эллиптика - Yandex Technologies». api.yandex.com. Алынған 8 мамыр 2017.

Сыртқы сілтемелер