Suppression physique ou logique de l'enregistrement de la base de données?

Quel est l'avantage d'une logique soft/suppression d'un enregistrement (c'est à dire la fixation d'un drapeau indiquant que l'enregistrement est supprimé) par opposition à la réalité physique ou supprimer l'enregistrement?

est-ce une pratique courante?

C'est sécurisé?

83
demandé sur Brian Tompsett - 汤莱恩 2008-12-18 19:09:32

23 réponses

avantages sont que vous gardez l'histoire (bon pour l'audit) et vous n'avez pas à vous soucier de la cascade d'une suppression à travers diverses autres tables dans la base de données qui font référence à la ligne que vous supprimez. L'inconvénient est que vous devez coder toutes les méthodes de rapport/affichage pour tenir compte du drapeau.

dans la mesure où il s'agit d'une pratique courante - je dirais oui, mais comme pour tout ce que vous utilisez dépend de vos besoins d'affaires.

EDIT: pensé à un autre désavantage - si vous avez des index uniques sur la table, les enregistrements supprimés prendront toujours l'enregistrement "one", de sorte que vous devez coder autour de cette possibilité aussi (par exemple, une table D'utilisateur qui a un index unique sur le nom d'utilisateur; un enregistrement supprimé bloquerait toujours le nom d'utilisateur supprimé pour de nouveaux enregistrements. En contournant ce problème, vous pouvez utiliser un GUID sur la colonne Nom d'utilisateur supprimé, mais c'est une solution très hacky que je ne recommanderais pas. Probablement dans cette circonstance, il serait mieux d'avoir juste une règle qu'une fois qu'un nom d'utilisateur est utilisé, il ne peut jamais être remplacé.)

53
répondu Chris Shaffer 2008-12-18 16:22:18

la suppression logique est-elle une pratique courante? Oui j'ai vu cela dans de nombreux endroits. Sont-ils sécurisés? Cela dépend vraiment sont - ils moins sûrs que les données étaient avant que vous les supprimiez?

