Um banco de dados Na memória solução mais rápida em tempo real de replicação [fechado]
-
22-09-2019 - |
Pergunta
Temos 10 mil a linha da tabela que tem apenas 2 colunas, uma chave primária e uma segunda coluna que manter o estado.O problema é que este estado para ser replicado em 3 localizações físicas NOS eua(cerca de 2000 quilômetros de distância), em tempo quase real ou tão rápido como praticamente possível, através de uma rede.Qualquer um dos 3 locais pode atualizar o estado para uma determinada linha nesta tabela, que deve ser replicado em tempo quase real para os outros 2 locais.
Há alguma open source ou comerciais, peso leve, banco de dados em memória que pode ajudar-nos a alcançar o que estamos tentando fazer.Disco de persistência não é importante aqui.
Solução
Verificação de saída Redis. Aqui está o Replicação Howto.
Além disso, se você decidir que o banco de dados não precisa estar na memória, só precisa ser rápido, você pode considerar Couchdb. Pode fazer replicação contínua, que é essencialmente instantânea, e todos os nós são mestres. Possui um mecanismo de detecção e resolução de conflitos bem pensados. Esta postagem do blog é uma ótima introdução aos mais recentes e mais recentes recursos de replicação do CouchDB.
Outras dicas
Embora não haja suporte de replicação interno, você pode usar gatilhos com uma memória Sqlite base de dados. Dentro do gatilho, use um função personalizada para comunicar as mudanças nos outros sites.
Você pode querer conferir Altibase. Eles disseram que têm o banco de dados de memória mais rápido do mundo. Eles dizem que são 5 a 10 vezes mais rápidos que a maioria dos DBMs de memória e também têm uma avaliação gratuita no site.
Eu executar um SQL complexas que tem mais de 6000 linhas de 10000 de vezes na minha Websphere Server.Total líquido tempos de execução são assim:
Derby (In Memory) Oracle(standard DB) SQLite (In Memory) HSQLDb (In Memory) nano sec. second nano sec. second nano sec. second nano sec. second 1. try 58000000 0,058 6149976000 6,1 1141988000 1,14 999403000 1,00 2. try 78560000 0,078 5268477000 5,2 1182621000 1,18 1338705000 1,34 3. try 58849000 0,058 5200898000 5,2 1133003000 1,13 2239527000 2,24 4. try 60901000 0,06 5435216000 5,4 1205442000 1,21 1370711000 1,37 5. try 58798000 0,058 6501929000 6,5 1186734000 1,19 1001800000 1,00 6. try 62928000 0,062 5913053000 5,9 1224470000 1,22 1066736000 1,07 7. try 71171000 0,071 5111207000 5,1 1200769000 1,20 1304524000 1,30 8. try 66913000 0,066 5517989000 5,5 1173495000 1,17 1299230000 1,30 9. try 58777000 0,058 7209555000 7,2 1179013000 1,18 1031795000 1,03 10. try 75299000 0,075 5356514000 5,3 1182715000 1,18 1368461000 1,37 average 65019600 0,064 5766481400 5,7 1181025000 1,18 1302089200 1,30
Eu, obviamente, comparar Derby, SQLite e o HSQLDB.A Oracle não é uma memória db.Mas eu colocá-lo do resultado a tabela porque para mostrar a diferença de velocidade entre uma memória db e normal db.
PS:No SQLite e o HSQLDB resultado não são estáveis.Assim que eu escolher 10 resultados estáveis em 100 tentar.Às vezes, o HSQLDB é mais rápido do que o SQLite.Eu acho que a deles desempenho são os mesmos.