Estou explorando a idéia de escrever um DBMS de maneira puramente funcional. A estrutura de dados tradicional usada para indexação é a B-Tree. Gostaria de saber algum equivalente puramente funcional do B-Tree que seria otimizado para minimizar o acesso ao disco. Obrigado.
14
Respostas:
Eu sei mais sobre estruturas de dados puramente funcionais do que estruturas de dados de memória externa, mas vou tentar.
Uma árvore B pode ser escrita de maneira puramente funcional através da cópia do caminho. O caminho será curto ( ), mas a cópia de cada bloco exige que O ( B ) escreva nos blocos O ( 1 ) .O ( logBn ) O ( B ) O ( 1 )
Se você deseja permitir que a estrutura seja totalmente persistente, e não puramente funcional, acho que você pode reduzir o número de gravações em uma cópia do nó para esperado amortizado, onde w é a largura da palavra, usando o matrizes totalmente persistentes em "Tentativas Confluentemente Persistentes para Controle de Versão Eficiente"O ( lgw ) W
Você pode assistir a esta apresentação sobre o RethinkDB , que usa estruturas de dados puramente funcionais devido ao custo de gravações em SSDs.
fonte
Se você estiver interessado em escrever um banco de dados puramente funcional, provavelmente deve conferir a tese de doutorado de Phil Trinder, que tratava desse assunto. Ele tem um capítulo sobre o uso de árvores B.
fonte