Pergunta

Eu tenho uma série de tempo de simulação do modelo, que tem mais de 10 variáveis de entrada.O número de diferentes simulação de instâncias seria mais do que 1 milhão de pessoas, e cada uma simulação de instância gera algumas linhas de saída a cada dia.

Para guardar o resultado da simulação em um banco de dados relacional, que eu projetei tabelas como esta.

criar tabela SimulationModel (

simul_id integer chave primária,

input0 seqüência de caracteres numéricos,

input1 seqüência de caracteres numéricos,

...)

criar tabela SimulationOutput (

dt DateTime chave primária,

simul_id integer chave primária,

output0 numérico,

...)

Para fazer com que cada modelo de ser único, eu estou considerando alguns aspectos, como abaixo.

  1. colocar uma restrição exclusiva em todas as colunas de entrada do SimulationModel tabela

  2. redesenho SimulationModel tabela para agrupar colunas de entrada em 2~3 colunas e colocar uma restrição exclusiva em colunas agrupadas.(Fazendo uma longa cadeia de valor como "input0_input1_input2")

  3. esquecer-se sobre o lado do servidor de restrição e fazer o trabalho no lado da aplicação.

Como você acha sobre essas opções?

Não há nenhum problema para utilizar um índice exclusivo em mais de 10 colunas com milhões de linhas?

Há alguma outra maneira para recomendar?

(Eu uso o postgresql)

Foi útil?

Solução

Criar o exclusivo restrição.10 colunas com um par de milhões de linhas não é realmente uma grande mesa.Também os testes serão presumivelmente se beneficiar de ter um índice para trabalhar, ou pelo menos um índice não faria mal nenhum.

Outras dicas

Se você criar duas tabelas para o seu simulationmodel como este:

Table SimulationModel {
id: integer,
...
}

Table SimulationModelInput {
simulationmodel_id: integer foreign key(SimulationModel.id),
input: string or numeric,
...
}

em seguida, você pode colocar uma única restringir em (simulationmodel_id, de entrada), mas a consulta para buscar a configuração é mais complexo.

O índice exclusivo é o caminho a percorrer para se certificar de que cada conjunto de entradas é único.

Você poderia criar um único "único", coluna que é um hash de outras colunas e chamar a identidade.

Eu iria lidar com a restrição de exclusividade na aplicação, especialmente se apenas um processo é a criação de simulações.Em seguida, você pode ter um ou mais índices não exclusivos sobre comumente filtrada colunas de entrada para o acesso eficiente.

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