Erfassen Sie Ihre Fortschritte
Trailhead-Startseite
Trailhead-Startseite

Durchführen von Datenlöschungen und -extraktionen

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:

  • Verwenden der Datenlöschungsmechanismen der Bulk-API von Salesforce, um die Performance beim Arbeiten mit großen Datenvolumen positiv zu beeinflussen
  • Nutzen der Blockerstellung für Primärschlüssel, um einer Verschlechterung der Performance beim Extrahieren großer Datenmengen aus der Organisation vorzubeugen
  • Erläutern der Vorteile des Abschneidens von Datensätzen unter benutzerdefinierten Objekten, um den Löschvorgang zu beschleunigen

Löschen und Extrahieren mit der Bulk-API

Wenn es um Ihre Salesforce-Organisation geht, steht die Datenverwaltung immer ganz oben auf Ihrer Prioritätenliste. Im Zuge dieser Verwaltung müssen unter anderem Daten gelöscht und extrahiert werden. Und genau wie beim Laden großer Datenvolumen ist die Bulk-API auch beim Löschen oder Extrahieren großer Datenmengen nützlich. Bei einem Prozess, bei dem eine Million oder mehr Datensätze gelöscht werden müssen, kann die Option für endgültiges Löschen der Bulk-API hier weiterhelfen.

Vorläufiges Löschen und endgültiges Löschen im Vergleich

Der Salesforce-Datenlöschmechanismus kann sich bei großen Datenmengen erheblich auf die Leistung auswirken. Salesforce verwendet einen Papierkorb für Daten, die Benutzer löschen. Anstatt die Daten zu entfernen, werden sie als gelöscht markiert und in den Papierkorb verschoben. Dieser Prozess wird als vorläufiges Löschen bezeichnet. Wenn Daten vorläufig gelöscht werden, beeinträchtigt dies trotzdem die Datenbank-Performance, da sich die Daten weiterhin in der Organisation befinden und gelöschte Datensätze von allen Abfragen ausgeschlossen werden müssen.

Die Daten bleiben 15 Tage im Papierkorb oder bis der Papierkorb eine bestimmte Größe erreicht hat. Die Daten werden physisch aus der Datenbank gelöscht, wenn die Zeit- oder Größenbeschränkungen erreicht sind oder der Papierkorb über die Benutzeroberfläche, die API oder Apex geleert wird.

Die Bulk-API unterstützt eine Option für endgültiges Löschen (physisches Löschen), mit der Datensätze den Papierkorb umgehen und sofort zum Löschen zur Verfügung stehen. Die Verwendung der Bulk-API-Funktion für endgültiges Löschen wird als Strategie beim Löschen großer Datenmengen empfohlen, um schneller Speicherplatz freizugeben und zu verhindern, dass überflüssige Daten die Performance beeinträchtigen. Beachten Sie, dass die Option für endgültiges Löschen standardmäßig deaktiviert ist und von einem Administrator aktiviert werden muss.

Blockerstellung

Beim Extrahieren von Daten mit der Bulk-API werden Abfragen standardmäßig in Blöcke von 100.000 Datensätzen aufgeteilt. Mit der Zeichenfolge "chunkSize" können Sie kleinere oder größere Blöcke mit bis zu 250.000 Datensätzen konfigurieren. Größere Blockgrößen belegen weniger Bulk-API-Batches, weisen jedoch eventuell eine schlechtere Performance auf. Möglicherweise müssen Sie ein wenig experimentieren, um die optimale Blockgröße zu ermitteln.

Bei extrem großen Datenvolumen (z. B. Hunderte Millionen von Datensätzen) ist es möglicherweise nicht sinnvoll, diese Blöcke durch Filtern nach Feldwerten zu definieren. Die Anzahl der zurückgegebenen Zeilen kann höher sein als die Selektivitätsschwelle des Abfrageoptimierers von Salesforce. Die könnte zu einem vollständigen Tabellen-Scan und schlechter Leistung oder sogar zu einem Fehler führen. In diesem Fall müssen Sie eine andere Strategie anwenden.

Blockerstellung für Primärschlüssel

