Coder Social home page Coder Social logo

transactional-middleware-for-nosql's People

Contributors

carlosc20 avatar dantas198 avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

dantas198

transactional-middleware-for-nosql's Issues

GC de versões e writesets

force GC para clientes lentos. Utilizar timestamp de tempo real global para cada commitTS que terá de ser propagado do líder para as réplicas

1º Put do Timestamp na BD atómico

Tentar perceber como é que o mongodb executa queries do mesmo cliente, ou seja, se as consegue executar em paralelo ou precisamos de ter vários clientes/conexões.
Se conseguir executar pedidos do mesmo cliente em paralelo então precisamos de garantir que o update do timestamp é incremental. Para isso podemos escrever os tuplos chave/valor à vontade, mas as escritas dos timestamps terão de ser sequenciais, mas assíncronas às escritas dos tuplos. O driver só devolve a resposta quando ambos estão completos.

Protocolo de abort das transações incorretas devido a uma falha no NPVS

Ideias iniciais:

Estabelecer um grupo entre os servidores NPVS. Os servidores apercebem-se das falhas uns dos outros. Quando um servidor está a iniciar pergunta aos vizinhos se foi abaixo.

1ª opção:

Se tiver ido abaixo coloca-se num estado de "alerta" e pede ao cluster RAFT o timestamp atual para conseguir saber o timestamp em que está a dar reboot e ficar correto. Quando recebe o timestamp X passa para o estado "reboot on X".
Uma transação quando lê de um NPVS traz consigo o estado em que o servidor está. Se receber o estado "alerta" aborta logo, se receber "reboot on X" compara o X com o seu TS, se X for maior aborta senão continua.

2ª opção:

Ao ir abaixo informa o RAFT, que irá guardar no cluster o Timestamp em que esse servidor foi abaixo. Quando uma transação dá commit envia também os servidores de onde leu se o seu TS for inferior ao guardado para algum dos servidores de onde leu é abortada.
O npvs enquanto não receber confirmação do raft terá de adiar pedidos de leituras (guarda-os), para que uma transação incorreta não chegue antes da informação de que o servidor foi abaixo.

Comparação 1ª com a 2ª

  • mais latência na leitura (em todas)
  • reduz carga no líder RAFT porque podem dar abort no cliente
  • transação aborta mal ocorra a falha. Não faz mais pedidos ao NPVS (menos carga)
  • menos aborts
  • permite omitir o commit em transações read only

dependerá da frequência de falhas

Ordenar as respostas dos flushes através do timestamp de commit de cada uma

Como as respostas podem vir desordenadas em relação à ordem em que foram submetidas devemos ordena-las no que toca à consequente operação de update do certifier. Caso haja uma "gap" ela pode também ter ocorrido devido a falhas na escrita, por isso a bd pode estar inconsistente. Neste caso temos de ver talvez até com o prof se é correto dizer que a bd está numa versão mais avançada, mas numa versão anterior houve falhas.

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.