Slide 1

Slide 1 text

Go Datastores ! Armazenamento de dados em disco local

Slide 2

Slide 2 text

Agenda Guardando dados localmente Data Storages disponíveis Beano Conclusão

Slide 3

Slide 3 text

Bancos de dados locais

Slide 4

Slide 4 text

Aplicações ● Contadores ● Deduplicação ● Suporte a bancos distribuidos ● Datasets pré-calculados ● Timeseries ● Aplicações embarcadas

Slide 5

Slide 5 text

Vantagens ● Velocidade de armazenamento ● Sincronismo rápido ● Controle de durabilidade

Slide 6

Slide 6 text

Desvantagens ● Discos efemeros ● Replicação ● Requer código para controlar acesso e transações ● Queries inflexíveis dependendo do modelo

Slide 7

Slide 7 text

Data Storages disponíveis

Slide 8

Slide 8 text

➔ 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

Slide 9

Slide 9 text

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)

Slide 10

Slide 10 text

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.

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Beano

Slide 14

Slide 14 text

Beano - K/V database ● Protocolo Memcached ● Dados em disco ● Hot swap de dados ● GO !

Slide 15

Slide 15 text

Beano - K/V database

Slide 16

Slide 16 text

Beano - K/V database

Slide 17

Slide 17 text

Beano - K/V database

Slide 18

Slide 18 text

Beano - K/V database

Slide 19

Slide 19 text

Beano - K/V database

Slide 20

Slide 20 text

Conclusão

Slide 21

Slide 21 text

Obrigado ! github.com/gleicon medium.com/@gleicon [email protected]