Was können Sie also tun, wenn die Attributfilterung nicht hilft, die Daten in ausreichend kleine Blöcke zu zerlegen? Verwenden Sie die Blockerstellung für Primärschlüssel beim Extrahieren extragroßer Datensets. Der Primärschlüssel ist die Datensatz-ID des Objekts, die immer indiziert ist. Bei der Blockerstellung für Primärschlüssel werden Massenabfragen sehr großer Tabellen basierend auf den Datensatz-IDs der abgefragten Datensätze in Blöcke unterteilt.

Aktivieren Sie die Blockerstellung für Primärschlüssel, wenn Sie Tabellen mit mehr als 10 Millionen Datensätzen abfragen oder wenn bei einer Massenabfrage stets eine Zeitüberschreitung auftritt. Die Blockerstellung für Primärschlüssel ist eine unterstützte Funktion der Salesforce Bulk-API und übernimmt daher die gesamte Arbeit beim Aufteilen der Abfragen in verarbeitbare Blöcke. Geben Sie einfach einige Parameter für Ihren Bulk-API-Auftrag ein, und die Plattform teilt die Abfrage automatisch in einzelne Blöcke auf, führt eine Abfrage für jeden Block aus und gibt die Daten zurück.

Sie können die Blockerstellung für Primärschlüssel bei den meisten Standardobjekte verwenden. Sie wird für die Objekte "Account", "Kampagne", "CampaignMember", "Kundenvorgang", "Kontakt", "Lead", "LoginHistory", "Opportunity", "Aufgabe" und "Benutzer" sowie für alle benutzerdefinierten Objekte unterstützt. Zum Aktivieren der Funktion geben Sie die Zeichenfolge Sforce-Enable-PKChunking in der Auftragsanforderung für Ihre Bulk-API-Abfrage ein.

Zur Festlegung einer Blockgröße geben Sie diese einfach in der Zeichenfolge an. Diese Zeichenfolge ermöglicht beispielsweise die Blockerstellung für Primärschlüssel mit einer Blockgröße von 50.000 Datensätzen: Sforce-Enable-PKChunkingchunkSize=50000. Jeder Block wird als separater Batch verarbeitet, der auf Ihre tägliche Batch-Obergrenze angerechnet wird, und seine Ergebnisse müssen separat heruntergeladen werden. Sie können bei Verwendung der Blockerstellung für Primärschlüssel eine Filterung vornehmen, indem Sie in die Bulk-API-Abfrage eine WHERE-Klausel aufnehmen. Bei dieser Methode werden eventuell weniger Datensätze für einen Block zurückgegeben, als Sie in "chunkSize" angegeben haben.

Hinweis

Hinweis

Wenn Sie deutlich weniger Datensätze als 10 Millionen abfragen, können Sie die Blockerstellung für Primärschlüssel austesten, indem Sie "chunkSize" auf eine Zahl festlegen, die kleiner ist als die Anzahl der abzufragenden Datensätze. Zum Beispiel  Sforce-Enable-PKChunking: chunkSize=1000. Ihre Abfrage wird dann in mehrere Batches aufgeteilt, und Sie erleben die Blockerstellung für Primärschlüssel in Aktion.

Wird eine Abfrage erfolgreich in Blöcke unterteilt, wird als Status des ursprünglichen Batch NOT_PROCESSED angegeben. Schlägt die Blockerstellung fehl, lautet der Status des ursprünglichen Batch FAILED, doch all in Blöcke unterteilten Batches, die während des Blockerstellungsversuchs erfolgreich in die Warteschlange gestellt wurden, werden normal verarbeitet. Wenn sich der Status des ursprünglichen Batch in NOT_PROCESSED ändern, überwachen Sie die nachfolgenden Batches. Sie können die Ergebnisse für jeden nachfolgenden Batch abrufen, nachdem seine Verarbeitung abgeschlossen wurde. Anschließend können Sie den Auftrag ohne Risiko schließen.

Abschneiden

