Pergunta

Eu tenho uma grande quantidade de dados que eu preciso para armazenar, e ser capaz de gerar relatórios sobre - cada uma representando um evento em um site (estamos falando mais de 50 por segundo, de forma tão clara os dados mais antigos precisarão ser agregadas ).

Estou avaliando abordagens para implementar isso, obviamente, ele precisa ser confiável, e deve ser o mais fácil de escala possível. Também deve ser possível gerar relatórios a partir dos dados de uma forma flexível e eficiente.

Eu estou esperando que alguns Soers tem experiência de tal software e pode fazer uma recomendação, e / ou apontar as armadilhas.

Idealmente, eu gostaria de implantar isso em EC2.

Foi útil?

Solução

Wow. Você está abrindo um tópico enorme.

Algumas coisas direita fora do topo da minha cabeça ...

  1. pensar cuidadosamente sobre o seu esquema para inserções na parte transacional e lê na parte do relatório, você pode ser melhor fora de mantê-los separados Se você tem realmente grandes volumes de dados
  2. Olhe atentamente para a latência que você pode tolerar entre os relatórios em tempo real sobre suas transações e relatórios agregados sobre seus dados históricos. Talvez você deve ter um processo que executa periodicamente e agrega suas transações.
  3. olhar cuidadosamente para qualquer exigência que vê relatórios em seus dados transacionais e agregados, seja no mesmo relatório ou como um drill-down de um para o outro
  4. protótipo com algumas consultas significativas e alguns volumes de dados realista
  5. obter-se uma qualidade de produção real, banco de dados pronto empresa, ou seja, Oracle / MSSQL
  6. pensar sobre o uso de outra pessoa / código de produto para a comunicação por exemplo Cristal / BO / Cognos

como eu digo, tópico enorme. Quando penso mais eu vou continuar adicionando a minha lista.

HTH e boa sorte

Outras dicas

Simon fez um monte de excelentes pontos, vou apenas adicionar alguns e reiterar / enfatizar alguns outros:

  1. Use o tipo de dados correto para os Timestamps -. Make certeza que o DBMS tem a precisão adequada
  2. Considere fila para a captura de eventos, permitindo múltiplas threads / processos para lidar com o armazenamento real dos eventos.
  3. Separar os esquemas para o seu armazém transacional e dados
  4. considerar seriamente uma ETL periódica de db transacional para o armazém de dados.
  5. Lembre-se que você provavelmente não tem 50 operações / segundo 24x7x365 - operações de pico vs. transações médias
  6. Investigar particionamento tabelas no SGBD. Oracle e MSSQL será tanto partição em um valor (como data / hora).
  7. Você possui uma política de retenção de arquivamento / dados desde o início. Muitos projetos apenas iniciar a gravação de dados sem planos no lugar para remover / arquivá-lo.

Im nenhuma das respostas aqui cobrem Hadoop e HDFS surpreso -. Eu sugeriria que é porque assim é o qa programadores e sua pergunta é de fato uma questão de ciência de dados

Se você está lidando com uma grande quantidade de consultas e tempo de processamento grande, você usaria HDFS (um formato de armazenamento distribuído na CE) para armazenar seus dados e consultas de lote de execução (ou seja analytics) em hardware commodity.

Você, então, disposição, tal como muitas instâncias de EC2, conforme necessário (centenas ou milhares dependendo de quão grande seus dados requisitos esmagando são) e mapa prazo reduzir queires against.your dados para produzir relatórios.

Wow .. Este é um tópico enorme.

Deixe-me começar com bancos de dados. Primeiro obter algo bom se você estiver indo para ter quantidades loucas para dados. Eu gosto Oracle e Teradata.

Em segundo lugar, há uma diferença definitiva entre a gravação de dados transacionais e relatórios / analytics. Coloque seus dados transacional em uma área e depois enrolá-lo em uma programação regular em uma área de notificação (esquema).

Eu acredito que você pode se aproximar isso de duas maneiras

  • dinheiro jogue com o problema: Comprar melhor em software de classe (bases de dados, software de apresentação) e contratar algumas liso tecnologia pessoas para ajudar

  • Tome a abordagem homegrown: Constituição apenas o que você precisa agora e crescer a coisa toda organicamente. Comece com uma base de dados simples e construir uma estrutura de relatórios web. Há uma série de ferramentas open-source de descida e agências de baixo custo que fazem este trabalho.

Quanto à abordagem EC2 .. Eu não sei como isso iria caber em uma estratégia de armazenamento de dados. O processamento é limitado, que é onde EC2 é forte. Seu principal objetivo é o armazenamento effecient e retreival.

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