Pergunta

Pergunta sobre Cassandra

Por que diabos na terra alguém escreveria um mecanismo de banco de dados em Java?
Eu posso entender por que você gostaria de ter uma interface Java, mas o motor ...

Eu estava com a impressão de que não há nada mais rápido que C/C ++, e que um mecanismo de banco de dados não deveria ser mais lento que a velocidade máxima, e certamente não usar coleta de lixo ...

Alguém pode me explicar que sentido possível que faz / por que Cassandra pode ser mais rápido que o SQL comum que é executado no código C / C ++?

Editar:
Desculpe pela parte "Por que o inferno na terra", mas realmente não fazia sentido para mim.
Eu esqueci de considerar que um banco de dados, diferentemente dos programas médios de usuário de varejo de jardim, precisa ser iniciado apenas uma vez e depois corre por muito tempo, e provavelmente também como o único programa no servidor, que é evidentemente para um diferença de desempenho importante.

Eu estava mais comparando/referenciando a um programa tributário 'disfuncional' (para dizer o mínimo) do Java que eu estava usando no momento da redação (ou melhor, gostaria de usar).

De fato, diferentemente do uso de Java para programas tributários, o uso do Java para escrever um programa de servidor dedicado faz todo o sentido.

Foi útil?

Solução

Eu posso ver alguns motivos:

  • Segurança: é mais fácil escrever software seguro em Java do que em C ++ (lembre -se dos transbordamentos do buffer?)
  • Desempenho: não é tão pior. É definitivamente pior na startup, mas uma vez que o código está em funcionamento, não é uma grande coisa. Na verdade, você deve se lembrar de um ponto importante aqui: o código Java é continuamente otimizado pela VM; portanto, em algumas circunstâncias, fica mais rápido que o C ++

Outras dicas

O que você quer dizer com C ++? A montagem codificada à mão seria mais rápida se você tiver algumas décadas de sobra.

Por que diabos na terra alguém escreveria um mecanismo de banco de dados em Java?

A independência da plataforma é um fator bastante grande para os servidores, porque você tem muito mais hardware e heterogenidade do SO do que com os PCs de mesa. Outro é a segurança. Não ter que se preocupar com transbordamentos de buffer significa que a maioria dos piores tipos de orifícios de segurança é simplesmente impossível.

Eu estava com a impressão de que não há nada mais rápido que C/C ++, e que um mecanismo de banco de dados não deveria ser mais lento que a velocidade máxima, e certamente não usar coleta de lixo ...

Sua impressão está incorreta. C/C ++ não é necessariamente mais rápido que o Java, e os coletores modernos de lixo têm um grande papel nisso, porque permitem que a criação de objetos seja incrivelmente rápida.

Não se esqueça de que as VMs Java usem um motor Just-in-time (JIT) que executam otimizações em voo para tornar o Java comparável ao C ++ em termos de velocidade. Tendo em mente que o Java é uma linguagem bastante produtiva (apesar de seus opositores) e portátil, juntamente com a capacidade de otimização do JIT, significa que Java não é uma escolha irracional para algo assim.

A penalidade de desempenho para os horários de execução java moderna não é tão grande e a programação em Java é menos propensa a erros do que em c.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top