Wenn Sie Datensätze in den benutzerdefinierten Objekten einer Sandbox-Organisation sofort löschen möchten, können Sie versuchen, diese benutzerdefinierten Objekte abzuschneiden. Das Abschneiden benutzerdefinierter Objekte ist eine schnelle Möglichkeit, um dauerhaft sämtliche Datensätze aus einem benutzerdefinierten Objekt zu entfernen und gleichzeitig das Objekt und die zugehörigen Metadaten für die zukünftige Verwendung intakt zu lassen.

Beim Abschneiden eines benutzerdefinierten Objekts werden alle Datensätze, die sich derzeit im Papierkorb des benutzerdefinierten Objekts befinden, gelöscht; dies gilt auch für den Verlauf des benutzerdefinierten Objekts, die zugehörigen Ereignisse, Aufgaben, Notizen und Anhänge für jeden gelöschten Datensatz.

Hinweis

Hinweis

Das Abschneiden benutzerdefinierter Objekte führt zu einigen irreversiblen Änderungen am abgeschnittenen Objekt und den zugehörigen Datensätzen. Sie können nicht wieder in ihren ursprünglichen Zustand versetzt werden.

Das Abschneiden ist beispielsweise dann nützlich, wenn Sie ein benutzerdefiniertes Objekt erstellt und dieses mit Testdatensätzen ausgefüllt haben. Wenn Sie die Arbeit mit den Testdaten beendet haben, können Sie das Objekt zur Beseitigung der Datensätze abschneiden, es jedoch beibehalten und für die Produktion verwenden. Diese Vorgehensweise ist deutlich schneller, als die Datensätze mit einem Stapelvorgang zu löschen und ggf. das Objekt neu zu erstellen.

So lässt sich die Funktion ganz leicht einrichten:

  1. Aktivieren Sie das Abschneiden für Ihre Organisation, indem Sie im Feld "Schnellsuche" den Text Benutzeroberfläche eingeben, Benutzeroberfläche auswählen und dann die Berechtigung auswählen.
  2. Wechseln Sie dann zu den Objektverwaltungseinstellungen für benutzerdefinierte Objekte.
  3. Klicken Sie auf einen Objektnamen, um zur Detailseite des Objekts zu wechseln, und klicken Sie dann auf Abschneiden.
  4. Überprüfen Sie die Warnung im Fenster Abschneiden eines benutzerdefinierten Objekts bestätigen und geben Sie dann den Namen des abzuschneidenden Objekts in das leere Feld ein.
  5. Klicken Sie auf Abschneiden.

Auf das Abschneiden muss eine erase-Funktion folgen, um Speicherplatz freizugeben.

Wenn Sie ein benutzerdefiniertes Objekt abschneiden, werden alle Datensätze des Objekts dauerhaft entfernt, die Definition des Objekts bleibt jedoch erhalten. Die Datensätze werden nicht mehr auf die Obergrenzen Ihrer Organisation angerechnet. Wenn Sie dagegen ein benutzerdefiniertes Objekt löschen, wird das Objekt für 15 Tage in den Papierkorb verschoben (wie oben beschrieben). Nach diesem Zeitraum werden das Objekt und seine Datensätze endgültig gelöscht.

Abschneiden ist nicht möglich bei Standardobjekten oder benutzerdefinierten Objekten, für die Folgendes gilt: Sie werden von einem anderen Objekt über ein Nachschlagefeld referenziert, befinden sich auf der Master-Seite einer Master-Detail-Beziehung, werden in einem Berichts-Snapshot referenziert, verfügen über einen benutzerdefinierten Index oder eine externe ID oder über aktivierte Skinny-Tabellen. Außerdem können Sie keine benutzerdefinierten Objekte abschneiden, wenn Ihre Organisation die für sie geltende Obergrenze für benutzerdefinierte Objekte erreicht hat.

Mit Strategien wie Abschneiden in Kombination mit der Blockerstellung für Primärschlüssel und der Bulk-API-Funktion für endgültiges Löschen können Sie vermeiden, dass große Datenvolumen Ihre Organisation lähmen. Es empfiehlt sich, diese Strategien regelmäßig und ganz nach Bedarf einzusetzen, um eine zuverlässige Performance aufrechtzuerhalten.

Ressourcen