Hier moi avons re�u une question souvent pos�e d'un ami � moi �troit et quelqu'un que je respecte beaucoup. Dans ses mots :

Ma nouvelle compagnie a un syst�me actuel que je r�cris. Le syst�me
a une base de donn�es qui suit la philosophie de supprimer jamais vraiment a
disque - placez juste une inscription de drapeau qu'elle a supprim�e. Que pensez-vous � ceci ?

G�n�ralement je pense que c'est une mauvaise id�e. Je pense qu'il cr�e juste le travail
pour vous dans d'autres secteurs. Mais je pourrais �tre na�f.

J'emploie le ��rubis sur des rails��, qui a cette directive de SEC (ne faites pas
R�p�tez-vous). Les rails met les choses qui sont traditionnellement dans
base de donn�es dans la couche de cartographie objet-apparent�e, telle que des r�gles dessus
int�grit� r�f�rentielle. Je devine que l'int�grit� r�f�rentielle est normalement dans 2
endroits : code d'application (logique d'affaires) et m�ta-donn�es de base de donn�es.
Quoi qu'il en soit, des contraintes de base de donn�es sont rarement employ�es dans des rails.

Le syst�me est un emplacement de la communaut�, avec des conseils de discussion et des beaucoup de
l'autre contenu partag� qui est contribu� par des membres. Les membres peuvent
partez et pouvez �tre supprim� ou d�sactiv�.

Je suis tent� pour supprimer des membres s'ils sont supprim�s. Je suis tent�
pour supprimer le contenu s'il est supprim�. Je suis tent� pour partir
contenu d'anciens membres � moins que le contenu lui-m�me soit
inad�quat, bien que je devine le contenu qui manque un associ�
le disque de membre serait sorte d'un orphelin. (Je pense juste dehors fort
ici).

Avez-vous des recommandations g�n�rales ?

Je d�testerais pour ajouter � chaque commande SQL simple ��quand (supprim� est
nulle ou deleted=0) ��. Et je pense qu'il pourrait y avoir d'autres issues, comme
les collisions principales uniques avec les disques qui sont marqu�s ��ont supprim頻.

Sur un projet j'ai cr�� un sch�ma qui a eu la sorte d'un ��faible��
rapport dans lui. C'�tait le syst�me de planification de but. La table de but
a eu une colonne d'username. Cette colonne d'username a pu �tre employ�e pour trouver
utilisateur dans la table d'utilisateur. Mais si l'utilisateur �tait supprim�, les buts toujours
montr� juste tr�s bien. Je devine si un utilisateur jointif plus tard, r�utilisant a
username pr�c�demment utilis� ils h�riteraient de quelques buts existants.
En fait ce dispositif �tait motivation pour le sch�ma - j'ai commenc�
un ensemble de buts d'un grands bilan et moi a voulu qu'ils existassent et
J'ai voulu pouvoir ajouter des utilisateurs et eux propri�t� de prise des buts
d�j� dans le syst�me.

En conclusion, si je supprime des disques, vous recommandez de sauver supprim�
disque dans une autre table ? Est-ce que c'est une pratique commune ?


Voici ma prise l�-dessus :

Jamais la suppression d'un disque est une pratique principalement suivie au secteur financier et quelques aux entreprises pharmaceutiques luttant pour l'approbation de FDA. Toutes les fois que vous traitez financier ou d'autres donn�es sensibles ce n'est pas une mauvaise id�e de l'archiver de cette fa�on. Il est raisonnablement facile de contr�ler de telles donn�es. Vous pouvez p�riodiquement d�placer les disques marqu�s supprim� � un ou plusieurs bases de donn�es secondaires, qui est seulement questionn� quand vous voulez une telle donn�es, qui sont rares. Ainsi il est correct d'avoir des temps de r�ponse plus lents o� vous questionnez les disques supprim�s.
De cette fa�on votre maigre primaire de restes de base de donn�es et je�nent.

Aujourd'hui un troisi�me besoin �merge dans les emplacements sociaux de gestion de r�seau et de communaut� (pour ne jamais supprimer un disque). Souvent les r�seaux de terroriste (comme dans des groupes de Yahoo) ou les trafiquants de drogue (comme dans Orkut) emploient de tels emplacements pour communiquer avec leurs membres g�ographiquement distribu�s. L'archivage de leurs donn�es de communication peut plus tard aider des autorit�s de maintien de l'ordre en les d�pistant vers le bas. Le flipside est qu'il peut �tre maltrait� par les m�mes autorit�s pour soulever dans les vies priv�es des citoyens normaux. Mais c'est une histoire pour un autre jour :)

> je suis tent� pour supprimer des membres s'ils sont supprim�s. Je suis tent�
pour supprimer le contenu s'il est supprim�. Je suis tent� pour partir
contenu d'anciens membres � moins que le contenu lui-m�me soit
inad�quat, bien que je devine le contenu qui manque un associ�
le disque de membre serait sorte d'un orphelin. (Je pense juste dehors fort
ici).

Je peux voir la valeur additionnelle que vous pouvez obtenir de ces disques, comme trouver le taux d'usure (les gens quittant l'emplacement ou �tant supprim�s) au-dessus du temps, de leur contenu etc. De fa�on g�n�rale vous r�duisez beaucoup du mal de t�te au-dessus des disques orphelins ou les probl�mes r�f�rentiels d'int�grit� (bien que je ne pense pas que RoR d�pendent de celui) avalent la route. Car elle est le mat�riel est bon march� de nos jours.

Me r�capituler ainsi pense :
l'A. l� sont plusieurs avantages en gardant les disques supprim�s et en les marquant simplement comme supprim�
le B. l� n'est pas beaucoup de co�t ou d'ex�cution au-dessus li�e � une telle d�cision m�me si votre emplacement devient le prochain MySpace comme vous pouvez toujours p�riodiquement les d�placer plus d'aux bases de donn�es secondaires.

La plupart des questions de SQL rechercheront simplement des disques qui n'a pas l'ensemble supprim� de champ. Pour des questions impliquant les disques supprim�s, vous devrez d'abord regarder dans la base de donn�es primaire et puis regarder dans la base de donn�es supprim�e secondaire de disques, si vous d�cidez d'employer une base de donn�es secondaire.

> comme des collisions principales uniques avec les disques qui sont marqu�s ��a supprim頻.
Ce ne serait pas une issue. Si vous vous attendez � la charge lourde puis vous pouvez vouloir employer le long nombre entier pour l'index. L'entier sans signe normal te donnera seulement 4GB.

> en conclusion, si je supprime des disques, recommandez-vous de sauver le disque supprim� dans une autre table ? Est-ce que c'est une pratique commune ?

Si vous les marquez simplement comme supprim�s alors vous pouvez simplement p�riodiquement les d�placer � une base de donn�es diff�rente. Je ne proposerais pas de les d�placer � une table diff�rente aussi qui est susceptible de cr�er plus de confusion et ne vous aiderais pas autant de WRT. ex�cution. C'est raisonnablement pratique commune � sauf les disques supprim�s. J'ai travaill� avec de tels syst�mes dedans au del�. Je pense que vous constaterez qu'ils (l'inscription les enregistre comme supprim�s) r�solvent plus de probl�mes qu'ils cr�ez � la longue.

Faites-moi savoir, mes lecteurs de blog, ce qui est votre prise sur cette question ?