bireme / thesaurus-wp-plugin

Other
0 stars 1 forks source link

Criar MySQL banco de dados DeCS 2020 para produção #28

Closed falbrito closed 4 years ago

falbrito commented 4 years ago
falbrito commented 4 years ago

Realizado

Processo de cópia do banco de dados CONGELADO de FI-Admin - Thesaurus para banco CONGELADO que servirá Portal DeCS.
20200326

basalto11.bireme.br
base: tesauro_decs2020_prod
user: 20200325_tesdecs
pass: tesdecs@2020
porta: 3306

Foi criado no servidor BASALTO11 um banco de dados ( tesauro_decs2020_prod ) com apenas as tabelas do Tesauro, ou seja
apenas tabelas que o seu nome inicial seja 'thesarus_' .

Ao todo foram 23 tabelas

'thesaurus_code_controller'
'thesaurus_code_controller_term'
'thesaurus_conceptlistdesc'
'thesaurus_conceptlistqualif'
'thesaurus_descriptiondesc'
'thesaurus_descriptionqualif'
'thesaurus_entrycombinationlistdesc'
'thesaurus_identifierconceptlistdesc'
'thesaurus_identifierconceptlistqualif'
'thesaurus_identifierdesc'
'thesaurus_identifierdesc_abbreviation'
'thesaurus_identifierqualif'
'thesaurus_legacyinformationdesc'
'thesaurus_legacyinformationqualif'
'thesaurus_pharmacologicalactionlist'
'thesaurus_previousindexinglistdesc'
'thesaurus_seerelatedlistdesc'
'thesaurus_termlistdesc'
'thesaurus_termlistqualif'
'thesaurus_theraurusoccurrencelistdesc'
'thesaurus_thesaurus'
'thesaurus_treenumberslistdesc'
'thesaurus_treenumberslistqualif'

---------------------------------------------------------------------------------------------------

O processo de carregamento do conteúdo congelado de 2020 foi o seguinte:
1) Descompactação do arquivo contendo a versão congelada para o ano de 2020.
SQL utilizado: mysql-2020-03-18_0857.sql

operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $ more ../anota_LOAD_TESAURO_2020-PROD.txt
operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $ HOST='basalto11.bireme.br'
operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $ DB_NAME='tesauro_decs2020_prod'
operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $ DB_USER='20200325_tesdecs'
operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $ DB_PASS='tesdecs@2020'
operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $ nohup mysql -u$DB_USER -p$DB_PASS -h$HOST $DB_NAME < mysql-2020-03-18_0857.sql &> load.YYYYMMDD.out &
[1] 35198
operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $
operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $
operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $
operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $ tail -f load.YYYYMMDD.out
^C
[1]+  Done                    nohup mysql -u$DB_USER -p$DB_PASS -h$HOST $DB_NAME < mysql-2020-03-18_0857.sql &>load.YYYYMMDD.out
operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $

2) Aplicação dos comandos para carregar o arquivo SQL em banco

operacao@serverofi5:/bases/decs.django/bkp_mysql/VERSAO-CONGELADA-2020-mysql-2020-03-18_0857_FIADMIN_PROD $ more ../anota_LOAD_TESAURO_2020-PROD.txt
# TESAURO DECS 2020 - Producao
# ============================

HOST='basalto11.bireme.br'
DB_NAME='tesauro_decs2020_prod'
DB_USER='20200325_tesdecs'
DB_PASS='tesdecs@2020'

nohup mysql -u$DB_USER -p$DB_PASS -h$HOST $DB_NAME < mysql-2018-08-28.sql &> load.YYYYMMDD.out &

3) Criação de indices para melhorar performance - Após o carregamento do banco.

a) thesaurus_identifierdesc.thesaurus_id
create index idx_thesaurus_thesaurus_identifierdesc_thesaurus_id on thesaurus_identifierdesc(thesaurus_id);
# Se precisar apagar o indice criado
# ALTER TABLE thesaurus_identifierdesc DROP INDEX idx_thesaurus_thesaurus_identifierdesc_thesaurus_id;

b) thesaurus_treenumberslistdesc.tree_number
create index idx_thesaurus_treenumberslistdesc_tree_number on thesaurus_treenumberslistdesc(tree_number);
# Se precisar apagar o indice criado
# ALTER TABLE thesaurus_treenumberslistdesc DROP INDEX idx_thesaurus_treenumberslistdesc_tree_number;

c) thesaurus_identifierconceptlistdesc.preferred_concept
create index idx_thesaurus_identifierconceptlistdesc_preferred_concept on thesaurus_identifierconceptlistdesc(preferred_concept);
# Se precisar apagar o indice criado
# ALTER TABLE thesaurus_identifierconceptlistdesc DROP INDEX idx_thesaurus_identifierconceptlistdesc_preferred_concept;

d) thesaurus_termlistdesc
# term_thesaurus
# concept_preferred_term
# record_preferred_term
create index idx_thesaurus_termlistdesc_three_fields on thesaurus_termlistdesc(term_thesaurus,concept_preferred_term,record_preferred_term);
# Se precisar apagar o indice criado
# ALTER TABLE thesaurus_termlistdesc DROP INDEX idx_thesaurus_termlistdesc_three_fields;

4) Alteração do direcionamento para plugin
No arquivo settings_local.py do fi-admin.beta.bvsalud.org foi incluído a indicação ao novo banco

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'fi_admin_beta',
        'USER': 'fi-admin-user',
        'PASSWORD': 'fi@admin2015',
        'HOST': 'basalto08.bireme.br',
        'PORT': '',
    },

    # Versao congelada de 2020
    'decs_portal': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'tesauro_decs2020_prod',
        'USER': '20200325_tesdecs',
        'PASSWORD': 'tesdecs@2020',
        'HOST': 'basalto11.bireme.br',
        'PORT': '',
    },    

}

---------------------------------------------------------------------------------------------------

Observação:
No arquivo utilizado como API foi alterado e incluído em todas as referências a queries o using('decs_portal')

Ex1.:
Onde estava
        queryset = IdentifierDesc.objects.all()

Foi alterado para
        queryset = IdentifierDesc.objects.using('decs_portal').all()

Ex2.:
Onde estava
            id_abbrev = IdentifierDesc.objects.filter(id=field.id).values('abbreviation')

Foi alterado para
            id_abbrev = IdentifierDesc.objects.using('decs_portal').filter(id=field.id).values('abbreviation')

---------------------------------------------------------------------------------------------------

TESTES
Acessando um registro existente em 2020 na base congelada
http://fi-admin.beta.bvsalud.org/api/desc/thesaurus/?format=json&ths=1&decs_code=2

Acessando um registro que é inédito, ou seja só existe em fi-admin-Thesaurus de produção
http://fi-admin.beta.bvsalud.org/api/desc/thesaurus/?format=json&ths=1&decs_code=59010