lorsque j'étais responsable de la technologie, j'ai demandé à notre équipe de conserver toutes les données, je savais à l'époque que nous utiliserions toutes ces données pour construire diverses applications BI, bien qu'à l'époque nous ne connaissions pas les exigences. Alors que c'était bon du point de vue de vérification, dépannage et production de rapports (il s'agissait d'un site de commerce électronique et d'outils pour les transactions interentreprises, et si quelqu'un utilisait un outil, nous voulions l'enregistrer même si son compte était désactivé par la suite), il y avait plusieurs inconvénients.

Les inconvénients comprennent (y compris les autres déjà mentionnés):

  1. implications de Performance de la conservation de toutes ces données, nous devons développer diverses stratégies d'archivage. Par exemple, un domaine de la demande était se rapprocher de générer environ 1 Go de données par semaine.
  2. coût de conservation des données ne se développe au fil du temps, alors que l'espace disque est bon marché, l'amount de l'infrastructure pour garder et gérer terrabytes de données à la fois en ligne et hors ligne est beaucoup. Il faut beaucoup de disque pour la redondance,et le temps des gens pour s'assurer que les sauvegardes se déplacent rapidement etc.

pour décider d'utiliser des suppressions logiques, physiques, ou l'archivage, je me poserais ces questions:

  1. s'agit-il de données qu'il faudrait peut-être insérer de nouveau dans le tableau. Par exemple, les comptes utilisateurs correspondent à cette catégorie car vous pouvez activer ou désactiver un compte utilisateur. Si tel est le cas, une suppression logique a le plus de sens.
  2. y a-t-il une valeur intrinsèque dans le stockage des données? Si donc la quantité de données générées. En fonction de cela, je choisirais soit une suppression logique, soit la mise en œuvre d'une stratégie d'archivage. Gardez à l'esprit que vous pouvez toujours archiver logiquement les enregistrements supprimés.
19
répondu JoshBerke 2008-12-18 17:44:14

je suis un développeur NoSQL, et sur mon dernier travail, j'ai travaillé avec des données qui a toujours été critique pour quelqu'un, et si elle a été supprimée par accident dans le même jour qui a été créé, je n'ai pas été en mesure de trouver dans la dernière sauvegarde d'hier! Dans cette situation, la suppression logicielle toujours sauvé la journée.

j'ai fait la suppression douce en utilisant des horodateurs, enregistrant la date à laquelle le document a été supprimé:

IsDeleted = 20150310  //yyyyMMdd

chaque dimanche, un processus a marché sur le base de données et vérifié le champ IsDeleted . Si la différence entre la date courante et l'horodatage était supérieure à N jours, le document était effacé. Étant donné que le document était encore disponible sur une certaine sauvegarde, il était sécuritaire de le faire.

EDIT: Ce NoSQL cas d'utilisation sur de gros documents créés dans la base de données, des dizaines ou des centaines d'entre eux tous les jours, mais pas des milliers ou des millions. En général, il s'agissait de documents avec le statut, les données et les pièces jointes des processus de flux de travail. C'est la raison pour laquelle il était possible qu'un utilisateur supprime un document important. Cet utilisateur pourrait être quelqu'un avec des privilèges D'administrateur, ou peut-être le propriétaire du document, pour n'en nommer que quelques-uns.

TL; DR mon cas d'utilisation n'était pas Big Data. Dans ce cas, vous aurez besoin d'une approche différente.

11
répondu Mario S 2017-02-15 07:05:29

il pourrait être un peu tard, mais je suggère à tout le monde de vérifier Pinal Post de Dave à propos de logique / soft supprimer:

c'est juste que je n'aime pas du tout ce genre de design. Je crois fermement à l'architecture où seules les données nécessaires devraient être dans une seule table et les données inutiles devraient être déplacées dans une table archivée. Au lieu de suivre la colonne isDeleted, je suggère l'utilisation de deux tables différentes: une avec les commandes et l'autre avec supprimés commandes. Dans ce cas, vous aurez à maintenir à la fois le tableau, mais en réalité, il est très facile à entretenir. Quand vous écrivez l'instruction de mise à jour à la colonne isDeleted, écrivez INSERT dans une autre table et supprimez-le de la table originale. Si la situation est de retour en arrière, écrivez un autre INSERT et supprimez dans l'ordre inverse. Si vous craignez l'échec d'une transaction, intégrez ce code dans la TRANSACTION.

Quels sont les avantages de la tableau plus petit que tableau plus grand dans les situations décrites ci-dessus?

  • une table plus petite est facile à entretenir
  • opérations de Reconstruction d'Index sont beaucoup plus rapides
  • déplacer les données d'archives vers un autre groupe de fichiers réduira la charge du groupe de fichiers primaire (étant donné que tous les groupes de fichiers sont sur un système différent) – ce qui permettra également d'accélérer la sauvegarde.
  • Statistiques seront fréquemment mise à jour en raison de sa plus petite taille, ce qui nécessitera moins de ressources.
  • Taille de l'index sera plus petit
  • la Performance de la table s'améliorera avec une plus petite taille de table.
9
répondu Tohid 2014-09-30 16:42:20

un modèle que j'ai utilisé est de créer une table miroir et de fixer un déclencheur sur la table primaire, de sorte que toutes les suppressions (et mises à jour si désiré) sont enregistrées dans la table miroir.

cela vous permet de "reconstruire" les enregistrements supprimés/modifiés, et vous pouvez encore Supprimer dur dans la table primaire et le garder "propre" - il permet également la création d'une fonction "undo", et vous pouvez également enregistrer la date, l'heure, et l'utilisateur qui a fait l'action dans la table miroir (inestimable dans situations de chasse aux sorcières).

l'autre avantage est qu'il n'y a aucune chance d'inclure accidentellement des enregistrements supprimés lors d'une interrogation de la Primaire, à moins que vous ne vous embêtiez délibérément à inclure des enregistrements de la table miroir (vous pourriez vouloir montrer des enregistrements live et supprimés).

un autre avantage est que la table miroir peut être purgée indépendamment, car il ne devrait pas avoir de références de clé étrangère réelle, ce qui rend cette opération relativement simple en comparaison avec la purge d'une table primaire qui utilise des suppressions molles, mais a encore des connexions référentielles à d'autres tables.

quels autres avantages ? - super si vous avez un tas de codeurs qui travaillent sur le projet, qui font des lectures sur la base de données avec des compétences mélangées et de l'attention aux niveaux de détail, vous n'avez pas à rester Les Nuits en espérant que l'un d'eux n'a pas oublié de ne pas inclure les enregistrements supprimés (lol, pas inclure les enregistrements supprimés = vrai), ce qui entraîne des choses comme surévaluer disons que les clients disponibles position de trésorerie qui vont ensuite acheter des actions avec (i.e., comme dans un système de trading), lorsque vous travaillez avec les systèmes de trading, vous trouverez très rapidement la valeur des solutions robustes, même si elles peuvent avoir un peu plus de "frais généraux"initiaux.

Exceptions: - à titre de guide, utilisez les suppressions "soft" pour les données de "référence" telles que l'utilisateur, la catégorie, etc., et les suppressions "hard" pour les données de type "fact", c'est-à-dire l'historique des transactions.

4
répondu Code Warrior 2016-09-09 00:23:50

Re: "Est-ce sécurisé?"- ça dépend de ce que tu veux dire.

si vous voulez dire qu'en faisant l'effacement physique, vous empêcherez quiconque de trouver les données effacées , alors oui, c'est plus ou moins vrai; vous êtes plus en sécurité en effaçant physiquement les données sensibles qui doivent être effacées, parce que cela signifie qu'elles ont définitivement disparu de la base de données. (Toutefois, se rendre compte qu'il peut y avoir d'autres copies des données en question, comme dans une sauvegarde, ou le journal des transactions, ou une version enregistrée de in transit, par exemple un renifleur de paquets - juste parce que vous supprimez de votre base de données ne garantit pas qu'il n'a pas été enregistré ailleurs.)

si vous voulez dire qu'en faisant la suppression logique, vos données sont plus sûres parce que vous ne perdrez jamais de données , c'est aussi vrai. Cela est bon pour les scénarios de vérification; j'ai tendance à concevoir de cette façon parce qu'il admet le fait de base qu'une fois que les données sont produites, il ne sera jamais vraiment allez loin de moi (surtout si jamais il en avait la capacité d'être, disons, de la mise en cache par un moteur de recherche sur internet). Bien sûr, un vrai scénario de vérification exige non seulement que les suppressions soient logiques, mais aussi que les mises à jour soient enregistrées, ainsi que l'heure du changement et l'acteur qui a fait le changement.

