Сформированный в августе стартап Attic Labs, в который вошли разрабочики, ранее участвовавшие в работе над Google Chrome, Chrome OS и ECMAScript, представил первые результаты разработки новой децентрализованной СУБД Noms (http://noms.io/), в которой осуществлена попытка применения идей Git для организации хранения и совместной работы над большими коллекциями структурированных данных. Сформировано два рабочих прототипа Noms, написанных на языках Go и JavaScript и распространяемых (https://github.com/attic-labs/noms) под лицензией Apache 2.0.
Noms предоставляет пользователю типичные операции, свойственные Git, включая возможность контроля за версиями данных, создания форков БД, синхронизации изменений из разных БД, слияния БД и отслеживания истории изменений. СУБД автоматически сохраняет сведения о каждом изменении в БД, позволяет отменить его в случае необходимости или получить срез состояния на определённый момент времени.
Noms также может применяться для организации архивирования данных, для чего предусмотрена возможность периодической загрузки слепков состояния данных в любом формате. Поступающие подобным образом данные будут автоматически версионированы и дедуплицированы для повышения эффективности хранения. Проект пока находится на стадии рабочего прототипа, из запланированных, но ещё не реализованных возможностей, отмечаются сборщик мусора, система запросов, обеспечение распараллеливания операций и средства для автоматического слияния изменений.
Основные особенности (https://github.com/attic-labs/noms/blob/master/doc/intro.md) СУБД Noms:
- Адресация по содержимому: имеется только возможность добавления данных, операции обновления не поддерживаются. СУБД автоматически игнорирует добавление дубликатов и отслеживает изменения;- Работа в режиме только добавления (Append-only). Данные в хранилище не перезаписываются и не удаляются - изменения размещаются в режиме дополнения, а старое состояние данных сохраняется. Подобный подход позволяет отследить полную историю изменений, сравнить состояние на разных этапах существования БД и откатиться на позицию в прошлом;
- Хранение только типизированных данных: каждое значение, набор данных и версия БД имеет свой тип. Типы определяются автоматически при добавлении данных, вручную их определять не нужно;
- Децентрализация: можно создать копию БД, локально внести в неё изменения и вернуть эти изменения в основную БД, объединив с накопившимися с момента создания ответвления изменениями.
URL: https://news.ycombinator.com/item?id=12716254
Новость: http://www.opennet.me/opennews/art.shtml?num=45326
>возможность контроля за версиями данных, создания форков БД, синхронизации изменений из разных БД, слияния БД и отслеживания истории изменений.Ага, это так нужно для БД, что просто слов нет.
Давайте ещё хранить диффы. Точно. Гениальная идея! Пусть ещё курс форинта к навозу хранят. И погоду с отставанием в 693 месяца. Это тоже прикольно.
Если вы не можете найти этому применения, это не означает ненужность фичи.
У БД есть разные применения. Если для твоих задач такие фичи не нужны, а важна только производительность, то оно просто не для тебя, проходи мимо.
Да-да-да Любите Git,- он как Большая Советская Энциклопедия: вчера была на 196 странице статья "Берия", а сегодня - вырежем и вставим "Берингов пролив "!!
Using git to rewrite history is a sin © Paul Shadig
Чем ты занимаешься со своей копией репозитория никого не волнует.Что же вызывает у тебя такое недовольство?
Ты считаешь что занимаешься чем-то плохим?
Ты хочешь чтоб все интересовались твоими занятиями?
Создай страницу абсолютных указателей. И используй: абсолютный указатель 0x........
>>возможность контроля за версиями данных, создания форков БД, синхронизации изменений из разных БД, слияния БД и отслеживания истории изменений.
> Ага, это так нужно для БД, что просто слов нет.
> Давайте ещё хранить диффы. Точно. Гениальная идея!В нормальных базах данных это давным давно есть. Это штатная функциональность вообще то.
Например в Оракле.
С одной стороны, хотелось бы иметь альтернативу уродливому явлению под названием "репликация". С другой стороны, "имеется только возможность добавления данных, операции обновления не поддерживаются" - в моем случае это затопит всё свободное пространство.
> уродливому явлению под названием "репликация"Чем же для Вас репликация уродлива?
Тем, что она не работает нормально.
Вот и субд на JavaScript пишут... оно, небось, ещё тянет за собой Electron с Atom'ом?
Зачем тут Electron, тут нет же GUI. Реализация на JS нужна только для браузеров и людей, у которых мозг на JS написан. Реализация на Go — для обычного использования.
И у реализации на JS всего лишь 4 зависимости (очень мало).
> Вот и субд на JavaScript пишут... оно, небось, ещё тянет за собой
> Electron с Atom'ом?Сдаётся мне, что JavaScript там используется в качестве прикладного языка (вместо SQL реляционных баз). По мне, так лучше б Lua использовали.
Кажется где-то я уже видел <шепчет из-за угла: ПООООСТГРЕЕЕССС...ВАКУУМ...>
Всем весом да на кровавый волдырь... Ай-яй-яй!
когда уже перистанут писать на жс,жс быть не должно,вспомнити пример с нпм лефтпад,надо писать на си чтоб производильнось была а жс тормозит,почему другие это непонимают.
Загугли слово "прототип"
И как часто язык готового продукта отличается от использованного в прототипе?
Я не раз встречал, однако для точного ответа на вопрос "как часто" надо иметь статистику, которой скорее всего ни у кого нет.
Из примеров, что я с ходу вспомнил и что входило в дистрибутив debian как в виде прототипа на скриптовом языке, так и в переписанном на С виде:
cupt - альтернатива apt, первая версия на perl, вторая на С. Большая часть фич была уже в первой.
hardlinks - утилита для дедупликации файлов в дереве путем замены на хардлинки. Первая версия была на python и она тоже имела большую часть фич.
А ещё "прототипное наследование", когда один прототип делается на основе другого прототипа.
когда уже перестанут писать кому на чем писать
Когда уже перестанут писать?
Да, надо писать на си. А то как фсб или анб через уязвимость доступ получат?
> когда уже перистанут писать на жс,жс быть не должно,вспомнити пример с нпм
> лефтпад,надо писать на си чтоб производильнось была а жс тормозит,почему другие
> это непонимают.Вася! А ну-ка переделай модуль наведения ракеты, который ты на Ada пишешь! Там 5 багов обнаружили вчера, а ты тут по опеннетам шастаешь. И да, зайди ко мне, поговорим о премировании...
А мне нравится идея, как хранилище кластерной конфигурации, по типу corosync
Интересная штука. Возможно пригодится для Либгена и перспективных наработок по созданию Пиринговой Библиотеки, а то существующий у них способ распространения огромного sql файла с базой уж больно неудобен.
>СУБД Noms, основанная на идеях Git
>возможность контроля за версиями данных, создания форков БД, синхронизации изменений из разных БД, слияния БД и отслеживания истории измененийВопрос: что из перечисленного является оригинальной идеей гита? JS-хипстеры не знают других систем контроля версий?
Реализовать эти фичи можно очень по разному. Возможно их реализация основана на идеях _по реализации_ этих фич в git.
>> ранее участвовавшие в работе над Google Chrome, Chrome OS и ECMAScriptтут без JS никуда... :)
Вероятно как замена "традиционным" nosql базам не очень подойдет, но для p2p - это то, чего не хватало, отлично ложится на вики, которую легко задампить, на ZeroNet, где городили костыли с json записями, которые синхронизировались через битторрент, а потом собирались в sqlite кажется.
> для p2p - это то, чего не хваталоТак это ж не мозг!
> Вероятно как замена "традиционным" nosql базам не очень подойдет, но для p2p
> - это то, чего не хватало, отлично ложится на вики, которую
> легко задампить, на ZeroNet, где городили костыли с json записями, которые
> синхронизировались через битторрент, а потом собирались в sqlite кажется.Распределённая БД отлично подходит ещё и крупным распределённым компаниям.
К примеру сетям распространения (дилерским сетям) CocaCola: там, насколько я знаю, схема такая:
-Центральный офис
--региональные офисы
--региональные склады
или торговым сетям, вроде магнита, пятёрки, дикси:
-Центральный офис
--несколько распределительных центров (склады)
--тысячи магазинов.Плюсы: высокая отказоустойчивость и возможность разрешать конфликты обновления данных
(Аня и Варя редактируют один документ, пушат изменения, а потом старший бух Галя решает: какая версия правильная)
Я как-то не уяснил из текста новости: а в чём отличие от Git, кроме отсутствия сборщика мусора и shallow clone? И что ещё за типизированные данные?
Я как-то не сразу понял, что это NoSQL СУБД. Интересно, а для реляционной модели данных это возможно было бы сделать?
Есть уже такое. Avarda ERP называется. И Сделано в России (ТМ) =)
вот тут http://avarda.ru/menu95.htm, в самом конце страницы упомянута распределённая репликация.
Я когда-то хотел пойти в разработчики / консультанты, потому маны курил внимательно.
Система построена на Firebird, GUI пишут на Delphi, а для репликации запускается отдельная служба.
Так оно ж комерческое...
распределенные БД они не осилили или не открыли для себя еще?
даже фэйсбук - изредка носился то с касандрой то с другими БД(впрочем не лучшими из класса/типа, как правило).