Criando sistemas híbridos (online/offline) com
ênfase em AP (alta disponibilidades)
utilizando Couchbase.
hello!
Leonardo Kobus
Arquiteto de Software - HBSIS.
Leonardo.kobus@gmail.com
O que vamos ver?
✘ Como fizemos a escolha do banco dados NOSQL para o problema
do cliente
✘ Porque o Couchbase
✘ O que API do Couchbase pode nos oferecer e como isso afeta nossa
produtividade.
✘ Exemplos de arquitetura hibrida online/off-line utilizando domínios
populares na comunidade de software.
1.
Porque couchbase?
Vamos começar do começo
Nosso cliente identificou que certos
lugares remotos do país seu produto
não chegava e resolveu colocar sua
tecnologia de gestão para
alavancar vendas nestes lugares.
Ele pegou seu sistema de +25
anos deu uma “enxugada” e
colocou pros usuários usarem.
Sistemas não conseguem atender 100%
dos cenários
✘ Números de usuários.
✘ Forma como ele é usado
✘ Infraestrutura onde ele é
instalado
✘ O que se quer resolver com o
uso do sistema
OFFLINE
A principal dor no sistema foi que ele
precisava rodar de forma Offline
É ai que entrou o Couchbase
✘ Banco NOSQL
✘ Trabalha orientado a documento
✘ API presente nas principais
linguagens alto nível
✘ Possui mecanismo sincronização de
dados (online,off-line).
✘ Possui uma rica tecnologia de
clusterização, capacity e etc
2.
Conceitos do banco
Armazenamento dos dados, consulta dos dados e o que
conseguimos fazer com ele
BucketCada registro é um documento
Nós criamos
os tipos
Usuário insere
informações
Alguém consulta os cafés
Bucket
Documento
REGISTRO
Content -> Dados da entidade do sistema
Event/Type -> Tipagem do documento
channels -> Canais do documento
Indexação
var view = _db.CreateView(“café”)
View.SetMap((doc, emit) => {
If(doc[“type”] == “CAFÉ”) {
emit(doc);
}
});
BUCKET
View
Café
N1QL - Níquel
Parece que a DSL SQL ANSI (select *
from …) é realmente uma ótima
maneira de humanos selecionarem
dados.
Clusterização
3.
Sincronismo
Como o banco consegue atuar de forma
online/offline
Sync Gateway
Couchbase
Server
Sync
Gateway
APP 1
APP 2
Couchbase LITE API
Couchbase Lite API
✘ Biblioteca disponibilizada
em Java, C# e etc.
✘ Utiliza o SQL Lite
internamente.
✘ É Open source.
✘ Faz sincronização do SQL
Lite com Couchbase
Bucket
Replicador
O replicador é a “Thread” que
vai replicar os dados da base
Local até a nuvem. Já
identificando se o dispositivo
esta online ou não
Funcionalidades
✘ É como se fosse um “mini-
bucket” sua maneira de
trabalhar.
✘ Possui menos recursos que
o Bucket.
✘ Trabalha bem como uma
quantidade considerável
de dados
✘ Multiplataforma
Canais
✘ O canal é um array de string no
documento chamado de channels
✘ Um documento pode ter vários
canais ou nenhum
✘ O documento será replicado caso
alguém esteja escutando 1 ou mais
canais dele.
Documento
Entidade
usuariofurb
ClonflitosSão resolvidos com MVCC (Multiversion concurrency control)
Bucket
Bucket
4.
Arquitetura
Exemplo de arquiteturas.
REST Simples Tradicional
REST
API
Datacenter
5.
Considerações finais
thanks!
Any questions?
You can find me at
leonardo.kobus@gmail.com

Palestra couchbase-furb