si vous voulez dire que les données ne tomberont pas dans les mains de quelqu'un qui n'est pas censé les voir, alors c'est totalement à votre application et sa structure de sécurité. Dans ce respect, suppression logique n'est pas plus ou moins sûr que tout le reste dans votre base de données.

3
répondu Ian Varley 2008-12-18 16:32:20

j'utilise couramment les suppressions logiques - je trouve qu'elles fonctionnent bien lorsque vous archivez aussi par intermittence les données "supprimées" dans une table archivée (qui peut être consultée si nécessaire) n'ayant ainsi aucune chance d'affecter la performance de l'application.

cela fonctionne bien parce que vous avez toujours les données si vous êtes vérifié. Si vous le supprimez physiquement, il est parti !

2
répondu Galwegian 2008-12-18 16:17:50

je suis un grand fan de la suppression logique, en particulier pour un secteur d'application D'affaires, ou dans le contexte de comptes d'utilisateurs. Mes raisons sont simples: souvent, Je ne veux pas qu'un utilisateur soit en mesure d'utiliser le système plus (donc le compte est marqué comme supprimé), mais si nous avons supprimé l'utilisateur, nous perdrions tout leur travail et ainsi de suite.

un autre scénario courant est que les utilisateurs pourraient être recréés un certain temps après avoir été supprimés. C'est une expérience beaucoup plus agréable pour l'utilisateur pour avoir toutes leurs données présentes comme il était avant qu'ils ont été supprimés, plutôt que d'avoir à recréer.

