litetree

LiteTree- быстрый разветвленный механизм для баз данных

размещено в: Без рубрики | 4

LiteTree- быстрый разветвленный механизм для баз данных.

Сегодня я продолжаю знакомить вас с проектом AERGO, команда разработчиков которого в настоящее время разрабатывает принципиально новый блокчейн. Я уже описывал этот проект в статье: AERGO- революционный блокчейн 4.0 и в обзорах на Steemit и Голос. AERGO- это инфраструктурный проект, объединяющий разработчиков программных продуктов на базе AERGO Chain, блокчейн-хостинга Aergo Hub, и AERGO Marketplace для торговли разработками.

В этом обзоре я публикую перевод статьи, которую написал Hunyoung Park — член правления Фонда AERGO и технический директор компании Blocko Inc, под названием Запускаем LiteTree: быстрый, разветвленный механизм базы данных. Открытое блокчейн решение для более чем 8.5M SQL-разработчиков.

Новые фреймверки и языки программирования, внедряемые вместе с новыми технологиями, такими как blockchain, сложно понять. Одним из примеров является Solidity: язык смарт-контрактов на самой распространенной платформе для децентрализованных приложений Ethereum. С помощью Solidity разработчики могут писать приложения, используя самодостаточную бизнес-логику, которая прописана в смарт-контрактах, и неопровержимо фиксируется в записи транзакции.

Solidity позволил воплотить в жизнь уникальные новые приложения, работающие на распределенных архитектурах. Но его сложность и новизна для большинства разработчиков программных решений, ограничивает развитие и разработку децентрализованных приложений, которая ведется лишь небольшой группой преданных евангелистов.

В настоящий момент, во всем мире, насчитывается примерно 18 миллионов квалифицированных разработчиков программного обеспечения. Менее 1% из них создают программные продукты с использованием Solidity. Привыкшие к знакомым языкам программирования, большинство разработчиков не обладают гибкостью и неохотно используют новые языки. Компании часто используют подрядчиков, работающих удаленно, для выполнения ИТ-проектов. Многие из этих подрядчиков не готовы изучать новые языки программирования для выполнения проектов. Мы считаем, что неразумно полностью полагаться на сторонних исполнителей для написания и кодирования важной бизнес-логики и алгоритмов блокчейн цепи.

Чтобы достичь массового применения, процесс разработкии программирования блокчейн-решений должен быть максимально простым и понятным.

Все это можно реализовать за счет использования существующих решений и опыта разработчиков в знакомых инструментах разработки. Наша цель- сделать это возможным при помощи платформы AERGO, ускорить развитие технологии блокчейн, и вывести ее на глобальный рынок. Для достижения этой цели мы представляем сложный набор SDK, IDE, ориентированный на развертывание приложений, которые используются более чем в 23 коммерческих частных блокчейнах в Blocko.

Мы также вводим язык, который многие считают старым и скучным; SQL, чтобы более чем 8 500 000 разработчиков SQL смогли разрабатывать блокчейн-решения. С этой целью наша команда разработчиков R & D в Бразилии создала мощный движок SQLite, который мы включим в набор функциональных возможностей AERGO, чтобы открыть разработку приложений и кода blockchain для массового рынка.

Представляем LiteTree

Представьте, что вы можете иметь несколько подключений к одной базе данных, причем каждое соединение считывает отдельную ветвь или фиксирует их одновременно. Представьте себе единую базу данных с каждым подключением, написанным для полностью автономных ветвей. Это все возможно благодаря новому инструменту, который представил один из наших разработчиков из Бразилии- Бернардо Рамос, специалист с 20 летним опытом разработки программного обеспечения и управления реляционными базами данных.

Мы с гордостью представляем наш первый из многих запланированных проектов с открытым исходным кодом: LiteTree, быстрый движок SQLite с возможностью разветвления. LiteTree вызвал значительный интерес и очень хорошо зарекомендовал себя среди сообщества разработчиков, мы открыли его исходный код на GitHub для всех. Наша разработка держалась в течение нескольких часов на первом месте в Hacker News; она стала горячей темой в Hackaday, и была высоко оценена на OpenNET. Инновации и вклад LiteTree в open-source признаны и очевидны, так как этим продуктом, на момент написания статьи, заинтересовались более 1250 человек на GitHub.

В LiteTree есть два основных преимущества:

  • Разветвление: в потоке Git-типа LiteTree позволяет разработчикам разворачивать данные на основе SQL
  • Скорость: LiteTree работает быстро; в два раза быстрее, чем исходное программное обеспечение SQLite для чтения и редактирования записей.

LiteTree позволяет хранить несколько версий одной базы данных, благодаря чему каждое разветвление может продолжать разработку и обновление в независимом режиме. Это означает, что пользователь может получить доступ к базе данных через многочисленные точки входа, каждая из которых связана с конкретным разветвлением в базе данных. LiteTree более чем в два раза быстрее, чем SQLite, при работе на Linux и MacOSX, и реализуется путем хранения страниц базы данных SQLite на LMDB.

