Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


Março – 2016
Versão 1.1Instruções para instalação e configuração do
CouchDB para o TOTVS.FormBuilder Índice
Sobre o CouchDB:
Instalação:
Configuração:
Criação de Databases
CouchDB Replication:
Backup de arquivos
Índices do CouchDB










Âncora
_Toc485037496
_Toc485037496
Sobre o CouchDB:


Apache CouchDB, comumente referido como CouchDB, é um banco de dados de código-aberto que foca na facilidade de uso e na filosofia de ser "um banco de dados que abrange a Web". É um banco de dados não-relacional (NoSQL) que usa JSON para armazenar os dados, JavaScript como sua linguagem de consulta usando o MapReduce, e HTTP como API. Uma de suas características marcantes é a facilidade na replicação. CouchDB foi lançado em 2005, e em 2008 tornou-se um projeto da Apache Software Foundation.
Ao contrário de um banco de dados relacional, o CouchDB não armazena os dados e relacionamentos em tabelas. Cada banco de dados é uma coleção de documentos independentes, e cada documento mantém seus próprios dados e esquemas. Uma aplicação pode acessar vários bancos de dados, por exemplo, no smartphone do usuário e outro em um servidor. Os metadados do documento contém informações de revisão, possibilitando mesclar quaisquer diferenças que possam ter ocorrido enquanto os bancos de dados estavam desconectados.
CouchDB implementa uma forma de Controle de concorrência multiversão (MVCC), a fim de evitar a necessidade de travar o arquivo de banco de dados durante as gravações. Os conflitos são deixados para a aplicação de resolver. Resolver um conflito geralmente envolve primeira mesclagem de dados em um dos documentos, apagando o antigo.
Outras características são a semântica ACID com consistência eventual, MapReduce, replicação incremental e tolerância a falhas. A administração é suportada com uma aplicação web embutida chamado Futon.
Fonte: Wikipedia (https://pt.wikipedia.org/wiki/CouchDB)




Âncora
_Toc485037497
_Toc485037497
Instalação:


Para instalação do banco de dados CouchDB, seguir as instruções abaixo:
Instalar o executável "setup-couchdb-1.5.1_R16B02.exe".
Instalar como SERVIÇO WINDOWS
Definir o "Tipo de inicialização" como AUTOMÁTICO
Image Added
Testar o acesso no endereço local http://localhost:5984/
A resposta deve ser parecida com ==> {"couchdb": "Welcome", "uuid": "###########", "version": "1.5.1", "vendor":{ "name": "The Apache Software Foundation", "version": "1.5.1" }}
Image Added
Para mais informações, consulte: http://docs.couchdb.org/en/1.5.1/install/windows.html

Âncora
_Toc485037498
_Toc485037498
Configuração:

Wiki Markup
\\
As configurações abaixo são obrigatórios para que o CouchDB funcione corretamente:
\\
*Criar o usuário administrador*
Acessar o endereço [http://localhost:5984/_utils/|http://localhost:5984/_utils/] (preferencialmente navegador Chrome ou Firefox)
Admin Party FIX (à direita do rodapé): criar o usuário ==> "admin" com senha ==> "totvs"
\\
*Corrigir a limitação de acesso*
Acessar o endereço [http://localhost:5984/_utils/|http://localhost:5984/_utils/] e logar como admin
Menu TOOLS ==> CONFIGURATION
Chave "bind_address" deve ter o valor ==> 0.0.0.0
Com essa alteraçao o serviço fica acessível pela REDE
!worddavf80ff5b0d2042587a46f438d7f5748cf.png|height=120,width=624!
\\
*Corrigir a limitação de MAP/REDUCE*
Acessar o endereço [http://localhost:5984/_utils/|http://localhost:5984/_utils/] e logar como admin
Menu TOOLS ===> CONFIGURATION
Chave "reduce_limit" deve ter o valor ==> false
!worddav66a4c4293810ca5c581ae832f1536e98.png|height=80,width=624!
\\
*Ativar a compactação de Databases e Views (importante!)*
Acessar o endereço [http://localhost:5984/_utils/|http://localhost:5984/_utils/] e logar como admin
Menu TOOLS ===> CONFIGURATION
Criar nova chave usando o menu "Add a new section"
section => _compactions_
option => _{_}default_
value = _\[\{db_fragmentation, "70%"\}, \{view_fragmentation, "60%"\}, \{from, "01:00"\}, \{to, "05:00"\}\]_
!worddav5d570125a01a3d32e626dcb9018ccd9f.png|height=120,width=624!
\\
*Fazer a verificação da instalação*
Usar o utilitário em [http://localhost:5984/_utils/verify_install.html|http://localhost:5984/_utils/verify_install.html]
!worddav0053a8a29debee5c4c3c847f5c3a877e.png|height=195,width=525!
\\
 \\

Âncora
_Toc485037499
_Toc485037499
Criação de Databases


As seguintes databases devem ser criadas no CouchDB:
totvs_formbuilder_model_datasourcemodel
totvs_formbuilder_model_formbuildermodel
totvs_formbuilder_model_formfinishedmodel
totvs_formbuilder_model_formresponsemodel
totvs_formbuilder_model_metadatamodel
Para criar as databases, seguir o processo abaixo:
Acessar o endereço http://localhost:5984/_utils/ e logar como admin
Menu CREATE DATABASE
Image Added
Importante: lembrando que todas as databases citadas acima devem ser criadas.
















Âncora
_Toc485037500
_Toc485037500
CouchDB Replication:


A replicação (replication) é um mecanismo que permite que diversas instâncias de CouchDB se mantenham SINCRONIZADAS. Dessa forma, é possível fazer com que as instâncias sincronizadas sejam conectadas a um serviço de Load Balance, para aumentar a disponibilidade do banco de dados (além de contar com backup em tempo real).
Image Added
Banco de dados {}replicator_
Quando instalado, o CouchDB já cria uma database chamada {}replicator{_}.
É nesse banco de dados que são configuradas as instruções de sincronização.
Cada instrução de sincronização deve ser registrada como um novo DOCUMENTO (para criar documentos, deve logar como admin, acessar a database {}replicator_ e depois o menu NEW DOCUMENT).
Em cada instrução de sincronização é especificada apenas 1 database + 1 servidor de origem + 1 servidor destino.
O documento deve conter os campos abaixo:
_id  é o identificador do registro (para melhor controle, colocar nome da database + servidor origem + servidor destino)
source  é o nome da database local que será sincronizada
target  é o endereço completo da database no servidor destino. Deve conter o usuário, senha, endereço do HOST destino, porta e nome da database (o mesmo nome da database local)
create_target  caso a database ainda não exista no servidor destino, será criada automaticamente (sempre conterá o valor true)
continuous  indica que a sincronização é contínua. Caso o serviço seja interrompido, a sincronização é retomada assim que o serviço estiver disponível novamente (sempre conterá o valor true)
Image Added
Assim que o documento é salvo, a sincronização definida nele já é iniciada automaticamente.
Importante: cada instrução é unidirecional. Isto é: somente sincroniza registros da ORIGEM para o DESTINO especificado no documento. Para sincronização BIDIRECIONAL, deve também ser criado um documento no banco de dados {}replicator_ do servidor DESTINO que define a instrução de sincronização para o servidor ORIGEM.
Caso haja mais de 2 servidores, as instruções devem ser registradas em todos.
Databases que devem ser sincronizadas
As databases que devem ser sincronizadas para o correto funcionamento do TOTVS.FormBuilder são as seguintes:
totvs_formbuilder_model_datasourcemodel
totvs_formbuilder_model_formbuildermodel
totvs_formbuilder_model_formfinishedmodel
totvs_formbuilder_model_formresponsemodel
totvs_formbuilder_model_metadatamodel

Exemplo de sincronização entre 3 servidores
Num cenário de alta disponibilidade, com 3 instâncias de CouchDB atendendo as requisições intermediadas por um serviço de Load Balance, as configurações de sincronização das databases do TOTVS.FormBuilder no CouchDB ficam definidas conforme a matriz abaixo:

 

TARGET

 

 

 

SOURCE

 

CouchDB001

CouchDB002

CouchDB003

 

 

CouchDB001

-

totvs_formbuilder_model_datasourcemodel
totvs_formbuilder_model_formbuildermodel
totvs_formbuilder_model_formfinishedmodel
totvs_formbuilder_model_formresponsemodel
totvs_formbuilder_model_metadatamodel

totvs_formbuilder_model_datasourcemodel
totvs_formbuilder_model_formbuildermodel
totvs_formbuilder_model_formfinishedmodel
totvs_formbuilder_model_formresponsemodel
totvs_formbuilder_model_metadatamodel

 

 

CouchDB002

totvs_formbuilder_model_datasourcemodel
totvs_formbuilder_model_formbuildermodel
totvs_formbuilder_model_formfinishedmodel
totvs_formbuilder_model_formresponsemodel
totvs_formbuilder_model_metadatamodel

-

totvs_formbuilder_model_datasourcemodel
totvs_formbuilder_model_formbuildermodel
totvs_formbuilder_model_formfinishedmodel
totvs_formbuilder_model_formresponsemodel
totvs_formbuilder_model_metadatamodel

 

 

CouchDB003

totvs_formbuilder_model_datasourcemodel
totvs_formbuilder_model_formbuildermodel
totvs_formbuilder_model_formfinishedmodel
totvs_formbuilder_model_formresponsemodel
totvs_formbuilder_model_metadatamodel

totvs_formbuilder_model_datasourcemodel
totvs_formbuilder_model_formbuildermodel
totvs_formbuilder_model_formfinishedmodel
totvs_formbuilder_model_formresponsemodel
totvs_formbuilder_model_metadatamodel

-

 


Cada um dos itens no modelo acima refere-se a um documento de instrução de sincronização. São ao todo 30 documentos (10 documentos em cada servidor). Esses documentos devem seguir o padrão visto anteriormente.
Abaixo segue um exemplo detalhado de DOCUMENTO de sincronização:

Source: CouchDB001
Target: CouchDB002
Database: totvs_formbuilder_model_datasourcemodel

{
"_id": " totvs_formbuilder_model_datasourcemodel-CouchDB001-CouchDB002",
"source": "totvs_formbuilder_model_datasourcemodel",
"target": "http://usuario:senha@CouchDB002:5984/totvs_formbuilder_model_datasourcemodel",
"create_target": true,
"continuous": true
}


Para mais informações, consulte: http://docs.couchdb.org/en/1.5.1/replication/

Âncora
_Toc485037501
_Toc485037501
Backup de arquivos


Caso seja necessário fazer backup de dados, os arquivos de databases do CouchDB estão localizados na seguinte pasta:
Image Added
Para restaurar um backup, basta sobrescrever estes arquivos com a versão do backup.
Para mais inf

Âncora
_GoBack
_GoBack
ormações, consulte: https://wiki.apache.org/couchdb/How_to_make_filesystem_backups

Âncora
_Toc485037502
_Toc485037502
Índices do CouchDB


Toda vez que o backup do CouchDB for restaurado em outro ambiente, os índices devem ser deletados.
Sempre que pegarmos arquivos de dados de outras bases do CouchDB, precisamos deletar os índices.
Os arquivos de índices do CouchDB são gerados a partir de um hash MD5 do texto de definição de cada view.
Temos na aplicação do FormBuilder uma rotina que garante que a view esteja com o formato que a aplicação precisa, e toda vez que a aplicação é reiniciada ela salva a definição da view novamente no CouchDB.
Precisamos parar o serviço do Apache CouchDB e depois de deletar os arquivos, depois da deleção pode subir o serviço, que os índices serão recriados corretamente.
Deletar os arquivos (.view{*}) que ficam localizados na seguinte pasta:
"C:\Program Files (x86)\Apache Software Foundation\CouchDB\var\lib\couchdb\.totvs_formbuilder_model_formresponsemodel_design\mrview"


Em caso de dúvidas gerais na execução, instalação, suporte:
http://localhost:5984/_utils/docs/
http://docs.couchdb.org/en/1.5.1/