étodo para indexar um banco de dados de objet

Estou usando um banco de dados de objetos (ZODB) para armazenar relacionamentos complexos entre muitos objetos, mas estou enfrentando problemas de desempenho. Como resultado, comecei a construir índices para acelerar a recuperação e inserção de objetos. Aqui está a minha história e espero que você possa ajudar.

Inicialmente, quando eu adicionava um objeto ao banco de dados, eu o inseria em um ramo dedicado a esse tipo de objeto. Para evitar vários objetos que representam a mesma entidade, adicionei um método que iteraria sobre os objetos existentes na ramificação, a fim de encontrar duplicatas. Isso funcionou no início, mas como o banco de dados cresceu em tamanho, o tempo necessário para carregar cada objeto na memória e os atributos de verificação aumentaram exponencialmente e inaceitavelment

Para resolver esse problema, comecei a criar índices com base nos atributos do objeto para que, quando um objeto fosse adicionado, d fosse salvo no ramo de tipos e dentro de um ramo de índice de valores de atributos. Por exemplo, digamos que eu estava salvando um objeto de pessoa com os atributos firstName = 'John' e lastName = 'Smith', o objeto seria anexado ao ramo de tipo de objeto de pessoa e também às listas dentro do ramo de índice de atributo com as chaves ' John 'e' Smith '.

Isso economizou muito tempo com a verificação duplicada, pois o novo objeto poderia ser analisado e apenas o conjunto de objetos que se cruzam nos índices de atributo precisaria ser verificad

No entanto, eu rapidamente me deparei com outro problema no que diz respeito a lidar ao atualizar objetos. Os índices precisariam ser atualizados para refletir o fato de que talvez não sejam mais precisos. Isso requer a lembrança de valores antigos, para que eles possam ser acessados diretamente e o objeto removido, ou a iteração sobre todos os valores de um tipo de atributo para localizar e remover o objeto. De qualquer forma, o desempenho está rapidamente começando a se degradar novamente e não consigo descobrir uma maneira de resolvê-l

Você já teve esse tipo de problema antes? O que você resolveu ou isso é apenas algo que eu tenho que lidar ao usar o OODBM

Agradecemos antecipadamente a ajuda.

questionAnswers(2)

yourAnswerToTheQuestion