Ниже мы объясним, почему и как мы развиваем этот продукт для использования в Blocko, и какую роль он будет играть в протоколе AERGO, который мы планируем запустить в следующем году.

Coinstack

Несколько месяцев назад команда разработчиков Blocko предоставила функциональную возможность восстановления времени на основе SQL в Coinstack, нашем полнофункциональном блокчейн-продукте, развернутом в более чем 23 корпоративных решениях. Эта функция восстановления времени может обеспечить функцию отката базы данных для блокировки при реорганизации блоков. После долгих обсуждений, мы пришли к выводу, что будет очень полезно продемонстрировать это решение в Coinstack. Мы начали с использования LiteReplica, модифицированного SQLite-механизма для репликации базы данных, чтобы предоставить в Coinstack эту функцию базы данных.

Но что именно происходит в момент восстановления? См. Рисунок 1 в качестве примера, чтобы сделать его более понятным.

 

aergo-litetree

Рисунок 1. Откат с хранилищем на основе SQL для блочной цепи (время восстановления по времени)

 

Предположим, что блок может иметь ноль или более транзакций контракта. Если блок успешно подключен к самой длинной цепочке, он оставляет одну фиксацию в соответствующем хранилище SQL для каждой транзакции контракта. Эта фиксация содержит все обновления контрактных транзакций. Блок содержит точки фиксации, связанные с хранилищем базы данных SQL. Точка фиксации контракта, которая не была обновлена, является той же точкой фиксации предыдущего блока.

На рис.1, лучшим исходным блоком является блок 103. Если новые блоки принимаются от блока 101 до блока 110, блок-цепочка должна быть отброшена назад к блоку 100. После этого точка фиксации контракта A является фиксацией 1 и точкой фиксации контракта B является фиксацией 8. Откат базы данных контракта B для фиксации точки 8 может привести к тому, что его хранилище SQL соответствует блоку 100.

Благодаря своевременному восстановлению мы эффективно можем беспрепятственно выполнять транзакции новых блоков. Мы реализовали эту функцию на нашей платформе Coinstack, и клиенты смогли извлечь выгоду из нее во многих различных случаях использования.

На протяжении нескольких месяцев мы без остановки создаем AERGO. В отличие от Coinstack, в AERGO исходный код будет полностью открыт, и основная блокчейн-цепочка будет публичной. По этой причине мы обнаружили, что хотим активней сотрудничать с разработчиками, чем в Coinstack. Мы решили включить подобные функции, чтобы платформа стала понятна и доступна более широкому сообществу инженеров баз данных, знакомых с такими языками, как SQL.

AERGO

Наша миссия- создание платформы с открытым исходным кодом, пригодной для массового использования. Мы планируем обеспечить поддержку SQL в блокчейне несколькими способами. Наш план состоит из двух основных шагов:

  • Предоставление функциональных возможностей баз данных в AERGO: разрешение опроса данных и кодификация функций будущей совместимости через SQL
  • Смарт-контракты на основе SQL: поддержка синтаксиса и семантики на основе SQL в кодировании смарт-контрактов

 

Реализация блока LiteTree в блокчейне выполнена включением в блокчейн сложных функциональных возможностей баз данных. Это обеспечивает  удобный механизм обработки данных в блоках с большими функциональными возможностями взаимодействия, по сравнению с привычной системой хранения данных на основе ключа / значения.

 

1. Управление хранением базы данных для цепочки AERGO

LiteTree позволяет использовать функциональные возможности реляционной базы данных в регистре, чтобы обеспечить возможность реорганизации и отката блоков посредством момента восстановления по времени. AERGO LiteTree позволит производить работу быстрее, чем при помощи LiteReplica, которое реализовано в проекте Coinstack от Blocko.

На рисунке 2  хранилище на основе SQL управляется с использованием LiteTree. Хранилище SQL может хранить структурированные данные и доступно через SQL. Для каждого контракта есть только одно хранилище SQL.

 

 LiteTree aergo

Рисунок 2: Пример того, как LiteTree будет использоваться в блокчейне

 

Разветвление LiteTree на AERGO: в LiteTree помимо надежных функций сверхбыстрого SQLite-движка представлена дополнительная возможность разветвления. Этот функционал мы изначально планировали использовать в нашей n-уровневой архитектуре на AERGO. Первоначально мы планировали предоставлять Git-подобные ветви в блок-цепочке как часть решения для параллельного распараллеливания, а реализация LiteTree позволит управлять реляционными базами данных в филиалах (описанных в нашем техническом документе). Однако с тех пор мы изменили план использования хранилища баз данных протокола 1-го уровня. Это означает, что изначально разработанная нами функциональность разветвления для LiteTree не будет использоваться. Мы активно занимаемся исследованиями и будем информировать наше техническое сообщество о том, как разветвление на уровне хранения будет использовано в AERGO.

 

