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.

Foi útil?

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.

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