Tanto os bancos de dados NoSQL quanto os modernos Blockchain Os livros-razão se beneficiam de um conjunto de princípios comuns. Quando ambos são implementados em um aplicativo, muito pode ser feito, pois as plataformas podem se complementar.
O que é Blockchain?
Blockchain é uma tecnologia ponto a ponto para desenvolver o que é conhecido como registros distribuídos, nos quais os dados podem ser armazenados em milhares de servidores e bancos de dados diferentes em todo o mundo, visíveis para todos os participantes e recuperados quase instantaneamente. O blockchain é a tecnologia fundamental para as criptomoedas, como o Bitcoin.
Neste artigo, analisamos duas sobreposições sinérgicas de Blockchain e NoSQL que analisam como O A plataforma NoSQL pode oferecer suporte ao seu próximo aplicativo de registro distribuído empresarial, por exemplo, com base em Hyperledger. Esse tópico é muito profundo, mas eu apenas menciono duas ideias superficiais para ajudar a mapear os pontos em comum e as oportunidades: computação distribuída e estado mundial.
Para obter mais informações sobre Blockchain em geral, recomendo as páginas da academia em ledger.comA visualização é mostrada abaixo.
Computação distribuída
As arquiteturas empresariais modernas são construídas com base na computação distribuída em seu núcleo - sejam elas ambientes de CPU/GPU de processamento paralelo, clusters de bancos de dados de vários nós ou data centers globais com clusters sincronizados em diferentes locais.
Ao aproveitar a velocidade de processamento distribuído, a capacidade de recuperação e o dimensionamento dessas arquiteturas (um tópico por si só!), os desenvolvedores de aplicativos podem se concentrar na criação da experiência de usuário desejada e deixar que os sistemas de dados de back-end façam o trabalho pesado.
O que significa ser distribuído?? Em sua forma mais básica, significa ter mais de um servidor que é gerenciado como parte de um cluster de nós. O ideal é que não haja um único ponto de falha ou controle centralizado nos sistemas distribuídos.
Além disso, ele pressupõe que os itens da carga de trabalho sejam divididos em partes digeríveis pelos processadores atômicos subjacentes, por exemplo, distribuindo o trabalho em vários nós.
Outros nomes para esses tipos de sistemas incluem redes peer-to-peer, computação em cluster, processamento paralelo etc. Wikipédia tem uma ótima lista dos tipos de sistemas que levaram até hoje.
A blockchain é o epítome da tecnologia distribuída
Apesar dos benefícios, a computação distribuída não é generalizada; mesmo nas empresas modernas, a centralização de muitos sistemas ainda é bastante comum. Isso inclui setores que você esperaria que fossem projetados com mais resiliência em mente, como os sistemas financeiros globais ou o gerenciamento da cadeia de suprimentos, que tendem a ser mais centralizados em torno da computação de mainframe.
A propósito, você sempre pode saber quando há um sistema centralizado porque, quando ele falha, falha totalmente! Quando todos os dados ou serviços são executados em uma única máquina, é muito fácil saber quando ela fica inoperante porque tudo para completamente.
Pode ser porque leva tempo para iniciar uma máquina substituta, ou leva tempo para perceber uma falha antes de redirecionar os usuários ou uma infinidade de outros motivos devastadores de engenharia. Um sistema centralizado é o oposto das redes ponto a ponto a que aspiramos.
No entanto, com a introdução de plataformas como o Bitcoin, a próxima geração de moeda digital e "livros-razão" está sendo lentamente comprovada. Atualmente, há milhares de criptomoedas diferentes e dezenas de back-ends de blockchain que estão aproveitando a tecnologia descentralizada.
Como um aparte, observe que o "livro-razão distribuído" não equivale ao cenários de prova de trabalho que muitas criptomoedas usam. Em vez disso, pense nos livros-razão como se já houvesse confiança em um aplicativo que está fazendo atualizações e não precisasse realizar nenhuma tarefa específica para adicionar à cadeia. Da mesma forma, os sistemas de prova de trabalho são menos focados em ter um alto desempenho, o que, em última análise, é necessário para trazer os aplicativos de blockchain para o mainstream.
NoSQL distribuído
Da mesma forma, as empresas estão procurando maneiras de aproveitar abordagens mais distribuídas para seus sistemas internos a fim de reduzir o tempo de inatividade. Se for para ser um sistema baseado em livro-razão, há várias abordagens disponíveis atualmente. Se for um banco de dados de uso geral, também há opções, especialmente para o gerenciamento de dados.
Nas empresas em que há alguns sistemas distribuídos em jogo, é provável que a maior parte da tecnologia seja encontrada em bancos de dados, principalmente em plataformas NoSQL. Um dos pilares do Couchbase tem sido essa natureza distribuída desde o primeiro dia, preenchendo uma lacuna crítica que os bancos de dados legados não estavam preenchendo de forma eficaz.

