Ok, então esta será uma questão especulativa, principalmente orientada para o design e bastante longa. Eu pegaria um cuppa' covfefe , se eu fosse você.
Prefácio: Então, eu tenho pesquisado bancos de dados e queria um banco de dados (motor) realmente rápido ( como realmente muito ) com os seguintes itens obrigatórios ,
- Conformidade com ACID
- In-Memory-ish para IO extremamente rápido.
- Persistente ( bem... duh )
- Escalável como em cluster/master-slave/etc
- Alta Disponibilidade (HA)
- Substituição do MySQL Drop-In
- Código aberto
- Deve ser executado no servidor commodity (IYKWIM)
Então, a julgar pela minha lista otimista de requisitos, você já pularia para ....ummm
Tudo bem, tudo bem, piadas à parte, eu sei que se innodb_buffer_pool_size
for ajustado corretamente, vai ficar sem memória na maioria das vezes, mas eu digo
Não está na memória yo!
Mas você diria Ei, seu pessoal de 2k18 já deve ter criado cerca de 100% em BDs de memória, certo? Umm... na verdade eles têm, mas cada um tem suas próprias vantagens.
VoltDB Community Edition Tudo parece bem até que você perceba que não é uma substituição fácil. Ele precisa de alguns procedimentos armazenados - comandos ish em java que exigem que você reescreva todo o seu aplicativo ou pelo menos o db layer/driver/etc do seu aplicativo php. Então? EMPECILHO!!!
MemSQL , Bem, isso parece um forte concorrente para o nosso concurso " Best OpenSource In-Mem Scalable SQL Acid DB de todos os tempos ". Apenas para, o memSQL Boss ser como...
Escusado será dizer que o memSQL precisa de pelo menos 4 núcleos e 8 GB de RAM no mínimo, e o recomendado é bastante insano em 4 núcleos e 32 GB por núcleo !!!! Além disso, a versão da comunidade do memSQL ( que, aliás, não é totalmente OpenSource!, é apenas gratuita ) não suporta alta disponibilidade, pois é um recurso pago. Também é NoSQL. Então? EMPECILHO!!!
- Todos os outros dbs NoSQLish, como membase, Redis, Memcached, etc, são praticamente descartados.
Então agora a minha ideia genial!!!
Eu queria saber se poderíamos executar um cluster XtraDB/Galera com todas as instâncias sendo executadas em um RAMDisc com instantâneos regulares?
Ele recebe todas as caixas de seleção marcadas.
Apenas me ouça, Primeiro me dirigindo ao elefante na sala, Nós sabemos que rodar mysql Dbs completo de RAMDiscs é bem umm... ousado, colocado da maneira mais educada possível. Então, o que acontece se o servidor travar/desligar/etc, perdermos um nó. Enquanto todo o nosso DB Cluster como um todo ainda está vivo e chutando a**. Tudo o que temos que implementar é inicializar o banco de dados a partir do último instantâneo e sincronizar de volta com o cluster no qual os clusters são muito bons, inerentemente!
OK, espreitadelas, não sejam salgados comigo, se virem uma falha na minha implementação, oriente-me.