Eu sou novo no PostgreSQL e um tanto novo nos bancos de dados em geral. Existe uma maneira estabelecida de como devemos indexar valores UUID no Postgres? Estou dividido entre usar hash e usar um trie, a menos que já exista algo incorporado que ele use automaticamente. O que quer que eu use vai lidar com grandes quantidades de dados.
A família de operadores SP-GiST "text_ops" indexa usando uma trie. Como os UUIDs são bastante longos e muito diferentes, esses sons são atraentes, mesmo que eu apenas fizesse pesquisas de correspondência completa.
Há também uma opção de hash. Hashing é O (1), e não precisarei fazer nenhuma comparação além da igualdade, é claro, mas como os UUIDs são muito longos, tenho medo de que gerar hashes a partir deles perca muito tempo.
Ou isso é algo que depende muito do sistema e usa detalhes?
Prefiro usar bigserial na maioria dos casos, mas me disseram para usar o uuid para isso. Precisamos de uuid porque podemos ter vários servidores usando bancos de dados diferentes, portanto não há garantia de que teremos bigints exclusivos. Poderíamos usar uma sequência (e semente) diferente para cada servidor, mas ainda não é tão flexível quanto os UUIDs. Por exemplo, não poderíamos migrar entradas de banco de dados de um servidor para outro sem converter os IDs e suas referências em todos os lugares.