A introdução de mais um armazenamento de documentos JSON não teria sido especial se fosse executado em um único nó. Da mesma forma, mais uma tecnologia Blockchain não seria nada de especial se não fosse distribuída em um cluster de máquinas.
Se for centralizado, será um ponto único de falha e controle, anulando a confiança do sistema geral. Felizmente, tanto o Couchbase quanto o Blockchain e as tecnologias relacionadas estão trazendo à tona a necessidade e o valor dos sistemas distribuídos.
Componentes do Hyperledger
Outro ponto em comum entre os livros-razão distribuídos da Blockchain, como Hyperledger e Couchbase é o caso de uso de apresentar uma única visão "atual" dos ativos que estão sendo gerenciados.
Na linguagem do Hyperledger Fabric (uma implementação específica de livro-razão distribuído), há dois tipos de componentes de tratamento de dados em jogo em seu sistema.
Transações operacionais são o núcleo de qualquer livro-razão - ele verifica, cria e registra todas as transações no livro-razão. O Hyperledger Fabric lida com todas as permissões incorporadas para reconhecer quem pode iniciar transações e também as armazena em uma variedade de tecnologias de back-ends.
Estado mundial é o outro componente principal, outra visualização de dados que mantém os valores da conta corrente, não todas as transações operacionais individuais. Quando uma transação de uma entidade para outra é realizada, o estado mundial também recebe uma atualização para que os novos valores sejam mantidos atualizados. As transações anteriores não são armazenadas no estado mundial.
Cada conta no sistema de estado mundial terá um único valor, mas o histórico geral é armazenado em detalhes precisos pelo sistema de transações.
Fonte da verdade NoSQL
Os dois componentes acima podem ser implementados com um Couchbase Banco de dados NoSQL como back-end. O Couchbase lida com transações operacionais de alto rendimento em muitos casos de uso diferentes, finanças, detecção de fraudes, IoT etc. Transações ACID distribuídas também são possíveis, o que é um tópico em si (mais em uma postagem futura).
Se o Couchbase for o principal banco de dados de back-end de um sistema Blockchain, ele poderá facilitar tanto a operacional e o Estado mundial armazenamento/recuperação de dados.
O Couchbase é frequentemente usado para armazenar um agregado de dados de vários bancos de dados diferentes, fornecendo o que é conhecido como Fonte da verdade (vs. Sistema de registro). Isso pode ser análogo ao estado mundial, armazenando a imagem materializada dos dados atuais de interesse.
Isso torna o Couchbase uma boa opção para os desenvolvedores de aplicativos que precisam armazenar perfis de usuários para um aplicativo. Por exemplo, outros sistemas de back-end podem manter os dados individuais atualizados, mas quando o usuário faz login, o perfil do usuário fica imediatamente disponível em um único documento JSON.
O benefício final de usar o Couchbase nesse contexto é ter todas as vantagens incorporadas para os desenvolvedores. Depois que os dados são inseridos no banco de dados, você tem acesso sem atrito a ferramentas de consulta avançadas baseadas em SQL, pesquisa de texto completo usando linguagem natural, análise maciça de big data para conjuntos de dados enormes e muito mais. Isso permite que os desenvolvedores se concentrem no produto e no usuário, enquanto os sistemas de back-end mantêm tudo gerenciado e sincronizado.
Por exemplo, com consultas de texto completo, os usuários podem realizar pesquisas ad hoc de texto completo de chaves ou outros atributos de dados de texto no banco de dados. Os índices de texto completo aceitam as condições de pesquisa e procuram correspondências nos índices invertidos para os documentos fornecidos. Em vez de resultados de consultas SQL tabulares padrão, os resultados relevantes das solicitações de pesquisa fornecem ponteiros para os próprios documentos de origem e também podem apontar para o campo e os valores no documento em que o texto ocorre.
Os próprios sistemas de blockchain podem oferecer consulta de fluxo de eventos em tempo real, mas a pesquisa de texto completo é mais valiosa para a pesquisa histórica de conjuntos de dados de fonte de verdade.
Por que NoSQL + Blockchain?
Em vez de apenas comparar essas duas tecnologias, também quero incentivar os desenvolvedores e arquitetos a analisar como elas podem ser usadas em conjunto. Aqui está uma maneira.
O Couchbase pode servir como a camada de desenvolvedor de aplicativos sobre qualquer ledger distribuído ou tecnologia Blockchain, tanto como o operacional ou o componente de banco de dados Estado mundial. O banco de dados do estado mundial é um excelente primeiro caso de uso a ser investigado se você estiver criando uma solução corporativa e precisar exibir detalhes da conta de forma rápida e fácil para os usuários finais.
Por exemplo, quando ocorrem transações de Blockchain e o estado do mundo é atualizado, a mesma atualização pode ser enviada ao Couchbase e disponibilizada aos usuários. Como o Couchbase tem SDK móvel, bem como suporte abrangente a SQL analítico e muito mais, ele oferece uma interface de dados mais robusta do que a que vem com os sistemas Blockchain prontos para uso.
Isso é particularmente importante quando se deseja que os usuários tenham acesso rápido às informações mais atuais.
Enquanto os sistemas Blockchain levam tempo para propagar informações, o Couchbase usa protocolos avançados para fazer isso muito mais rapidamente - as visualizações de dados podem ser criadas à medida que as alterações ocorrem. E como o Couchbase é executado em um ambiente de vários clusters, a estabilidade e a resiliência da plataforma podem acompanhar as demandas semelhantes do sistema Blockchain.
Integração
Embora não exista uma integração pronta do Couchbase com o Hyperledger, o SDK do Couchbase é compatível com todas as principais linguagens de programação. Qualquer pessoa que esteja criando um livro-razão baseado em Blockchain pode começar a enviar atualizações do estado atual do mundo para o Banco de dados NoSQL via JSON, usando a API Blockchain e a API Couchbase.
Se você estiver interessado em criar esse tipo de integração, confira os atuais provedores de back-end no Hyperledger Fabric e adapte um deles para o Couchbase Server.

