2009-03-25 5 views
3

J'ai besoin de développer une implémentation "naïve" d'index de base de données pour une utilisation dans un environnement distribué. Je ne sais presque rien sur le sujet, et je suis un peu pressé par le temps. Je voudrais entendre quelques opinions, exemples et algorithmes sur le sujet. J'aimerais pouvoir avoir une représentation mentale de ce que j'ai besoin de mettre en œuvre.Index de base de données

EDIT: Je fais référence à des index clusterisés

Répondre

5

Il existe essentiellement deux types d'indices:

  • en cluster (par exemple les données sont organisées physiquement, et vous re-trier à chaque insertion si nécessaire)

    Exemple d'utilisation typique: l'organisation physique est généralement la même que l'ordre d'insertion, de sorte que le sur-tri n'est pas un problème. C'est par exemple le cas avec les UID séquentiels (les champs "IDENTITY" dans un contexte de base de données)

    Un inconvénient évident de l'indexation en cluster est que vous ne pouvez avoir qu'un seul index de ce type sur vos données.

    Implémentation naïve si l'ordre d'insertion correspond exactement à l'ordre de tri: utilisez une liste.

    1. d'insertion est O (1): vous venez ajouter les nouvelles données de la liste
    2. L'accès est O (1) si l'ID sont séquentielles (par exemple les indices de tableau correspond exactement UID), O (log) autrement
  • unclustered (vous garder des pointeurs sur les données, comme dans un Hashtable)

    typique des cas d'utilisation: Le regroupement ne convient pas parce qu'il induirait à une surcharge grande d'insertion.

En fonction de vos besoins, vous finirez probablement à l'aide de ces deux datastructures

Un vaste dépôt d'informations qu'indicielle est disponible here

+0

Dans SQL Server - oui. D'autres systèmes de base de données peuvent avoir d'autres types d'index. La question n'était pas très claire à ce sujet ... –

+0

Pouvez-vous développer un peu l'index clusterisé, c'est ce que je suis après –

+0

@Brann - Ok, je suppose que je l'ai appris. Je suppose que je vais devoir créer une sorte d'algorithme pour les données non-séquentielles. –

1

Un très rapide et Easy- implémentation d'index vraiment naïve, la plus appropriée à toute langue au format natif associative array, est un hachage dont les clés sont des valeurs existantes pour la colonne que vous indexez et dont les valeurs sont des tableaux d'identifiants de lignes pour les lignes ayant cette valeur .

Questions connexes