Ich bin neugierig, sollte ich jemals etwas löschen? Im Moment baue ich eine Website (für mich selbst) auf, auf der Sie Benutzer abonnieren können, die Sie dann jedes Mal erhalten, wenn der Benutzer Inhalte hochgeladen hat.
Oder Kommentare, wenn es einen Thread gibt und jemand einen direkten Kommentar zu Ihrem Kommentar schreibt, erhalten Sie eine Nachricht, die dies sagt. Sollte ich diese jemals löschen oder einfach ausblenden?
Jedes Abonnement hat drei (64bit) int. ID, Kommentar-ID, Empfänger-ID. Über commentId können Sie in der Kommentartabelle herausfinden, wer Ihnen geschrieben hat. Wenn ich nicht löschen benutze, wird ein 4. int den Status anzeigen (anzeigen, versteckt / löschen).
Soll ich sie verlassen oder löschen? Wenn ich sie löschen sollte, warum dann? Ich kann vielleicht sehen, wenn es einen persönlichen Benutzer gibt, den Sie auf Anfrage löschen müssen, aber außer dem, den ich jemals löschen sollte?
Ich weiß nicht, welche SQL-Datenbank ich verwenden werde.
-bearbeiten-
Danke Leute. Im Moment werde ich nichts löschen, außer Dinge, die ich generieren kann. Wie das Abonnement.
Antworten:
Das Unternehmen, für das ich arbeite, bietet Software für Personen in bestimmten regulierten Branchen an, sodass ich im Allgemeinen die Einstellung "Nie etwas löschen " habe, denn wenn Sie etwas löschen, haben Sie die Vollständigkeit Ihres Prüfpfads verloren. Markieren Sie die Informationen stattdessen als gelöscht (oder verschieben Sie sie in eine Archivversion der Tabellen) und notieren Sie, wer sie wann "gelöscht" hat.
Die einzigen Gründe, Dinge wirklich zu löschen, sind
Ihre Benutzer sind möglicherweise dankbar, dass nichts wirklich gelöscht wird, wenn sie versehentlich etwas Nützliches löschen und Sie es zurückerhalten können. Und wenn ein verärgerter Benutzer, der der Website zuvor wertvolle Informationen zur Verfügung gestellt hat, einen zischenden Anfall auslöst und alle seine Beiträge aus Rache löscht, können Sie die Löschungen einfach zurückziehen.
Ein besonders wichtiger Punkt: Sie sollten in Ihren Nutzungsbedingungen klarstellen, dass Informationen möglicherweise nicht wirklich gelöscht werden, wenn der Benutzer sie nicht mehr sehen kann, und eine Route angeben (wenn Sie nur "x @ xx per E-Mail senden und danach fragen") getan werden ") damit sie Daten wirklich löschen können, haben sie nach den einschlägigen Gesetzen das Recht, die Löschung zu beantragen.
quelle
Typischerweise haben Sie moderne Platten der heutigen Größen und IO Leistung Mittel nicht haben , um Datensätze zu löschen , um Speicherplatz zu sparen oder die Leistung aufrechtzuerhalten. Normalerweise kann ein Feld "Datensatz gelöscht" im Datensatz den Datensatz als gelöscht (oder als andere Status) mit einem Prüfpfad markieren.
Einige Branchen schreiben vor, dass Sie aus regulatorischen Gründen niemals "Transaktionsdaten" löschen. Sie würden bereits wissen, ob Sie dies tun müssen. Wenn Zahlungsinformationen vorliegen, müssen Sie die Daten in der Regel 7 Jahre lang aufbewahren (oder verfügbar machen) (britisches Rechnungslegungsgesetz).
Für andere Zwecke gibt es tatsächlich einen guten Grund, Daten physisch zu löschen.
Wenn es nicht da ist, ist es nicht auffindbar.
Das Freedom of Information Act (in Großbritannien) besagt, dass die Daten, wenn sie auffindbar sind, in den Bereich für jede Suche aufgenommen werden. Dies umfasst "weich gelöschte" Datensätze und historische Sicherungen.
Bei einigen Systemen stellen wir sicher, dass wir alte Datensätze löschen und alte Sicherungsbänder / -dateien nach "so vielen" Monaten wiederverwenden / zerstören, um sicherzustellen, dass sie nicht für FOI-Anforderungen verfügbar sind. (Die Bearbeitung einer FOI-Anfrage, die mehrere Jahre zurückliegt und die Wiederherstellung von Hunderten alter Postfächer aus Archivsicherungen erfordert, ist SEHR kostspielig.)
Dies unterscheidet sich von OPERATIONAL-Backups. Wir speichern Backups, damit wir sie im Katastrophenfall wiederherstellen können. Wir haben auch einen "Records Store" für papierbasierte und elektronische Medien, der aufbewahrt werden muss, und wir kopieren E-Mails und dergleichen in diesen Store.
quelle
Mein Bauchgefühl ist, niemals etwas zu löschen. Sie wissen nie, wann Sie es brauchen könnten. Wenn ich aus irgendeinem Grund Daten aus Arbeitstabellen entfernen muss, neige ich dazu, sie in eine Archivtabelle zu verschieben.
Dies kann jedoch zu viel des Guten sein, wenn es sich um Daten für den eigenen Gebrauch handelt und es unvorstellbar ist, dass es jemals einen rechtlichen Grund gibt, alte Daten zu sehen. Sie sagen nicht so viel über Ihre Anwendung, aber könnte ein Benutzer verlangen, alte Daten zu sehen, weil eine andere Verwendung sie verleumdet hat?
JR
quelle
Das Löschen oder Nicht-Löschen hängt von der Menge der verfügbaren Ressourcen und der Menge der Daten ab, die Sie sammeln. Ich habe bereits an Projekten gearbeitet, bei denen Löschungen nicht zulässig sind. Es bedeutete nur, dass alle Datenelemente ein Start- und ein Enddatum erhalten. Das Datenelement wäre während dieses Zeitraums gültig, nicht vorher, nicht danach. Sie können also etwas "löschen", indem Sie das Enddatum auf heute setzen.
Leider bedeutet dies auch, dass Sie für jedes Datenelement, das Sie auswählen möchten, das aktuelle Datum mit diesem Zeitraum überprüfen müssen. Mit SQL würde dies eine zusätzliche Bedingung für Ihre Abfragen erfordern.
Um die Sache noch schlimmer zu machen, könnten Sie sogar in Betracht ziehen, Änderungen zu deaktivieren. Wenn ein Datenelement bearbeitet wird, setzen Sie einfach das Enddatum auf jetzt und erstellen ein neues Datenelement mit denselben Schlüsseln und Änderungen. Auf diese Weise sammeln Sie eine riesige Sammlung von Daten, die jedoch sehr historisch sind und nichts gelöscht werden. In diesem Fall sollten die Start- / Enddaten auch eine Zeitkomponente enthalten. (Und Sie müssen sich um die Sommerzeit sorgen, wenn die Uhren eine Stunde rückwärts gedreht werden.) Grundsätzlich würde Ihr System dann nur neue Elemente einfügen, nichts ändern oder löschen.
quelle
Sie müssen sich entscheiden, ob es sich lohnt, Ihre Daten für immer zu speichern! Jeder sagt, dass Festplatte billig ist, aber das ist nicht die ganze Wahrheit. Dies hängt von Ihrer Speicherlösung und Ihrer Umgebung ab.
Wenn Sie Fibre-Channel-Festplatten in einem SAN verwenden und Ihnen der Speicherplatz ausgeht, ist dies nicht mehr billig, wenn Sie aufgrund von Speicherplatzmangel in Ihrem Array ein weiteres Diskarray hinzufügen müssen.
In Ihrem Fall scheint es nicht so, als würden Sie große Datenmengen speichern, und der Speicherplatz ist möglicherweise kein Problem, aber wie relevant sind Ihre Daten in 10 Jahren?
Eine andere Sache, an die man denken sollte, ist die Gesamtleistung, nicht nur der Speicherplatz. Ich denke, es ist eine gute Idee, historische Daten in einer anderen Tabelle oder sogar in einer anderen Datenbank zu speichern. Auf diese Weise habe ich weniger Wartung usw. Ich weiß, es gibt andere Lösungen zum Archivieren historischer Daten, wie z. B. Partitionierung, aber wenn die Daten nicht regelmäßig verwendet werden, warum dann mehr Komplexität implementieren?
Ich habe in den letzten 6 Jahren in großen Datenbanken gearbeitet und die Indexierungsstrategie ist entscheidend, wenn Sie eine Tabelle mit 500 000 000 Datensätzen haben. :) Wenn Ihre Abfrage eine Indexsuche verwendet, der Index jedoch nicht alle benötigten Daten enthält, wird für jeden im Index gefundenen Datensatz eine Clustered-Index-Suche verwendet. Nehmen wir an, Sie erhalten 10% der Tabelle, und am Ende erhalten Sie 50.000 000 Clustered-Index-Lookups, und das ist überhaupt nicht billig. Es kostet Sie kein Geld, aber es kostet Sie Leistung.
/ Håkan Winther
quelle
Gründe, warum Sie etwas nicht löschen sollten:
Gründe, warum Sie etwas löschen sollten:
Es ist immer ein Kompromiss, aber die rechtlichen Auswirkungen der Aufbewahrung zu vieler Daten sind wichtig. Datenschutz und Sicherheit werden heutzutage oft übersehen. Für die tatsächliche Datenbankleistung müssen möglicherweise keine Daten gelöscht werden, es sei denn, die Datensätze sind sehr groß. Selbst eine Tabelle mit Millionen von Zeilen und Dutzenden von Spalten muss möglicherweise nicht gelöscht werden, wenn Sie sie ordnungsgemäß partitionieren und sicherstellen, dass Ihre Abfragen immer die richtigen Partitionen verwenden. Bei einem Gerichtsbeschluss oder einer FOIA-Anfrage, bei der Sie nach gespeicherten Daten gefragt werden, können nur Sie entscheiden, wie Sie sich dazu fühlen und wie sich Ihre Kunden fühlen. Ein Grund, warum ich meine Nutzung von Google Mail einschränke, ist genau dieser Grund: Meine Daten werden in den USA gespeichert (ich bin in Kanada) und US-Agenturen können möglicherweise sogar auf meine gelöschten E-Mails zugreifen.
Beachten Sie auch, dass die Datenschutz-, Sicherheits- und FOIA-Gesetze von Land zu Land unterschiedlich sind. Sie müssen diese Gesetze in jedem Land kennen, in dem Sie tätig sind. Vielleicht, wenn sich Ihre Server alle in einem Land befinden, was die Reichweite ausländischer Gesetze einschränkt, aber vielleicht nicht. Wenden Sie sich an einen Anwalt, wenn Ihre Daten sensibel sind.
quelle
Die Frage, die Sie sich wirklich stellen müssen, lautet: Sind die Kosten für die Aufbewahrung der Daten (erhöhte Speicherkosten, Haftung für die Aufbewahrung von Daten, die gelöscht werden können) billiger als die Kosten für das Löschen der Daten (Arbeitsstunden für das Schreiben der Löschabfrage)? Haftung für das Löschen von Daten, die aufbewahrt werden müssen, und die Möglichkeit von Ausfallzeiten oder Leistungseinbußen aufgrund der Ausführung der Löschabfrage)? Was auch immer billiger ist, machen Sie mit.
quelle
Ein Fall, in dem ich die Offline-Archivierung und / oder das Löschen von Daten sehen kann, ist, wenn Sie eine OLAP-Abfrage ausführen, um Daten zusammenzufassen und in einer Übersichtstabelle zu speichern.
Monatliche Website-Statistiken sind ein gutes Beispiel dafür. Sobald Sie eine Reihe von Seitenaufrufen für Juni 2009 generiert haben, wird sich dies nie mehr ändern. Und es ist schneller, alle Seitenaufrufe aus der Übersichtstabelle hinzuzufügen und dann die Tabelle zu scannen, die die Online-Transaktionen des aktuellen Monats enthält, als Protokolle im Wert von einem ganzen Jahr zu scannen und einen vollständigen Online-Bericht zu erstellen .
Wenn ich es wäre, würde ich sicher die Online-Tabelle nach 'Juni 2009' kopieren, die Zusammenfassungsabfrage ausführen und die Daten in der Übersichtstabelle speichern und dann die kopierte Online-Tabelle archivieren, bevor ich alle Einträge aus dem lösche Original Online-Tisch. Aber ich bin auch etwas paranoid!
Im Allgemeinen ist es überall dort, wo es effizienter ist, mit OLAP eine Zusammenfassung für Daten zu erstellen, die von diesem Zeitpunkt an statisch sind, möglich, alte Daten zu archivieren / löschen. Andernfalls verwende ich ein Löschkennzeichnungssystem, um zu vermeiden, dass die relationale Integrität mit meinen normalerweise umfangreichen Aktivitätsprotokollierungssystemen beeinträchtigt wird.
quelle