AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 137791
Accepted
James Jenkins
James Jenkins
Asked: 2016-05-07 08:29:31 +0800 CST2016-05-07 08:29:31 +0800 CST 2016-05-07 08:29:31 +0800 CST

Blockchain (Bitcoin) como banco de dados?

  • 772

Eu estava lendo este artigo da BBC News e o seguinte trecho me chamou a atenção. Parece Grupos de Disponibilidade Always On ou Espelhamento de Alta Disponibilidade, talvez com segurança incluída automaticamente.

O blockchain é uma solução de banco de dados potencialmente viável para aplicativos modernos de alto volume de transações?

É muito fácil ver seu valor para transações de baixo volume, como registros médicos pessoais, mas e os bancos de dados de alto volume?

O que é blockchain?

Blockchains dependem de criptografia para permitir que um conjunto de computadores faça alterações em um registro global sem precisar de um ator central.

A remoção do intermediário reduz os custos em quase todos os setores.

O blockchain é um livro-razão que registra tudo o que acontece com uma coleção de dados conhecida como "bloco" em ordem cronológica ou "cadeia".

Como moeda, esse é um recurso importante porque permite que os usuários tenham certeza de que seu dinheiro digital é único, da mesma forma que cada nota em sua carteira é única.

“A tecnologia Blockchain será a forma como criamos ativos porque permite que você transfira informações digitais sem copiar”, diz Adam Ludwin, executivo-chefe da Chain.com, que constrói redes blockchain.

O Blockchain pode ser usado para rastrear o histórico de todos os tipos de informações e manter seu valor, então, por exemplo, os médicos podem usá-lo para atualizar registros médicos.

Como cada alteração em um blockchain é feita simultaneamente em toda a rede, nenhuma informação é perdida e, como as alterações não podem ser desfeitas, o sistema mantém sua transparência. Uma chave especial é necessária para fazer alterações em cada bloco, para que os indivíduos possam manter seus registros seguros protegendo essa chave.

database-design normalization
  • 4 4 respostas
  • 5694 Views

