2010-12-10 3 views
0

Je suis en train de concevoir une base de données (SQLite, SQL Server et DB2) dans laquelle une table contient un blob de 32 Ko qui doit être unique. La table contient généralement environ 20 000 lignes.Comment appliquer l'unicité au champ de base de données Big (BLOB)

Je peux penser à deux solutions,

1 - Faire le blob un index unique.

2 - Calculer un indice de hachage du blob, l'utiliser comme un index non unique et écrire du code qui renforce l'unicité du blob.

La solution 1 est plus sûre, mais l'espace de stockage est-il trop lourd et les performances insuffisantes pour faire de la solution 2 un meilleur choix?

Répondre

1

Je voudrais aller aveC# 2, en partie comme une mesure d'économie de place, mais plus parce que certains SGBD n'autorisent pas les index sur les objets LOB (on pense à Oracle, mais cela peut être une vieille restriction).

Je créerais probablement deux colonnes à pour les valeurs de hachage, MD5 et SHA1 (tous deux couramment pris en charge dans les langages client). Ajoutez ensuite un index composite unique qui couvre ces deux colonnes. La probabilité d'une collision sur les deux hachages est infinitésimale, en particulier compte tenu de la taille de votre table prévue. Cependant, vous devriez toujours avoir une stratégie de récupération (qui pourrait être aussi simple que de mettre l'une des valeurs à 0).

+0

Thx! Votre élaboration à propos de deux hashs a été la plus précieuse! – Batibix

Questions connexes