Pesquisar este blog

quinta-feira, 4 de outubro de 2018

Novos bancos de dados (NewSQL)

Novos banco de dados (NewSQL)

História

Com o desenvolvimento dos aplicativos Web, surgiu uma grande necessidade de ganho de performance, de uma hora pra outra, o volume de dados ficou muito grande, e a quantidade de requisições cresceu de forma a sobrecarregar os sitemas de armazenamento de dados SQL. A partir daí começaram a surgir diversas opções de banco de dados NOSql e isto virou um movimento, conforme foi mostrado neste post.
Alguns sistemas ainda dependem de uma estrutura Relacional com transações, conforme mostrado no post de Consistência e Replicação, como os sistemas de controle de estoque e de transações financeiras, e o volume destes sistemas também cresceu, com isto surgiu uma demanda por sistemas relacionais com alta taxa de performance.
Foi desta demanda que surgiram os banco de dados conhecidos como NewSQL, estes bancos mantêm a consistência em um banco relacional, com transações ACID usando a linguagem SQL como sua linguagem primária.
Estes sistemas conseguiram melhorar muito a performance e a escalabilidade remodelando algumas coisas da arquitetura legada de onde os sistemas de banco SQL se basearam, como a recuperação de transações e os algoritmos de controle de concorrência.

Novas arquiteturas

Os primeiros bancos deste tipo são uma plataforma completamente diferente da qual estamos acostumados, estes bancos foram desenvolvidos para operar em um cluster distribuído em forma de nós. Estes nós são completamente independentes e são criados de forma a serem completamente independentes e auto-suficiente, ou seja ele contem todas as informações necessárias para realizar as operações que eles devem fazer. Eles não compartilham processador, alguma parte da memória do sistema, ou ainda partes do disco.
Estes sistemas foram desenvolvidos baseados em uma arquitetura distribuída, com isto eles conseguem executar queries em paralelo, eles possuem um controle de concorrência distribuído, um controle de fluxo dos dados.
Ou seja, nos sistema NewSQL o servidor executa diversos nós em paralelo, podendo estes nós serem executados em uma mesma máquina, e cada um destes nós cuidará de uma parte dos dados. Com isto é possível fazer com que os dados sejam escritos mais rapidamente, já que serão processos sendo executados em paralelo, assim como principalmente as queries terão uma performance mais rápida, já que cda nó executará um pedaço desta query.

Novas tecnologias velhos problemas

Apesar de existir uma grande evolução na arquitetura e no desenvolvimento, comparando-se com os sistemas de banco de dados existentes, os grandes desafios de se fazer um sistema de armazenamento de dados distribuídos, ainda existem.
Ainda que o foco destes sistemas seja manter a consistência, existe um certo receio no mercado, conforme elucidado neste blog (em inglês) quanto a capacidade destas arquiteturas manterem a consistencia dos dados.

Nova forma de lidar com os velhos problemas.

Uma das coisas que ficou bem claro, com o aparecimento dos bancos NoSQL é que não dá mais pra confiar em uma bala de prata, ou seja em um sistema que vai resolver todos os problemas de armazemento de dados, estes sistemas de NewSQL são desenvolvidos para resolver um problema específico.
Um dos exemplos desta evolução é que nem todos estes bancos possuem o esquema rígido que os bancos SQL tradicionais possuem.
Como a grande parte do mercado de desenvolvedores conhecem o SQL e isto é um padrão de mercado, esta linguagem foi escolhida para fazer a interface com estes sistemas de armazenamento de dados.

Exemplos

CockrauchDB

Surgiu a partir de uma tecnologia do Google criada para escalar aplicações Web, esta base tem uma consistência forte, é escalável, usa SQL distribuído, ou seja, executa as funções em seus vários nós, aumentando a velocidade das operações, ela é escalável e está equipada com um dos melhores sistemas de recuperação de falhas.

Altibase

Altibase é uma base que se aproveita pra deixar parte dos dados na memória, e com isto garantir uma grande velocidade de acesso, e parte dos dados armazenada em sistema de arquivo, com isto ela garente tanto a alta velocidade de acesso da memória, quanto o espaço dos sistemas de arquivos. Ela é muito flexível, ACID, agnóstica de sistema operacional e hardware. Por ser SQL ansi compativel, ela facilita bastante a migração dos sistemas atuais.

Faunadb

Apesar do Fauna, não ser um banco de dados que aceite SQL como forma de iteração, ainda, ele é um dos bancos que se destaca pela alta performance, relacional, que mantem a consistência, mesmo quando a base está alocada em múltiplas geolocalidades, as queries podem operar dentro de transações. Este é um banco sem esquema, que armazena objetos, grafos, dados relacionais e series temporais.
As comunicações com o fauna, são todas via apis RESTful, com isto, praticamnte, qualquer linguagem pode acessar os seus dados, e fazer operações nele.

Nenhum comentário:

Postar um comentário