je pense généralement à supprimer des utilisateurs plus comme" suspension " ils indéfiniment. On ne sait jamais quand ils auront légitimement besoin d'être de retour.

2
répondu Jon Dewees 2008-12-18 16:24:50

suppressions logiques si difficiles sur l'intégrité référentielle.

c'est la bonne chose à faire lorsqu'il y a un aspect temporel des données de la table (sont valides DE_DATE - À_DATE).

sinon, déplacer les données dans une Table de vérification et supprimer l'enregistrement.

Sur le côté positif:

C'est le moyen le plus facile de faire machine arrière (si possible).

Il est facile de voir quel était l'état à un point spécifique dans le temps.

2
répondu pkario 2008-12-18 16:31:48

c'est assez standard dans les cas où vous souhaitez garder un historique de quelque chose (par exemple les comptes d'utilisateurs comme @Jon Dewees mentionne). Et c'est certainement une excellente idée s'il y a de fortes chances que les utilisateurs demandent des suppressions.

si vous êtes préoccupé par la logique de filtrage des enregistrements supprimés à partir de vos requêtes qui deviennent désordonnées et compliquent simplement vos requêtes, Vous pouvez simplement construire des vues qui font le filtrage pour vous et utiliser des requêtes contre cela. Il va prévenir fuite de ces documents dans les solutions de rapport et autres.

2
répondu BQ. 2008-12-18 16:34:44

je suis pas d'accord avec suppression logique parce que vous êtes exposé à de nombreuses erreurs.

tout d'abord les requêtes, chaque requête doit prendre soin du champ IsDeleted et la possibilité d'erreur devient plus élevée avec les requêtes complexes.

seconde la performance: imaginez une table avec 100000 recs avec seulement 3 actifs, maintenant multipliez ce nombre pour les tables de votre base de données; un autre problème de performance est un conflit possible avec nouveaux enregistrements avec anciens (supprimés).

le seul avantage que je vois est l'histoire des enregistrements, mais il y a d'autres méthodes pour atteindre ce résultat, par exemple, vous pouvez créer une table de journalisation où vous pouvez enregistrer des informations: TableName,OldValues,NewValues,Date,User,[..] *Values peut être varchar et écrire les détails dans ce formulaire fieldname : value ; [..] ou stockez l'info comme xml .

tout cela peut être réalisé par code ou déclencheurs mais vous sont seulement un table avec toute votre histoire. Une autre option consiste à voir si le moteur de base de données spécifié est un support natif pour le suivi des changements, par exemple sur la base de données SQL Server, il y a des changements de données SQL Track.

2
répondu Max 2014-09-30 17:18:20

il y a des exigences au-delà de la conception du système auxquelles il faut répondre. Quelle est l'exigence légale ou législative en matière de conservation des documents? En fonction de la nature des lignes, la loi peut exiger que les données soient conservées pendant un certain temps après leur "suspension".

, d'autre part, l'exigence peut être qu'une fois que le dossier est "supprimé", il est vraiment et définitivement supprimé. Avant de prendre une décision, parlez à votre les intervenants.

2
répondu Dave 2015-02-20 13:03:52

ils ne laissent pas la base de données effectuer comme il devrait rendre des choses telles que la fonctionnalité cascade inutile.

Pour des choses simples comme les insertions, dans le cas de ré-insertion, puis le code derrière elle double.

vous ne pouvez pas simplement insérer, vous devez plutôt vérifier une existence et insérer si elle n'existe pas avant ou mettre à jour le drapeau de suppression si elle le fait tout en mettant à jour toutes les autres colonnes aux nouvelles valeurs. Ceci est considéré comme une mise à jour du journal des transactions de la base de données et non un nouvel insert causant des journaux de vérification inexacts.

ils causent des problèmes de performance parce que les tables sont engorgées avec des données redondantes. Il joue avec l'indexation particulièrement avec l'unicité.

Je ne suis pas un grand fan des suppressions logiques.

1
répondu Taqveem 2012-10-11 19:13:27

les applications mobiles qui dépendent de la synchronisation peuvent imposer l'utilisation de la suppression logique plutôt que physique: un serveur doit être en mesure d'indiquer au client qu'un enregistrement a été (marqué comme) supprimé, et cela pourrait ne pas être possible si les enregistrements ont été physiquement supprimés.

1
répondu axd 2015-07-15 09:10:17

j'ai utilisé pour faire soft-delete, juste pour garder de vieux dossiers. Je me suis rendu compte que les utilisateurs ne prennent pas la peine de consulter de vieux documents aussi souvent que je le pensais. Si les utilisateurs veulent voir de vieux dossiers, ils peuvent juste voir d'archive ou de table d'audit, non? Alors, quel est l'avantage de la suppression douce? Cela ne conduit qu'à une requête plus complexe, etc.

ce qui suit sont les choses que j'ai mis en œuvre, avant que je n'ai décidé de ne pas-soft-Supprimer plus:

  1. mettre en œuvre la vérification, pour enregistrer toutes les activités (ajouter,modifier,supprimer). Assurez-vous qu'il n'y a pas de clé étrangère liée à la vérification, et assurez-vous que cette table est sécurisée et que personne ne peut la supprimer sauf les administrateurs.

  2. identifiez quelles tables sont considérées comme des" tables transactionnelles", lesquelles sont très probablement conservées pendant une longue période, et très probablement l'utilisateur peut vouloir consulter les dossiers ou les rapports antérieurs. Par exemple, la transaction d'achat. Cette table ne devrait pas seulement garder l'id de la table principale (comme dept-id), mais aussi conserver les informations supplémentaires comme le nom en tant que référence (comme dept-name), ou tout autre champ nécessaire pour la déclaration.

  3. mettre en Œuvre "actif/inactif" ou "activer/désactiver" ou "montrer/cacher" enregistrement de la table maître. Ainsi, au lieu de supprimer l'enregistrement, l'utilisateur peut désactiver/désactiver l'enregistrement maître. Il est beaucoup plus sûr de cette façon.

Juste mes deux cents opinion.

1
répondu David 2016-06-06 03:06:04

j'efface presque toujours doux et voici mes 2 cents:

  • vous pouvez restaurer les données supprimées si un client vous le demande. Plus de clients heureux avec des deletes doux. Restaurer des données spécifiques à partir de sauvegardes est complexe
  • vérifier pour isdeleted partout n'est pas un problème, vous devez vérifier pour userid de toute façon (si la base de données contient des données provenant de plusieurs utilisateurs). Vous pouvez appliquer le contrôle par code, en plaçant ces deux contrôles sur un séparé (ou vues)
  • supprimer gracieusement. Les utilisateurs ou les processus traitant du contenu supprimé continueront à le "voir" jusqu'à ce qu'ils atteignent la prochaine mise à jour. Il s'agit d'une caractéristique très souhaitable lorsqu'un processus traite certaines données qui sont soudainement supprimées
  • synchronisation: si vous avez besoin de concevoir un mécanisme de synchronisation entre une base de données et des applications mobiles, vous trouverez des suppressions douces si moins douloureuses. Fondamentalement, vous évitez sync paradoxes en déplaçant le problème d'un crazy ADD / UPDATE / DELETE à un plus simple ADD /UPDATE
1
répondu Gianluca Ghettini 2018-06-09 15:55:56

Doux Supprimer est une programmation à la pratique suivie dans la plupart de la demande lorsque les données sont plus pertinentes. Considérons un cas d'application financière où une suppression par l'erreur de l'utilisateur peut être fatale. C'est le cas lorsque la suppression douce devient pertinente. Dans soft delete l'utilisateur ne supprime pas réellement les données de l'enregistrement à la place de son être signalé comme IsDeleted to true (par la convention normale).

dans EF 6.X ou EF 7 onward Softdelete est ajouté comme un attribut, mais nous devons créer un attribut personnalisé pour le moment, maintenant.

je recommande vivement SoftDelete dans un design de base de données et son une bonne convention pour la pratique de programmation.

0
répondu Sanu Antony 2014-11-14 07:40:59

bien! Comme tout le monde l'a dit, Cela dépend de la situation.

si vous avez un index sur une colonne comme UserName ou EmailID - et vous ne vous attendez jamais à ce que le même UserName ou EmailID soit utilisé à nouveau; vous pouvez aller avec une suppression douce.

cela dit, vérifiez toujours si votre opération SELECT utilise la clé primaire. Si votre instruction SELECT utilise une clé primaire, ajouter un drapeau avec la clause WHERE ne ferait pas beaucoup de différence. Prenons un exemple (Pseudo):

Table Users (UserID [primary key], EmailID, IsDeleted)

sélectionner * parmi les utilisateurs où UserID = 123456 et IsDeleted = 0

cette requête ne fera aucune différence en termes de performance puisque la colonne UserID a une clé primaire. Dans un premier temps, il scanne la table en fonction de PK, puis exécute la condition suivante.

cas où les suppressions molles ne peuvent pas fonctionner du tout:

S'inscrire à majorly tous les sites Web prennent EmailID comme votre identification unique. Nous savons très bien, qu'une fois Qu'un E-Mail est utilisé sur un site comme facebook, G+, il ne peut être utilisé par personne d'autre.

Il arrive un jour, lorsque l'utilisateur veut supprimer son profil sur le site. Maintenant, si vous faites une suppression logique, cet utilisateur ne pourra plus jamais s'enregistrer. De plus, s'enregistrer de nouveau en utilisant le même e-mail ne signifierait pas restaurer toute l'histoire. Tout le monde sait que supprimer signifie supprimer. Dans de tels scénarios, nous devons faire une suppression physique. Mais afin de maintenir l'histoire entière du compte, nous devrions toujours archiver ces enregistrements dans des tables d'archives ou des tables supprimées.

Oui, dans les situations où nous avons beaucoup de tables étrangères, la manipulation est assez lourde.

gardez également à l'esprit que les suppressions douces/logiques va augmenter la taille de votre table, donc la taille de l'indice.

0
répondu Jiten 2015-06-20 14:12:50

pour répondre au commentaire de Tohid, nous avons fait face au même problème où nous voulions persister l'histoire des enregistrements et aussi nous n'étions pas sûrs si nous voulions la colonne is_deleted ou non.

je parle de notre implémentation python et d'un cas d'utilisation similaire que nous avons trouvé.

nous avons rencontré https://github.com/kvesteri/sqlalchemy-continuum qui est un moyen facile d'obtenir la table de version pour votre table correspondante. Minimum de lignes de code et capture l'historique pour ajouter, supprimer et mettre à jour.

ceci sert plus que juste la colonne is_deleted . Vous pouvez toujours backref version table pour vérifier ce qui s'est passé avec cette entrée. Si l'entrée a été supprimée, mise à jour ou ajoutée.

de cette façon, nous n'avions pas besoin d'avoir la colonne is_deleted et notre fonction de suppression était assez triviale. De cette façon, nous n'avons pas besoin de marquer is_deleted=False dans l'une de nos api.

0
répondu Lalit 2017-09-08 23:59:40

