Сравнение моделей данных

Блокчейн-база данных: действительно ли блокчейн — это база данных?

Блокчейн — это данные только для добавления, реплицированные и намеренно медленные при записи. База данных — быстрая, изменяемая и централизованно управляемая. Где они пересекаются и что это значит для чтения платёжных данных.

7 дней бесплатно — для начала не нужна карта и KYC Некастодиальный — приватные ключи остаются под вашим контролем Тарифы от 49 €/мес (490 €/год) — посмотреть тарифы и лимиты запросов

Называть блокчейн базой данных не ошибка, но это преуменьшает то, что делает его особенным. Блокчейн-база данных хранит записи так же, как это делает традиционная база данных — строки структурированных данных, которые можно запрашивать, — но добавляет три ограничения, которых нет ни у одной обычной базы данных: каждая запись постоянна, каждый узел хранит полную копию, и запись засчитывается только после того, как децентрализованный набор участников с ней согласился. Эти три свойства и составляют всю разницу между блокчейном и базой данных, и именно они объясняют, в чём блокчейн хорош, а для чего он подходит плохо.

Блокчейн против базы данных: свойство за свойством

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

СвойствоТрадиционная база данныхБлокчейн
ЗаписиИзменяемые — UPDATE и DELETE являются обычными операциямиТолько добавление — записанная запись никогда не редактируется и не удаляется
КонтрольЦентрализованный — один оператор, один источник истиныДецентрализованный — ни одна сторона не контролирует реестр единолично
Подтверждение записиНемедленное, определяется собственной логикой оператораОпределяется сетевым консенсусом, что требует времени и комиссии
Модель храненияОдна копия (плюс реплики/бэкапы, управляемые оператором)Полная репликация — каждый full-узел хранит всю историю
Стоимость записиПрактически нулевая предельная стоимостьСетевая комиссия на каждую запись (gas, Energy, Bandwidth)

Читайте эту таблицу как чек-лист, а не как таблицу результатов. Если вашему приложению нужны быстрые, дешёвые, исправляемые записи под контролем одной стороны — это работа для базы данных, а не для блокчейна.

Значит, блокчейн — это база данных или нечто совершенно иное?

Структурно — да: блокчейн является базой данных в буквальном смысле «организованных, запрашиваемых, персистентных данных». Вопрос, является ли блокчейн вообще базой данных, возникает потому, что он отбрасывает два допущения, которые делает почти любая другая база данных, — что доверенный оператор управляет записями и что ошибку можно исправить оператором UPDATE. Блокчейн как база данных работает там, где отсутствие доверенного оператора — это и есть смысл: платежи, записи о собственности, всё, где независимая проверяемость важнее возможности редактирования.

Что конкретно отличает блокчейн от обычной базы данных

Работу выполняют три механизма. Во-первых, консенсус: запись не считается окончательной, пока с ней не согласится достаточное число независимых участников, — именно это делает запись заслуживающей доверия без центрального органа, и именно это же делает записи медленнее и платнее, чем INSERT в базе данных. Во-вторых, неизменяемость по конструкции: как только блок подтверждён, его изменение потребовало бы переделать работу консенсуса для каждого последующего блока, что практически невозможно вычислительно на сколько-нибудь значимой глубине — здесь нет административного UPDATE. В-третьих, репликация как свойство системы, а не операционное решение: каждый full-узел хранит полную историю — избыточность, которую традиционная база данных получает, только если кто-то явно её настроил.

Блокчейн как база данных именно для платежей

Конкретно для платёжных данных компромисс «блокчейн как база данных» на самом деле работает в пользу блокчейна: вам нужны свойства «только добавление» и «через консенсус», потому что вы не хотите, чтобы кто-либо — включая вас самих — мог незаметно отредактировать проведённую транзакцию. Чего вы не хотите — так это писать сырые запросы JSON-RPC к этим данным каждый раз, когда вам нужен баланс или статус транзакции; с этой частью лучше справляется интерфейс, похожий на базу данных. Слой API поверх сети даёт вам оба преимущества: гарантии блокчейна для самой записи и REST-интерфейс в стиле базы данных для её чтения.

По сути, именно этим и является API Chaingateway — REST-интерфейс поверх данных сети. Создайте бесплатный аккаунт и запросите баланс в testnet без обращения к сырому JSON-RPC.

FAQ: блокчейн против базы данных

Структурно — да: это организованные, персистентные, запрашиваемые данные. От обычной базы данных его отличает то, что записи только добавляются, подтверждаются сетевым консенсусом, а не единственным оператором, и полностью реплицируются на каждом узле.

Традиционная база данных допускает изменяемые записи под контролем одного оператора, подтверждаемые немедленно. Блокчейн допускает только добавление записей, подтверждаемых децентрализованным консенсусом, реплицируемых на каждом full-узле, с комиссией за каждую запись.

Да, для операций чтения и добавления — запрос балансов, истории транзакций и подтверждённого состояния работает как запрос к любой базе данных. Чего нельзя сделать — это выполнить UPDATE или DELETE для подтверждённой записи, потому что неизменяемость и есть весь смысл этой конструкции.

Три вещи, которых у обычной базы данных нет по умолчанию: записи, проходящие через консенсус, вместо контролируемых оператором; полная репликация всей истории на каждом узле; и постоянные, неизменяемые записи вместо редактируемых строк.

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

Читайте данные сети как базу данных

Создайте аккаунт и запрашивайте балансы и транзакции через REST вместо сырого JSON-RPC — 7-дневный пробный период, без карты, без KYC. Смотрите мультичейн blockchain API или начните с одной сети, например Ethereum API. Более глубокое техническое сравнение — в статье Blockchain vs Database в блоге.