The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Представлена новая NoSQL БД Hibari, созданная для больших хранилищ данных

30.07.2010 13:22

Японская компания Gemini Mobile Technologies представила новую свободную нереляционную БД Hibari, предназначенную для организации сверхбольших распределенных хранилищ данных, представленных в формате ключ-значение. Код Hibari написан на языке Erlang и распространяется в рамках лицензии Apache. В качестве наиболее типичных областей применения Hibari называются крупные web-mail системы, социальные сети, системы ведения архивов, службы хранения логов операторов связи и другие сервисы, в которых необходимо хранить терабайты и петабайты поступающих ежедневно данных.

API для доступа к данным в Hibari доступно для языков Java, C/C++, Python, Ruby и Erlang. В настоящий момент подготовлены модули эмуляции API Amazon S3, JSON-RPC-RFC4627 и UBP (Universal Binary Protocol), что позволяет использовать БД с типовыми приложениями, написанными для уже существующих стандартных сервисов хранения. В будущем планируется обеспечить поддержу интерфейсов Thrift, Avro и Google Protocol Buffers, а также подготовить прослойку для интеграции с базирующемся на парадигме Map-Reduce проектом Hadoop. Модель данных в Hibari поддерживает пять основных атрибутов: уникальные ключи, сопоставленные с ключами наборы данных, время доступа к данным, срок хранения данных и набор флагов для хранения мета-данных.

Проект Hibari несмотря на первый выпуск имеет стабильную кодовую базу, так как основан на разработках, подготовленных для проприетарной промышленной БД HyperScale Cloud Database. Из достоинств новой БД называется высокая экономическая эффективность (способность работы на обычном недорогом оборудовании), гибкость конфигурации, линейная масштабируемость, высокая производительность, обеспечение гарантированной целостности и непротиворечивости данных, устойчивость к сбоям благодаря дублированию информации на несколько узлов, работа в неблокирующем режиме, автоматическая ребалансировка данных внутри кластера, возможность изменения конфигурации кластера на лету.

В соответствии с CAP-теоремой Эрика Брюэра, распределенное хранилище может соответствовать только двум из трех требований: обеспечение непротиворичивости хранилища в целом, высокая надежность (устойчивость к сбоям) и способность продолжать работу в случае раскола кластера хранения (нарушения связности узлов). БД Hibari удовлетворят первому и второму условию теоремы.

Непротиворечивость данных внутри кластера обеспечивается благодаря использованию технологии репликации цепочек (chain replication), подразумевающей автоматическое последовательное реплицирование блоков данных на три типа узлов внутри "цепочки": голонвой, средний и хвостовой накопитель. Полная согласованность хранимых данных достигается благодаря тому, что все операции записи всегда инициируются только с головного накопителя, а все операции чтения - только с хвостового накопителя. В случае краха узла, другой узел автоматически возьмет на себя нагрузку и роль вышедшего из строя узла (например, в случае сбоя головного накопителя, его место занимает средний, а новый средний формируется в фоне на другом узле кластера).



  1. Главная ссылка к новости (http://www.geminimobile.com/ne...)
  2. OpenNews: Первый стабильный релиз БД Apache CouchDB 1.0.0
  3. OpenNews: Введение в систему обмена сообщениями ZeroMQ
Лицензия: CC-BY
Тип: Интересно / К сведению
Ключевые слова: NoSQL, database, Hibari
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (25) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, AlexGor (??), 13:59, 30/07/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    судя по описанию - вполне приличная хибара.
     
  • 1.2, mine (?), 14:34, 30/07/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    > высокая производительность

    Это на эрланге-то??? В виртуальной машине? Ха-ха-ха-ха!

     
     
  • 2.3, k.bxya.ru (?), 14:42, 30/07/2010 [^] [^^] [^^^] [ответить]  
  • +8 +/
    О господи, да открой ты уже для себя мир оптимизации на более высоком уровне нежели ассемблер.
     
     
  • 3.5, аноним (?), 15:10, 30/07/2010 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Оптимизация тут не при чем. Тут неустранимый оверхед ненативного кода.
     
     
  • 4.13, Mamut (??), 16:59, 30/07/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    При чем тут оверхед? У Erlang'а — soft realtime безо всякого оверхеда. Плюс плюшки по созданию именно распределенных приложений.

    Можно только повториться:

    «
    да открой ты уже для себя мир оптимизации на более высоком уровне нежели ассемблер.
    »

    и

    «
    Народ, когда вы перестанете все примерять к своему "ноутбуку"? Это решение преследует несколько другие цели и масштабы.
    Если так ограничены во взглядах, то не надо каждый раз это показывать.
    »

     
     
  • 5.15, User294 (ok), 19:27, 30/07/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > У Erlang'а — soft realtime безо всякого оверхеда.

    А как реалтаймность связана с быстродействием вообще? oO

     
     
  • 6.17, sashka_ua (?), 00:48, 01/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Скорей всего он имел ввиду, что это возможно и реализовано, поэтому о оверхеде здесь можно не говорить.

    С.

     
     
  • 7.18, User294 (ok), 12:31, 01/08/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не вижу как одно связано с другим. Предсказуемость времени реакции ("реалтайм") - одно. Производительность - другое. Скажем мелкий 8-лапый "таракан" (микроконтроллер) может среагировать на внешнее событие гораздо быстрее писюка, при том с точностью до тактов и команды выполняются всегда за одинаковое время (кеша нет, память на полной скорости CPU). Т.е. ему по зубам даже "жесткий" реалтайм, когда время реакции всегда одинаковое и строго определенное (у x86 будет некий джиттер времен реакции на события за счет кеша и прочая). А вот производительность 8-битника на его паре десятков мегагерцев - понятно какая, да? Вот я и не догоняю - как они взаимосвязаны :). Более того - я не догоняю как можно гарантировать реалтайм не рассмотрев хотя-бы систему на которой это запущено. А то если у вашей задачи ядро системы отберет время вот сейчас на 10 мс а через полчаса на 100мс - это реалтайм будет или нет? :)
     
     
  • 8.26, Mamut (??), 10:37, 03/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален Я не говорил про hard realtime, а про soft realtime Ссы... текст свёрнут, показать
     
     
  • 9.27, User294 (ok), 21:00, 03/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Мне просто не понятно - как реалтаймность вообще коррелирует с производительност... текст свёрнут, показать
     
     
  • 10.29, Mamut (??), 09:45, 04/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Не обязательно В общем, достаточно взять Erlang в руки и посмореть почитать ... текст свёрнут, показать
     
  • 5.23, аноним (?), 00:06, 03/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >При чем тут оверхед? У Erlang'а — soft realtime безо всякого оверхеда.

    При чем здесь нахрен realtime? Без оверхеда - грязная ложь, он выполняется виртуальной машиной, а это всегда оверхед. У тебя на ноутбуке оно может и работает, а я не собираюсь покупать лишние сервера на то что мне не нужно - а именно, интерпретацию байткода. Есть замечательные параллельные БД на нормальных языках.

     
     
  • 6.24, Mamut (??), 10:33, 03/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>При чем тут оверхед? У Erlang'а — soft realtime безо всякого оверхеда.
    >
    >При чем здесь нахрен realtime? Без оверхеда - грязная ложь, он выполняется
    >виртуальной машиной, а это всегда оверхед. У тебя на ноутбуке оно
    >может и работает, а я не собираюсь покупать лишние сервера на
    >то что мне не нужно - а именно, интерпретацию байткода. Есть
    >замечательные параллельные БД на нормальных языках.

    Берется в руки мозг, если он есть и начинает читаться про:
    - ejabberd
    - facebook chat
    - basecamp chat
    - mochiads/mochiweb
    - riak
    - couchdb


    ну или вообще хотя бы про Erlang.


    Почему-то народ, переходя на Erlang с «нормальных» языков уменьшает количество серверов, а не увеличивает их.

     
     
  • 7.28, User294 (ok), 21:07, 03/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Почему-то народ, переходя на Erlang с «нормальных» языков уменьшает количество серверов,

    Может быть, дело в том что сервера были задизайнены дурно/неоптимально? А то почему-то переход с своеобразного опача на допустим лайти или нжинкс тоже количество серверов может уменьшить весьма некисло. А все отличие - сугубо в логике работы сервера. Одно форкает по процессу на юзера, что ессно жрет дофига ресурсов, особенно неоптимально сие на статике. Другое реализует машины состояний, которым количество юзеров не особо критично. А, извините, какойнить ircd писаный на голых сях - легко обслужит групчат с многими тыщщами юзеров на ископаемом железе вообще. Заметьте, сожрав в разы меньше ресурсов и траффика чем ejabberd для той же задачи (это правда частично заслуга самого протокола жаббер сделанного понятно как).

    P.S. я не пытаюсь сказать что "эрланг - плохо". Я не имею ничего против эрланга. Тем не менее, если вы беретесь доказывать его крутизну - доказывайте убедительно и будьте готовы что аргументы проверят/оспорят :P.

     
     
  • 8.30, Mamut (??), 09:47, 04/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А может быть дело в том, что Erlang оптимизирован именно для распределенных сист... текст свёрнут, показать
     
  • 2.7, thirteensmay (?), 15:16, 30/07/2010 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Производительность распределенных систем сильно зависит именно от распределенности - организации фрагментации и управления ею, производительность отдельных узлов отходит на второй план.
     
  • 2.11, Lefan (?), 15:48, 30/07/2010 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Народ, когда вы перестанете все примерять к своему "ноутбуку"? Это решение преследует несколько другие цели и масштабы.
    Если так ограничены во взглядах, то не надо каждый раз это показывать.
     
     
  • 3.22, аноним (?), 00:04, 03/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А почему ты думаешь что ты самый умный и знаешь кто куда это решение примеряет?
     

  • 1.4, thirteensmay (?), 15:01, 30/07/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чтото последнее время эта CAP-теорема на каждом шагу, я вот только одного понять не могу, может кто прояснит, в соответствии с ней:

    "обеспечение непротиворичивости хранилища в целом"

    возможно одновременно с

    "способность продолжать работу в случае раскола кластера хранения (нарушения связности узлов)"

    это как ?

     
     
  • 2.6, аноним (?), 15:10, 30/07/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Да не обращайте на нее внимания, бред это, а не теорема.
     
  • 2.8, Aleksey (??), 15:22, 30/07/2010 [^] [^^] [^^^] [ответить]  
  • +/
    В это время база не работает и получаем нарушение второго требования "высокая надежность (устойчивость к сбоям)", т.е. как и предсказывалось.
     
     
  • 3.21, thirteensmay (?), 22:43, 01/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    т.е. база не работает уже при двух требованиях ?
     
     
  • 4.25, Mamut (??), 10:33, 03/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >т.е. база не работает уже при двух требованиях ?

    Нет. Это означает, что база не выполняет третье требование

     
  • 2.10, Аноним (-), 15:32, 30/07/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Непротиворечивость не значит доступность всех данных. Например, два условия сохраняются когда в кластере хранится только одна копия данных, без дублирования на несколько узлов. Так как при изменении данных другие узлы не затронуты гарантируется непротиворечивость.

    Заменяя требование о непротиворечивости на отказоустойчивость получаем дублирование данных на несколько узлов, но вот гарантировать, что во время чтения данных с одного узла они уже не успели измениться на другом не получится.

     
     
  • 3.12, thirteensmay (?), 15:54, 30/07/2010 [^] [^^] [^^^] [ответить]  
  • +/
    тогда получается что все данные должны лежать на одном узле, это уже не распределенная система, либо от функциональности остаются рожки да ножки, т.е. можно работать только с тем что доступно "локально" целостно и не продублировано, опять не распределенная система получается.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру