Estamos pensando em usar uma sequência compartilhada para atribuir ids a chaves primárias para todas as tabelas em nosso banco de dados. Existem cerca de 100 deles. Apenas alguns são inseridos com frequência e regularidade. Queremos descartar que seja "uma ideia terrível por um motivo óbvio" antes de passarmos para a fase de realmente experimentá-lo e testá-lo em carga.
Nosso pico de carga é da ordem de 1.000 inserções por segundo, em algumas tabelas.
Nossa pesquisa até agora indica que - a velocidade de geração de sequência não deve ser um problema - a fragmentação de sequência (lacunas) acontecerá, mas não deve ser um problema - a exaustão de id não será um problema
Não temos certeza se estamos perdendo outras grandes coisas. Ficaríamos gratos pelas opiniões das pessoas, especialmente de pessoas que tentaram antes e tiveram experiências positivas ou negativas.
Por contexto - temos duas motivações principais para fazer isso.
Uma motivação para fazer isso é para que possamos definir um monte de dicionários (nós os chamamos de escopos) e ter palavras legíveis para humanos atribuídas a esses ids, então queremos ter certeza de que ids em tabelas diferentes nunca se sobreponham. Assim, em um escopo, id 12345 pode receber o valor "Green" e em outro pode ser atribuído "Verde". (Na verdade, não o usamos para internacionalização, mas podemos um dia).
A outra motivação é tornar mais fácil ter várias implantações no campo e saber (definindo exclusivamente a sequência de cada par de dígitos mais significativos) que nossas implantações não sobreporão as chaves primárias. (Como um GUID lite).