2. Многорежимный параллелизм — Управление состоянием в соответствии с блоками

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

SQL на основе смарт-контрактов

Поддержка SQL для разработки смарт-контрактов — еще один шаг AERGO по расширению использования платформы сообществом разработчиков. Платформа будет включать AERGOSQL, канонический механизм смарт-контрактов, основанный на языке кодирования, который использует синтаксис и семантику, подобный SQL.

Мы рады сообщить, что разработка AERGOSQL успешно завершена, и в настоящее время тестируется ее бета-версия. Более подробная информация о запуске платформы с открытым исходным кодом будет объявлена ​​в будущем. Первый предстоящий выпуск AERGOSQL будет включать поддержку SQL на уровне звонка. После этого будет выпущена интегрированная SQL-поддержка пользователей.

Как использовать LiteTree

Каждая транзакция базы данных сохраняется и фиксируется, каждой фиксации присваивается инкрементное число. Рассмотрим пустую базу данных, в которой мы запускаем эту первую команду SQL:

CREATE TABLE t1 (name)

Теперь у нее будет первая фиксация в автоматически созданной главной ветке.

1

Когда мы выполняем новые транзакции, добавляются новые коммиты в текущую ветку.

 

INSERT INTO t1 VALUES ('first')
INSERT INTO t1 VALUES ('second')

 

Теперь у нас есть 3 фиксации.

2

Чтобы включить в команду несколько команд SQL, мы должны заключить их в команды BEGIN и COMMIT.

Мы создаем новые ветви, информирующие об источнике и количестве фиксации.

PRAGMA new_branch=test at master.2

После выполнения этой команды создается новая ветвь, но без добавления каких-либо новых данных. Соединение с базой данных также перемещается в эту новую ветвь, имея ее как текущую ветвь. Мы можем проверить текущую ветвь с помощью команды.

PRAGMA branch

В этом случае он вернется: test

Если мы выполним команду SQL для этого подключения к базе данных, фиксация будет сохранена в текущей ветке соединения.

INSERT INTO t1 VALUES ('from test branch')

Теперь состояние будет выглядеть так:

 

3

 

Мы также можем прочитать базу данных в этой новой ветке.

SELECT * FROM t1

 

Получаем эти значения:

first

from test branch

Мы можем перейти к мастер-ветке.

PRAGMA branch=master

 

Выполняя ту же команду SELECT, но теперь в главной ветке, она вернется.

 

first

second

Разный контент для одной таблицы на отдельных ветвях.

Записи в отдельных ветвях имеют одинаковую нумерацию, основанную на расстоянии от первой фиксации

4

Мы можем прочитать базу данных в предыдущий момент, перейдя к этому коммиту, как на примере.

PRAGMA branch=master.2

 

На данный момент таблица t1 имеет одну строку, и если мы сделаем SELECT, она вернется только в начало.

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

LiteTree можно использовать с большими базами данных, хранение которых требует много гигабайт пространства. При создании новой ветки копирование данных отсутствует; при совершении новой транзакции копируются только измененные страницы базы данных.

Слияние с LiteTree

Первоначально мы решили не включать возможности diff или слияния в LiteTree, поскольку эти функции не нужны в AERGO. Однако многие разработчики, которые сталкивались с LiteTree, проявили интерес к этим функциям. Мы активно работаем над включением этих функций.

Заключение

Внедрение LiteTree на AERGO позволит предоставить разработчикам широкий функционал возможностей баз данных и использовать возможности SQL-кодирования для блокчейнов. Мы планируем использовать возможности разветвления LiteTree для хранения базы данных в конструкции N-уровневого блокчейна AERGO, выполняем максимизацию программируемости для разработчиков и компаний, размещающих и управляющих блокчейнами на платформе AERGO.

Мы надеемся увидеть как можно больше новых пользователей, которые начнут использовать LiteTree в своих проектах и ​​применять разработки нашего технического сообщества. Пожалуйста следите за новыми обновлениями функционала LiteTree, которые происходят постоянно. Не стесняйтесь вносить свой посильный вклад в развитие и расширение LiteTree.

Если вы заинтересованы в сотрудничестве с нами в отношении LiteTree или любых технических аспектов AERGO, обращайтесь в наш официальный канал Discord.

Сайт AERGO- https://www.aergo.io/

4 Responses

  1. danilovka

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

  2. ZLATTA

    Я видела материалы о проекте Aergo на форуме втт, мне кажется этот проект перспективным. Спасибо Туарег за обзоры.

  3. Vikavika

    Немного коряво перевод написан, но для ознакомления сутью LiteTree от Aergo вполне хорошо читается и все понятно. Неужели и правда проект реализуется?

  4. bitmet

    Полезный инструмент для программистов.

Оставить ответ