O Couchbase Developer SDK oferece suporte a idiomas populares https://www.couchbase.com/products/developer-sdk
Além disso, pode ser possível implementar essa funcionalidade diretamente no código de acesso enviados durante as atualizações do aplicativo de contrato inteligente em um livro-razão. Estou apenas começando a entender esse lado do sistema, mas, em outro post, poderíamos comparar/contrastar as funções definidas pelo usuário (UDFs) do banco de dados e o chaincode do Blockchain para lhe dar mais referências.
Há muito mais sobre a Blockchain que podemos aprofundar, mas espero que esse vislumbre das semelhanças e sobreposições ajude a fazer sua cognição fluir.
Se esse tópico ou a ideia de integração interessar a você, vamos nos conectar e discutir o assunto em Twitter ou LinkedIn ou por meio deste artigo em Médio.
- O que é Blockchain (ledger.com)
- Couchbase - Por que NoSQL?
- Couchbase - sincronização de dados da nuvem para a borda
- Couchbase - Transações ACID
- Hyperledger.org
- Tecido Hyperledger- uma tecnologia específica de registro distribuído
- Portal do desenvolvedor do Couchbase
- Desenvolvimento de aplicativos de back-end com o Hyperledger Fabric por meio do SDK (IBM.com)
- Computação distribuída (Wikipedia.org)
Mitchell, obrigado! Bem, e quanto aos arquivos históricos longos (como mensagens do FB, linha do tempo e fotos do hubble)? Existem maneiras de criar nós de dados, índice e pesquisa que usem apenas mídias WORM (Write once read many) ou cadeias de blocos? (Pelo que entendi, uma cadeia de blocos nunca mudará, portanto, deve ser suficiente armazená-la somente em dispositivos com uso zero de energia, como fitas. Ou a leitura de cadeias de blocos é mais barata/mais cara do que a leitura de fitas e a transferência para clientes?
Boas perguntas, realmente não tenho certeza, mas com certeza há muitos casos de uso diferentes para blockchain e NoSQL!