Quais são as práticas recomendadas para acelerar a execução de aplicativos brilhantes?

Dados:

Eu tenho um aplicativo de painel brilhante e meu conjunto de dados tem cerca de 600 MB. Aumenta em 100 MB a cada mês. Meus dados residem localmente no MySQL.

Itens do menu:

Eu tenho 6 a 7 itens da barra lateral no meu painel e cada um deles tem 10 a 12 saídas diferentes - gráficos e tabelas. Cada uma dessas guias possui de 3 a 6 entradas, como selectizeInput, slider, período, etc. para filtrar os dados.

Subconjuntos de dados:

Como não consigo carregar todos os dados na memória, para cada item de menu, crio um subconjunto de dados com base no período, mantendo o período em apenas 2 a 3 dias a partir da data do sistema.

Por exemplo:

df1 <- reactive({df[df$date >- dateinput[1] & df$date <- dateinput[2], ]})

A descrição acima obtém os dados do meu primeiro item de menu e, dependendo da entrada selecionada ou de outras entradas, estou filtrando ainda mais os dados. Por exemplo, se eu tiver um selectInput paraGender (male and female) então eu subconjuntodf1 para:

df2 <- reactive({
       if(is.null(input$Gender)){ 
          df1 
       } else if(input$Gender == "Male") 
          {df1[df1$Gender == "Male",]} 
       )}

Se eu tiver mais de uma entrada, subconjunto esse df1 ainda mais e passo os valores para df2. O df2 se torna o conjunto de dados reativo para todos os gráficos e tabelas nesse MenuItem.

Quanto maior o número de menuItem, crio mais subconjuntos para se adequar aos filtros e análises.

Enfrento dois problemas:

Em máquinas mais antigas, o aplicativo não está carregando. eEm máquinas mais recentes, o aplicativo carrega muito lentamente às vezes de 5 a 6 minutos

Após o primeiro conjunto de dados carregar, os gráficos e tabelas são renderizados mais rapidamente nas alterações reativas.

Para combater isso, tentei mover todos os parâmetros e bibliotecas comuns e repetitivas para global.R.

Eu tenho duas perguntas:

1.Existem fatores de higiene básicos que você precisa ter em mente ao minerar dados em R, especialmente através de brilho (a Mineração em R é extremamente rápida).

2. Li sobre processamento paralelo, mas quase sempre todos os exemplos falam sobre a distribuição de um único cálculo mais pesado. Podemos distribuir através de processamento paralelo, subconjunto de dados ou distribuição de gráficos / preparação de tabelas.

Observe que sou um pesquisador e não um programador, mas aprendi a usar aplicativos brilhantes e hospedados na nuvem ou localmente recentemente.

Orientações sobre isso serão muito úteis para muitos usuários iniciantes de R como eu.

questionAnswers(1)

yourAnswerToTheQuestion