Sign inSign up

scieloorg/kernel

By scieloorg

•Updated 5 months ago

É o componente central da nova arquitetura de sistemas de informação da Metodologia SciELO.

Image
0

10K+

scieloorg/kernel repository overview

⁠Kernel

Kernel é o componente central da nova arquitetura de sistemas de informação da Metodologia SciELO, ainda em fase de desenvolvimento. É responsável pela gestão, preservação e desempenha o papel de fonte autoritativa dos dados de uma coleção de periódicos científicos.

                            +------------+  +--------------------+
                            | Public     |  | OAI-PMH            |
                            | website    |  | data provider, etc |
                            +------------+  +--------------------+
                                    ^              ^
                                    |              |
+-------------------+       +------------------------------+      +--------------+
|  Data ingestion   |       |                              |      |              |
|  workflow         |------>|            Kernel            |----->| Integrations |
|                   |       |                              |      |              |
+-------------------+       +------------------------------+      +--------------+

Principais características:

  • Opera como um serviço Web, por meio de interface RESTful;
  • Suporta a representação de fascículos ou qualquer outro grupo de documentos por meio de uma abstração chamada Documents bundle;
  • Preservação das versões dos metadados de Periódicos e Documents bundle;
  • Preservação dos documentos XML e seus ativos digitais em múltiplas versões;
  • Garantia da integridade referencial entre o documento em XML e seus ativos digitais;
  • Replicação por meio de log de mudanças e notificação em barramento de eventos.

Para mais informação sobre a nova arquitetura de sistemas de informação da Metodologia SciELO consulte https://docs.google.com/document/d/14YBl7--4ouaWBQhxzUYWRuhmegwnSYrDgupsED6rhvM/edit?usp=sharing⁠

⁠Requisitos

  • Python 3.7+
  • MongoDB

⁠Implantação local

Configurando a aplicação:

diretiva no arquivo .inivariável de ambientevalor padrão
kernel.app.mongodb.dsnKERNEL_APP_MONGODB_DSNmongodb://db:27017
kernel.app.mongodb.dbnameKERNEL_APP_MONGODB_DBNAMEdocument-store
kernel.app.mongodb.replicasetKERNEL_APP_MONGODB_REPLICASET
kernel.app.mongodb.readpreferenceKERNEL_APP_MONGODB_READPREFERENCEsecondaryPreferred
kernel.app.mongodb.writetoKERNEL_APP_MONGODB_WRITETO1
kernel.app.mongodb.transactions.enabledKERNEL_APP_MONGODB_TRANSACTIONS_ENABLEDFalse
kernel.app.prometheus.enabledKERNEL_APP_PROMETHEUS_ENABLEDTrue
kernel.app.prometheus.portKERNEL_APP_PROMETHEUS_PORT8087
kernel.app.sentry.enabledKERNEL_APP_SENTRY_ENABLEDFalse
kernel.app.sentry.dsnKERNEL_APP_SENTRY_DSN
kernel.app.sentry.environmentKERNEL_APP_SENTRY_ENVIRONMENT

A configuração padrão assume o uso de uma instância standalone do MongoDB. Para uma instância de produção recomenda-se o uso de replica sets. Para mais detalhes acesse https://docs.mongodb.com/manual/replication/⁠.

Ao conectar-se a um replica set, a diretiva kernel.app.mongodb.replicaset deve ser definida com o nome do replica set. Além disso, é possível informar os diversos seeds do replica set por meio da diretiva kernel.app.mongodb.dsn, separando suas URIs com espaços em branco ou quebra de linha.

De maneira a garantir a consistência dos dados em ambiente de produção, recomenda-se que seja habilitada a diretiva kernel.app.mongodb.transactions.enabled. Esta diretiva depende do uso de replica sets. Recomenda-se o uso do MongoDB 4.4+, caso contrário tanto o banco de dados quanto as coleções terão de ser criadas explicitamente pelo DBA. Para mais detalhes acesse https://docs.mongodb.com/master/core/transactions/⁠.

Configurações avançadas:

variável de ambientevalor padrão
KERNEL_LIB_MAX_RETRIES4
KERNEL_LIB_BACKOFF_FACTOR1.2
KERNEL_LIB_OBJECTSTORE_TIMEOUT2
⁠Executando via código-fonte e Pip:
$ git clone https://github.com/scieloorg/kernel.git
$ cd kernel
$ pip install -r requirements.txt && python setup.py develop
$ pserve development.ini

Esta configuração espera uma instância de MongoDB escutando localhost na porta 27017.

Na primeira vez será necessário criar a estrutura e os índices do banco de dados. Para tal execute o comando kernelctl create-collectionsmongo-db-dsn dbname | kernelctl create-indexesmongo-db-dsn dbname.

⁠Executando via Docker:

$ docker-compose up -d

Na primeira vez será necessário criar a estrutura e os índices do banco de dados:

$ docker-compose exec webapp kernelctl create-collectionsmongo-db-dsn dbname | kernelctl create-indexesmongo-db-dsn dbname

Testando o registro de um documento de exemplo:

curl -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' http://0.0.0.0:6543/documents/0034-8910-rsp-48-2-0347 -d '{"data": "https://raw.githubusercontent.com/scieloorg/packtools/master/tests/samples/0034-8910-rsp-48-2-0347.xml", "assets": [{"asset_id":"0034-8910-rsp-48-2-0347-gf01", "asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf01.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf01-en", "asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf01-en.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf02", "asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf02.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf02-en","asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf02-en.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf03", "asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf03.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf03-en","asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf03-en.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf04", "asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf04.jpg"},{"asset_id":"0034-8910-rsp-48-2-0347-gf04-en","asset_url":"http://www.scielo.br/img/revistas/rsp/v48n2/0034-8910-rsp-48-2-0347-gf04-en.jpg"}]}'

e em seguida:

curl -X GET -H 'Accept: text/xml' http://0.0.0.0:6543/documents/0034-8910-rsp-48-2-0347

⁠Licença de uso

Copyright 2018 SciELO [email protected]⁠. Licensed under the terms of the BSD license. Please see LICENSE in the source code for more information.

https://github.com/scieloorg/document-store/blob/master/LICENSE⁠

Tag summary

Content type

Image

Digest

sha256:e39dfcc68…

Size

73 MB

Last updated

over 1 year ago

docker pull scieloorg/kernel