À l'aide de deux bases de données pour illustrer cet exemple: CouchDB et Cassandra.
CouchDB
CouchDB utilise une Arborescence B+ pour l'index du document (à l'aide d' un astucieux modification de travailler dans leur ajouter seulement de l'environnement) - plus précisément que les documents sont modifiés (insert/update/delete) ils sont annexés à l'exécution de fichier de base de données ainsi qu'une Feuille -> chemin d'accès du Nœud de l'arborescence B+ de tous les nœuds effectuée par la mise à jour de la révision à droite après le document.
Ces pièces mealed index des révisions sont intégrées tout au long de l'modifications telles que l'index complet est une union de la plus récente de l'indice des modifications ajoutées à la fin du fichier ainsi que d'autres pièces, plus en arrière dans le fichier de données qui sont toujours d'actualité et n'ont pas été modifiés encore.
La recherche de l' arborescence B+ O(logn).
Cassandra
Cassandra garde les clés d'enregistrement triée, en mémoire, dans les tableaux (pensons à eux sous la forme de tableaux pour cette question) et les écrit comme distinct (tri) triés-chaîne de tables , de temps à autre.
Nous pouvons penser à la collection de toutes ces tables comme l ' "indice" (ce que je comprends).
Cassandra est nécessaire pour compact/combiner ces triés-chaîne de tables , de temps à autre, la création d'un fichier complet de la représentation de l'index.
À la recherche d'un tableau trié est O(logn).
Question
En supposant un même niveau de complexité entre le maintien partiel B+ tree morceaux dans CouchDB contre partielle triés-chaîne indices de Cassandra, et étant donné que les deux fournissent O(logn) temps de recherche qui pensez-vous serait de faire une meilleure représentation d'une base de données de l'index et pourquoi?
Je suis spécifiquement curieux de savoir si il y a un détail d'implémentation à propos de l'un sur l'autre, ce qui le rend particulièrement attrayant ou si ils sont tous les deux de se laver et de vous il suffit de choisir selon la structure de données que vous souhaitez travailler avec/plus de sens pour le développeur.
Merci pour les pensées.