4 respostas

  • Voted
  1. Ali Razeghi - AWS
    2016-05-07T09:29:13+08:002016-05-07T09:29:13+08:00

    Estou muito familiarizado com criptomoedas e bancos de dados, e posso dizer que não é um ótimo mecanismo de banco de dados.

    Usando o blockchain como um banco de dados ativo:

    Pense nisso como um primeiro formulário normalizado sem qualquer capacidade de pesquisa ou indexação realmente boa construída no que diz respeito ao blockchain. Basicamente, uma planilha do Excel sem nenhum recurso de computação que apenas fornece recursos de 'leitura/gravação' com muita verificação e validação. Um blockchain é uma ótima maneira de validar se seus dados são higienizados e corretos antes de colocá-los em um banco de dados que permite consultá-los de maneira diferente, indexá-los etc.

    Benefícios da blockchain:

    A blockchain, neste caso, é puramente um livro-razão e uma API para solicitações PUT e GET. É sobre isso. O blockchain é interessante porque você precisa de uma maioria de nós para passar a transação como válida e não há rollbacks, uma vez que é confirmada, é confirmada. Portanto, se alguém tentar fazer uma transação falsa, ela será capturada, a menos que a pessoa que a faça tenha um pool com uma forte participação majoritária. Em seguida, eles podem validá-lo em seu pool antes que alguém o rejeite. Esse é o ponto forte do blockchain. Verificação de que os dados são precisos. Também é tipicamente muito lento. Você está olhando para cerca de 10 minutos sob carga normal para ser validado. Sob carga pesada, o tempo aumenta bastante.

    Depois de validar que as transações são válidas e não fraudulentas usando o blockchain, você pode importar esses dados para um banco de dados e trabalhar com eles como quiser. Eu tenho alguma experiência com isso, mas observe que cada transação na arquitetura atual do bitcoin será registrada, portanto, há algumas informações interessantes para analisar.

    Consultando dados do esquema blockchain em um DBMS:

    Aqui está o diagrama bitcoin que você pode usar para criar o esquema no PostgreSQL. Usando isso, você pode colocá-lo em um DBMS relacional: https://bitcointalk.org/index.php?topic=38246 insira a descrição da imagem aqui

    Este repositório de código também é útil se você quiser importar os dados para um RDBMS real: https://github.com/bitcoin-abe/bitcoin-abe

    Quanto ao DBMS em que você deve colocá-lo, depende do seu caso de uso. Se você quiser analisar as transações/IDs de carteira para ver alguns padrões ou fazer um trabalho de BI, eu recomendaria um banco de dados relacional. Se você deseja configurar uma ingestão ao vivo com várias criptomoedas, recomendo algo que não precise do log de transações, portanto, uma solução MongoDB seria boa. Não acho que você precise se preocupar com o Elastic Search, a menos que queira começar a gravar ao vivo todas as criptomoedas ao mesmo tempo e usá-lo para fazer negociação automática ou algo igualmente maluco. :)

    • 16
  2. Best Answer
    ypercubeᵀᴹ
    2016-05-07T14:01:55+08:002016-05-07T14:01:55+08:00

    O blockchain é uma solução de banco de dados potencialmente viável para aplicativos modernos de alto volume de transações ?

    A tecnologia blockchain em geral possui algumas características que dificultam o trabalho com grandes volumes.

    Dê uma olhada no Bitcoin, por exemplo. A média de transações por dia nunca foi superior a 300 mil: Transações por dia (fonte blockchain.info)

    insira a descrição da imagem aqui

    Ainda mais importante, o tempo médio de confirmação de uma transação é de cerca de 8 minutos!: Tempo médio de confirmação da transação (somente com taxa) e uma bela imagem de Quandl :

    insira a descrição da imagem aqui

    Agora, quantos computadores ao redor do mundo são responsáveis ​​por manter o banco de dados bitcoin? Não sou especialista em bitcoin, mas acho que o histórico completo das transações é armazenado na cadeia de blocos; portanto, todos os computadores que participam da rede bitcoin mantêm uma cópia de todo o banco de dados (a parte das transações, é claro, não as informações das contas e chaves secretas, estas são guardadas nas carteiras pessoais).

    Só podemos estimar quantos são, mas acho que são mais de um milhão. 300 mil transações em um dia com um milhão de computadores não parece um volume alto. E 8 minutos para confirmação?

    Um RDBMS moderno em um hardware decente pode facilmente chegar a 1K de transações por segundo. Isso é cerca de 86 milhões de transações por dia. O tempo de confirmação? Isso depende do tamanho da transação (quantas tabelas e linhas afeta), mas para uma pequena transação do tipo bitcoin (remova 42 moedas da conta A e adicione 42 moedas à conta B), será milissegundos.

    Em conclusão, a diferença em volumes e tempo é de 1.000 a 100.000 vezes hoje.

    Se a tecnologia blockchain resolver esse problema no futuro, poderá ser usada em aplicações de médio ou alto volume. Podemos ler discussões e sugestões sobre como o problema deve ser resolvido - muitas das empresas mencionadas nos links estão realmente trabalhando nessas questões - mas ainda não vimos uma solução ou produto de trabalho real que ofereça grandes volumes e velocidade.

    • 15
  3. Bruce Pon
    2016-10-14T06:55:04+08:002016-10-14T06:55:04+08:00

    Em 2014, construímos o ascribe.io com a premissa de usar o Bitcoin como um banco de dados para reivindicações de Propriedade Intelectual. No lançamento, conectamos a rede porque ela não suportava o throughput, a latência era de pelo menos 10 minutos e estávamos limitados pelo que poderíamos colocar no OP_RETURN, obrigando-nos a armazenar o arquivo digital real relacionado à reclamação no Amazon S3 . Percebemos que o Bitcoin em sua forma atual nunca poderia ser um banco de dados de alta transação.

    Mas a ideia de se poderíamos ter um banco de dados no estilo blockchain - controle descentralizado, imutabilidade (resistência a adulterações) e ativos ativos na rede ficou conosco. Então, em meados de 2014, começamos a trabalhar no BigchainDB

    Para encurtar a história - podemos processar 100k tps com latência de 100mS e ter petabytes de capacidade. O código é nosso BigchainDB Github, documentação técnica aqui e o pensamento fundamental em nosso whitepaper .

    Se você tiver um caso de uso para um banco de dados descentralizado de alta transação, construímos o BigchainDB exatamente para isso.

    • 8
  4. london
    2016-05-13T12:40:09+08:002016-05-13T12:40:09+08:00

    Blockchain derivado do Bitcoin é lento e caro; a quantidade de dados que pode ser armazenada em um bloco é muito modesta. Os mecanismos por trás dos blockchains (distribuir ledgers) destinam-se a fornecer um armazenamento de dados incorruptível e altamente replicado; ponto a ponto é menos uma característica essencial do que um "requisito político" para evitar a aparência de controle central. Estou trabalhando há cerca de 18 meses para produzir um livro-razão distribuído de alto desempenho (consulte metrognomo.com para obter uma instanciação) que consome o mínimo possível do Bitcoin. No final, porém, um livro-razão distribuído se parece muito com um arquivo sequencial que pode ser adicionado, mas não editado após a adição. Isso é valioso para alguns aplicativos, mas não para o que a maioria das pessoas considera um banco de dados.

    • 2

relate perguntas

  • É melhor armazenar os valores calculados ou recalculá-los a pedido? [duplicado]

  • Armazenar vs calcular valores agregados

  • Quais são algumas maneiras de implementar um relacionamento muitos-para-muitos em um data warehouse?

  • As formas normalizadas superiores sempre atendem aos critérios das inferiores?

  • Recursos de exercícios de normalização

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve