Minha empresa está acorrentada a este formato MS Access '97 .MDB que temos desde o início dos tempos. Nosso esquema é hierárquico, com vários relacionamentos um-para-muitos. Estamos em um ponto em que estamos procurando alternativas, pois a lentidão e a falta de jeito geral do Access estão começando a afetar nossa produtividade.
Nossos métodos "modernos" de acesso ao banco de dados envolvem DAO.Net e grandes quantidades de cache baseado em hash. O tipo .NET System.Collections.Generic.Dictionary foi uma dádiva de Deus aqui, porque sem ele, não sei como faríamos nosso trabalho em tempo hábil. Temos vários projetos, cada um com um arquivo de banco de dados associado a ele (às vezes vários), e tendemos a interagir com eles de duas maneiras: o banco de dados é criado manualmente (usando nosso editor interno) ou gerado usando um programa que pega os dados que recebemos de outra empresa, em algum outro formato, e os converte para o nosso formato.
Em ambos os casos, nossa biblioteca .NET comum carrega todo o banco de dados em tabelas de hash por meio do Dicionário e resolve os relacionamentos de objeto com o código procurando valores na tabela de hash por ID. Ao gerar automaticamente o banco de dados, usamos outro conjunto de tabelas de hash para determinar se um objeto já existe no cache antes de adicioná-lo. Quando terminarmos de analisar os dados de origem, iniciaremos uma operação de inserção em massa multithread. Fazemos tudo isso porque qualquer outro método de acesso ao banco de dados é muito lento.
Espero ter dado contexto suficiente à minha pergunta: Existe um mecanismo de banco de dados por aí cuja velocidade de consulta possa rivalizar com as tabelas de hash como o que estou usando? O uso de memória e disco não é uma preocupação, esses bancos de dados existem apenas em máquinas de desenvolvedor, nós os convertemos para um formato diferente para uso com nosso software. Eu só quero me livrar das minhas tabelas de hash, mas não quero sacrificar a velocidade para fazer isso.