Hm, da minha experiência - você tem certeza que o MySQL é o melhor banco de dados para isso? Tentei ver o Oracle ou o SQL Server (embora o cluster oracle possa ter uma vantagem aqui)?
Se você acha que o custo de licenciamento vai te matar, deixe-me apenas dizer que você ainda não tem uma ideia do hardware necessário para executá-lo. Assim que você obtiver as primeiras ofertas para o SAN, você precisará disso - você provavelmente rirá do preço do software correspondente.
Apenas uma ideia.
- Cliente - digamos 10.000, conforme você indica que vai crescer rapidamente.
- Dados - vamos supor 7 milhões para um cliente médio. Isso já é 70 bilhões de linhas para a tabela de dados. Sim, desculpe, os 4 zeros realmente adicionam isso.
- Se você receber 10 tags por dados (você não indica nada), falamos de perto de 700 bilhões de linhas para o campo data_tag.
Fica mais louco.
- Se o DataTag não tiver nenhum índice e nenhuma sobrecarga (que ele possui), data: tag é 10 bytes por entrada - 2 para o tag_id (65536 é suficiente), infelizmente 8 para o data_id - você não pode endereçar 700 bilhões de entradas 4 bytes. Este é um total de cerca de 7800 gigabytes de dados brutos (700.000.000.000 * 12/1024/1024/1024). Indexação POSSIBILMENTE duplica isso.
Para processar isso com eficiência, essa é uma SAN DE ALTA RESISTÊNCIA. Nós não falamos de "10 discos" aqui, falamos de um SAN de alto nível com possivelmente 400 discos ascendentes para lidar com todos esses dados - não esqueça até agora que não temos realmente nenhum índice.
I'm running all of this on a MySQL 5.0
dedicated server (quad-core, 8Go of
ram) replicated.
Boa tentativa. Isso é bom para exatamente o que? Desculpe perguntar, mas 8GB RAM não vai realmente ajudar (não impressionado aqui), vá para uma máquina de 256GB ... O que provavelmente requer AMD e um daqueles realmente caro Opteron 8000. Mas você vai precisar da RAM.
De qualquer forma, isso seria (duvido que você representasse adequadamente os fatos) uma das maiores instalações de banco de dados do mundo.
Você DEFINITIVAMENTE deseja algo que possa lidar com isso - o clustering do Oracle ou o clustering do SQL Server pode funcionar acelerando isso se você realmente tiver que fazer isso. Isso é muito acima do que bancos de dados livres podem até pensar em manipular. Realmente.
E você precisa de procedimentos de backup adequados (que o MySQL não possui). Você também pode AMAR SQL Serve 2008 Data Page Compressão que pode reduzir o tamanho dos dados em cerca de 50% em disco. Não apenas pelos custos salvos em disco, mas porque significa menos IO - o que se traduz diretamente em mais desempenho aqui (já que você não pode armazenar em cache a tabela na memória).
Por mais que eu odeie dizer isso, você também pode querer considerar o uso do IBM DB2 em um Mainframe agradável - e eu não quero dizer rodando uma VM Linux nele. O VMS é imensamente superior para lidar com bancos de dados de superescala devido à arquitetura de hardware. Não pergunte sobre o preço;)