la plupart du temps softdeleting est utilisé parce que vous ne voulez pas exposer certaines données, mais vous devez les garder pour des raisons historiques (un produit pourrait être discontinué, de sorte que vous ne voulez pas de nouvelle transaction avec elle, mais vous avez encore besoin de travailler avec l'histoire de la transaction de vente). Par ailleurs, certains copient la valeur de l'information sur le produit dans les données de la transaction de vente au lieu de faire une référence au produit pour gérer cela.

En fait, il ressemble plus à un reformulation pour une fonctionnalité visible/cachée ou active/inactive. Parce que c'est le sens de "supprimer" dans le monde des affaires. J'aimerais dire que les Terminators suppriment les gens, mais le patron les vire.

cette pratique est assez commun modèle et utilisé par beaucoup d'application pour beaucoup de raisons. Comme ce n'est pas la seule façon d'y arriver, vous aurez des milliers de gens qui diront que c'est génial ou des conneries et les deux ont de très bons arguments.

D'un du point de vue de la sécurité, SoftDelete ne remplacera pas la tâche D'Audit et ne remplacera pas non plus la tâche de sauvegarde. Si vous avez peur de "l'insertion / suppression entre deux cas de sauvegarde", vous devriez lire sur les Modèles de récupération complète ou en vrac. J'admets que SoftDelete pourrait rendre le processus de récupération plus trivial.

à vous de connaître vos besoins.

0
répondu Marco Guignard 2017-09-19 14:34:37

pour donner une alternative, nous avons des utilisateurs utilisant des appareils à distance de mise à jour via MobiLink. Si nous supprimons des enregistrements dans la base de données du serveur, ces enregistrements ne seront jamais effacés dans les bases de données du client.

donc on fait les deux. Nous travaillons avec nos clients pour déterminer combien de temps ils souhaitent être en mesure de récupérer des données. Par exemple, généralement les clients et les produits sont actifs jusqu'à ce que notre client dire qu'ils devraient être supprimés, mais l'histoire des ventes est seulement conservée pendant 13 mois et puis efface automatiquement. Le client peut vouloir conserver les clients et les produits supprimés pendant deux mois, mais conserver l'historique pendant six mois.

donc nous exécutons un script du jour au lendemain qui marque les choses logiquement supprimées selon ces paramètres et puis deux / six mois plus tard, tout ce qui est marqué logiquement supprimé aujourd'hui sera dur supprimé.

nous sommes moins sur la sécurité des données que d'avoir d'énormes bases de données sur un appareil client avec une mémoire limitée, comme un Smartphone. Un client qui commande 200 produits deux fois par semaine pendant quatre ans aura plus de 81 000 antécédents, dont 75% ne se soucient pas s'il voit.

0
répondu TychaBrahe 2018-02-09 21:35:54

tout dépend du cas d'utilisation du système et de ses données.

par exemple, si vous parlez d'un système réglementé par le gouvernement (par exemple, un système d'une compagnie pharmaceutique qui est considéré comme faisant partie du système qualité et qui doit suivre les directives de la FDA pour les dossiers électroniques), alors vous feriez bien de ne pas faire de suppressions difficiles! Un auditeur de la FDA peut venir et demander tous les enregistrements dans le système concernant le numéro de produit ABC-123, et toutes les données mieux être disponible. Si le responsable de votre processus opérationnel dit que le système ne devrait pas permettre à quiconque d'utiliser le numéro de produit ABC-123 pour les nouveaux documents à venir, utilisez plutôt la méthode de suppression automatique pour le rendre "inactif" dans le système, tout en préservant les données historiques.

cependant, peut-être que votre système et ses données ont un cas d'utilisation tel que "suivre la météo au pôle Nord". Peut-être que vous prenez des relevés de température une fois par heure, et à la fin de la journée agréger une moyenne quotidienne. Peut-être que les données horaires ne seront plus jamais utilisées après agrégation, et que vous supprimerez les relevés horaires après avoir créé l'agrégat. (C'est un exemple fictif et insignifiant.)

Le point est, tout dépend du cas d'utilisation du système et des données, et non pas d'une décision purement d'un point de vue technologique.

0
répondu HardCode 2018-04-13 19:19:09

c'est 2018, et un gros inconvénient de soft delete est:

conformité GDPR

votre application n'est probablement pas conforme au GDPR si vous faites des suppressions légères sur tout ce qui est considéré comme données personnelles . [ 1 ][ 2 ]

gardez également à l'esprit que, même si votre entreprise n'est pas située dans L'UE, tant que vous traitez avec Entreprises de L'UE’, résidents", ou données des citoyens, vous devrez vous conformer au GDPR. [ 3 ]

0
répondu zypA13510 2018-07-26 03:09:48