• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

magician

Estrutura de dados para BD

16 mensagens neste tópico

Boas preciso de uma estrutura de dados para funcionar como BD ou seja para guardar dados e que tenha principalmente uma boa performance de pesquisa, a inserção e remoção é secundário mas é claro que também é importante.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Podes usar ficheiros XML para guardar dados mas a performance deve ser reduzida.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Podes usar ficheiros XML para guardar dados mas a performance deve ser reduzida.

Eu sei mas eu vou utilizar serialização de objectos e queria uma ED com alta performance em memoria.

Acho que vou usar uma List, tive a fazer uns teste e um list com 9999999 entradas leva 2ms a encontrar um elemento.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma lista duplamente ligada da para os gastos.

Se as pesquisas comecarem a demorar muito tempo podes fazer um indice tipo btree

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim eu penso na HashTable mas isso é mais para tipo Chave:Valor e no meu caso é mesmo para ter apenas um objecto por posição:)

Uma lista duplamente ligada da para os gastos.

Se as pesquisas comecarem a demorar muito tempo podes fazer um indice tipo btree

Quanto á Btree acho que não é preciso tanto lol isso é mais para sistemas de ficheiros. a lista ligada é mais lenta que um lista linear também fiz teste e a lista ligada demora +-150ms a fazer uma pesquisa como referia acima.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual é a chave de procura?

Ao usar uma lista linear (vector/array) o acesso aleatório e O(1) mas é necessário saber inicialmente qual a posição do elemento pretendido. tipo: lst[20];

Se a chave é uma string a coisa muda de figura. Por isso a pesquisa depende um pouco da chave a usar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E é assim que pretendes efectivamente efectuar uma pesquisa na estrutura de dados? Não lhe chamo propriamente uma pesquisa, isso é usar um vector normalmente com acesso aleatório.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é normalmente por ultilizo a API Collections do java que tem métodos de pesquisa binário em listas. Não usei um for :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se vais fazer poucas inserções/remoções, já consideraste a hipótese de manter um vector ordenado e fazer pesquisa binária?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se vais fazer poucas inserções/remoções, já consideraste a hipótese de manter um vector ordenado e fazer pesquisa binária?

É o que estou a fazer, Vector + pesquisa binaria foi onde consegui melhor performance.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma Hash Table era capaz de dar melhores resultados. Ou então uma árvore binária balanceada (neste caso, a pesquisa seria semelhante a listas, mas a inserção/remoção devia ser mais rápida).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma Hash Table era capaz de dar melhores resultados. Ou então uma árvore binária balanceada (neste caso, a pesquisa seria semelhante a listas, mas a inserção/remoção devia ser mais rápida).

Se ele não quer perder muito tempo a implementar e possui poucas inserções/remoções, a solução actual tem uma boa relação desempenho/esforço.

Caso se quisessem coisas mais "avançadas", uma AVL ou uma Red-Black Tree seriam ideais..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se ele não quer perder muito tempo a implementar e possui poucas inserções/remoções, a solução actual tem uma boa relação desempenho/esforço.

Caso se quisessem coisas mais "avançadas", uma AVL ou uma Red-Black Tree seriam ideais..

Se ele está a usar Java, pode usar um TreeMap (que acho que usa uma Red-Black Tree), se bem que uma AVL podesse ser ligeiramente melhor. Tem ainda os HashMap's do Java, que em princípio também seriam melhores. Isto assumindo que está a usar Java, ou melhor, que não vai ter que implementar a estrutura (se bem que implementar uma AVL é um desafio interessante :thumbsup:).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim estou a usar Java mas as Hash não servem porque não vou trabalhar com dados tipo key-values e sim apenas value.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora