Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go datastores

Go datastores

Apresentação sobre GO e datastores em disco aplicados no projeto Beano - https://github.com/gleicon/beano. Golang Meetup São Paulo 28/08/2018

Gleicon Moraes

August 29, 2018
Tweet

More Decks by Gleicon Moraes

Other Decks in Programming

Transcript

  1. Aplicações • Contadores • Deduplicação • Suporte a bancos distribuidos

    • Datasets pré-calculados • Timeseries • Aplicações embarcadas
  2. Desvantagens • Discos efemeros • Replicação • Requer código para

    controlar acesso e transações • Queries inflexíveis dependendo do modelo
  3. ➔ Qual algoritmo para guardar os dados: BTree, LSM Trees

    ➔ Como os dados são organizados em disco: diretório ou um arquivo ➔ Qual o schema: relacional ou K/V ? ➔ Como fazer queries ? ➔ Nativo em Go ou precisa de uma biblioteca cliente ? ➔ Otimizações para casos específicos (melhor em leitura ou escrita) Features
  4. 1 SQLite • Dados armazenados em um arquivo, cada tabela

    um BTree • Dados relacionais, queries em linguagem SQL • Transações, journal e WAL • Escrito em C, bibliotecas para muitas linguagens • Compacto e compativel entre releases. Um dos DBs mais antigos e usados em sistemas embarcados (telefones, centrais de midia)
  5. 1 BoltDB • Dados armazenados em um arquivo, formato BTree,

    dados K/V • Queries em uma transação, direto por chave e ranges de chaves. • Transações, journal • Escrito em Go, nativo • Bom para aplicações de leitura intensiva Base do InfluxDB, especializado em timeseries.
  6. 1 LevelDB • Dados armazenados em um diretório, usa LSM

    Trees, dados K/V • Queries em uma transação, direto por chave e ranges de chaves. • Implementa: Transações, Compactação • Escrito em C, ports nativos em Go • Bom para aplicações de escrita intensiva Criado pelo Google, tem variações como RocksDB (Facebook) e evoluções como o BadgerDB
  7. 1 BadgerDB • Dados armazenados em um diretório, usa LSM

    Trees, dados K/V • Queries em uma transação, direto por chave e ranges de chaves. • Implementa: Transações, Compactação, separação de chaves e valores • Escrito em Go • Bom para aplicações de escrita intensiva Criado por dgraph.io
  8. Beano - K/V database • Protocolo Memcached • Dados em

    disco • Hot swap de dados • GO !