Tabela de strings sortidas (SSTable) ou Árvore B + para um índice de banco de dado

Usando dois bancos de dados para ilustrar este exemplo: CouchDB eCassandr.

CouchDB

@CouchDB usa uma árvore B + para índices de documentos (usandoma modificação inteligen para trabalhar em seu ambiente somente de acréscimo) - mais especificamente, à medida que os documentos são modificados (inserir / atualizar / excluir), eles são anexados ao arquivo de banco de dados em execução, bem como a um caminho Leaf -> Nó completo da árvore B + de todos os nós efetuada pela revisão atualizada logo após o documento.

Estas revisões de índice com partes separadas são alinhadas ao lado das modificações, de modo que o índice completo seja uma união das modificações mais recentes do índice anexadas ao final do arquivo, juntamente com outras partes mais adiante no arquivo de dados que ainda são relevantes ainda não foi modificado.

Pesquisando o Árvore B é O (logon).

Cassandr

Cassandra mantém as chaves de registro classificadas, na memória, em tabelas (vamos pensar nelas como matrizes para esta pergunta) e as escreve como separadas (classificadas) tabelas de sequência classificada de tempos em tempos

Podemos pensar na coleção de todas essas tabelas como o "índice" (pelo que entendi

Cassandra é necessário para compactar / combinar essas tabelas de sequência classificada de tempos em tempos, criando uma representação de arquivo mais completa do índic

Procurandoum array ordenado é O (logn).

Questã

Assumindo um nível semelhante de complexidade entre manter trechos de árvore B + parciais no CouchDB e índices de seqüência ordenada parciais no Cassandra e considerando que ambos fornecem tempo de pesquisa O (logn), o que você acha que faria uma melhor representação de um índice de banco de dados e porque

Estou especificamente curioso se há um detalhe de implementação sobre um sobre o outro que o tornaparticularment atraente ou se ambos são uma lavagem e você escolhe a estrutura de dados com a qual prefere trabalhar / faz mais sentido para o desenvolvedo

Obrigado pelos pensamentos.

questionAnswers(4)

yourAnswerToTheQuestion