GithubHelp home page GithubHelp logo

jamilatta / kernel Goto Github PK

View Code? Open in Web Editor NEW

This project forked from scieloorg/kernel

0.0 1.0 0.0 467 KB

É o componente central da nova arquitetura de sistemas de informação da Metodologia SciELO, ainda em fase de desenvolvimento.

Home Page: https://docs.google.com/document/d/14YBl7--4ouaWBQhxzUYWRuhmegwnSYrDgupsED6rhvM/edit?usp=sharing

License: BSD 2-Clause "Simplified" License

Python 99.76% Dockerfile 0.24%

kernel's Introduction

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 .ini variável de ambiente valor padrão
kernel.app.mongodb.dsn KERNEL_APP_MONGODB_DSN mongodb://db:27017
kernel.app.mongodb.replicaset KERNEL_APP_MONGODB_REPLICASET
kernel.app.mongodb.readpreference KERNEL_APP_MONGODB_READPREFERENCE secondaryPreferred
kernel.app.prometheus.enabled KERNEL_APP_PROMETHEUS_ENABLED True
kernel.app.prometheus.port KERNEL_APP_PROMETHEUS_PORT 8087
kernel.app.sentry.enabled KERNEL_APP_SENTRY_ENABLED False
kernel.app.sentry.dsn KERNEL_APP_SENTRY_DSN
kernel.app.sentry.environment KERNEL_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.

Configurações avançadas:

variável de ambiente valor padrão
KERNEL_LIB_MAX_RETRIES 4
KERNEL_LIB_BACKOFF_FACTOR 1.2

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 os índices do banco de dados. Para tal execute o comando kernelctl create-indexesmongo-db-dsn.

Executando via Docker:

$ docker-compose up -d

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

$ docker-compose exec webapp kernelctl create-indexesmongo-db-dsn

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

kernel's People

Contributors

gustavofonseca avatar jamilatta avatar joffily avatar patymori avatar robertatakenaka avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.