Новая технология хранения, на которую стоит обратить внимание? Или это больше реклама web3?

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

Однако сегодня мы увидим немного другую альтернативу: децентрализованные базы данных.

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

Давайте погрузимся прямо в это!

Децентрализованный против распределенного

Давайте сначала обратимся к розовому слону в комнате. Потому что основная причина, по которой я пишу эту статью, заключается в том, что эти два термина могут показаться одним и тем же, но это определенно не так.

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

В то время как распределенный подход будет эффективно разделять данные и обработку этих данных (запросы, обработка данных и т. д.) между многими узлами кластера. Это происходит потому, что каждый узел знает и доверяет друг другу. У них либо есть внутренний список узлов кластера (что-то вроде кластера Redis), либо они полагаются на один (или несколько) центральный орган для отслеживания этой информации (как это делает кластер Hadoop).

Децентрализованные сети узлов обмениваются данными друг с другом, но делают это, не зная, кто находится на другой стороне. Они могут добиться этого благодаря базовой технологии, на которой работают эти кластеры. Реализация может измениться, но, по сути, то, что известно как «византийская отказоустойчивость», позволяет сети оставаться стабильной и безопасной, даже если один или несколько узлов скомпрометированы (т. е. отключены, взломаны и т. д.).

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

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

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

Децентрализованная база данных

Учитывая это, почему вы выбрали децентрализованную базу данных?

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

  • Репликация данных: децентрализованная база данных будет дублировать ваши данные по сети. Хотя могут быть вариации конкретных реализаций, общий консенсус заключается в том, что каждый узел сети будет содержать всю вашу базу данных. Это здорово, потому что, распределяя узлы по всему миру, вы можете добиться очень низкой задержки, обслуживая клиентов с помощью самого быстрого узла.
  • Безопасность данных: обратите внимание, что эта «безопасность» относится не к функциям контроля доступа, о которых вы могли бы подумать, а скорее к тому факту, что децентрализованные системы имеют встроенную «проверку». Эта конкретная функция гарантирует, что каждый раз, когда в узел вводится новая информация, остальная часть сети будет проверять ее, прежде чем ее можно будет распределить по всем другим узлам. Это гарантирует, что если узел каким-либо образом будет скомпрометирован, информация в глобальном масштабе не пострадает. По сути, удаление большого количества общих уязвимостей безопасности, связанных с распределенными системами.
  • Глобальная стабильность: этот тип архитектуры значительно менее подвержен ошибкам, чем распределенная система. В последнем случае у вас обычно есть архитектуры, которые полагаются на один орган для определенных задач, превращая этот объект в единую точку отказа (т. е. в случае сбоя весь кластер становится непригодным для использования). Конечно, многие высококачественные решения пытаются предоставить решения или альтернативы этой проблеме, но с децентрализованными сетями у вас действительно нет этого с самого начала. Это связано с тем, что центральная организация ничего не делает, все делается всеми (или, по крайней мере, большинством), что очень затрудняет сбой в работе одной из этих баз данных.

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

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

Какие есть варианты?

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

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

БигчейнДБ

BigchainDB пытается смешать мир блокчейна с миром баз данных, предоставляя децентрализованное решение для ваших потребностей в хранении и поиске данных. Впервые он был выпущен в 2016 году, и с тех пор он развивался, а это значит, что он должен стать надежной альтернативой. Имейте в виду, что MySQL существует с 1995 года, поэтому, условно говоря, Bigchain похожа на базу данных для малышей, но, тем не менее, в рамках децентрализованного движения это определенно хороший вариант.

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

ХарперДБ

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

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

КовенантSQL

Как я упоминал ранее, некоторые альтернативы являются новыми, и хотя они могут показаться интересными, вы должны понимать, готовы ли они к вашему варианту использования. ConvenantSQL — один из таких примеров.

Их предпосылка состоит в том, чтобы иметь децентрализованную базу данных на основе SQL, которую вы можете использовать для чего угодно. Они рекламируют себя как альтернативу с открытым исходным кодом QLDB (база данных Quantum Ledger) AWS.

Звучит потрясающе, но они работают на версии 0.8, что наводит меня на мысль, что они хороши, но им еще предстоит проделать кое-какую работу, чтобы стать действительно альтернативой варианту AWS.

Используете ли вы децентрализованную базу данных для своего приложения? Или вы все еще полагаетесь на старый добрый (и проверенный) распределенный подход к расширению возможностей хранения и обработки?

Поделитесь своим опытом в комментариях, и если вы знаете другую децентрализованную базу данных, о которой стоит упомянуть, добавьте ее в комментарии, чтобы все могли о ней узнать!

Бит: почувствуйте мощь компонентно-ориентированной разработки

Скажи привет Bit. Это инструмент №1 для разработки приложений на основе компонентов.

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

  • Создавайте и компонуйте «строительные блоки приложения»: элементы пользовательского интерфейса, полные функции, страницы, приложения, бессерверные или микросервисы. С любым стеком JS.
  • С легкостью делитесь и повторно используйте компоненты в команде.
  • Быстро обновляйте компоненты в разных проектах.
  • Делайте сложные вещи простыми: Монорепо, дизайн-системы и микрофронтенды.

Попробуйте Bit бесплатно и с открытым исходным кодом→

Узнать больше