Релиз LiteTree: быстрый, ветвистый механизм базы данных. Открытие блокчейн разработки для более чем 8.5M SQL-разработчиков

in #aergo6 years ago

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

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

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

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

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

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

Представляем 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 в качестве примера.


Рисунок 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 в блочной цепочке адресована первым из них, включив в блок-цепочку сложные функциональные возможности базы данных. Он обеспечивает невероятно удобный способ обработки данных по цепочкам и во многих наших функциональных возможностях взаимодействия по сравнению с простой системой хранения на основе ключа / значения.

Предоставление функциональных возможностей базы данных в AERGO

Есть две основные функции, которые мы можем принести AERGO с помощью LiteTree:

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

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

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

Рисунок 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 Server с поддержкой грамматики.

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

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

CREATE TABLE t1 (name)

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

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

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

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

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

Мы создаем новые ветви, информирующие об источнике и количестве фиксации.
PRAGMA new_branch=test at master.2

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

PRAGMA branch

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

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

INSERT INTO t1 VALUES ('from test branch')

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

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

Он вернет эти значения:

первый
из тестовой ветви

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

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

первый
второй

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

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

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

PRAGMA branch=master.2

В этот момент таблица t1 имеет одну строку, и если мы сделаем SELECT, она вернется просто first.

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

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

Слияние с LiteTree

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

Заключение

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

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

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

Присоединяйтесь к любому из наших каналов: