Skip to main content
Build the future with Agentforce at TDX in San Francisco or on Salesforce+ on March 5–6. Register now.

Entwerfen Ihres Datenmodells

Lernziele

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

  • Entwerfen eines Datenmodells für große Datenvolumen
  • Beschreiben von drei Arten von Datenverzerrungen und, wie man sie vermeidet
  • Erweitern eines Datenmodells um externe Objekte

Planen Ihres Datenmodells

Daten sind eines der Schlüsselelemente jeder Anwendung. Benutzer erstellen ständig Daten. Den ganzen Tag. Jeden Tag. So. viele. Daten. Plötzlich hat Ihre Organisation Millionen von Datensätzen, Tausende von Benutzern und mehrere Gigabyte an gespeicherten Daten angesammelt.

Diese großen Datenmengen können die Leistung verlangsamen, was sich beispielsweise in langsameren Abfragen, langsamerer Such- und Listenansichten und langsamerer Sandbox-Aktualisierung äußert. Sie können diese Problematik vermeiden, wenn Sie gleich im Voraus für große Datenmengen planen und Ihr Datenmodell so entfernen, dass es von Anfang an skalierbar ist.

Details zu Datenverzerrung

Ein Schlüssel für die Verwaltung großer Datenmengen bei bester Performance ist die sorgfältige Konstruktion der Datensatzinhaberschaft, um Datenverzerrungen zu vermeiden. Datenverzerrungen entstehen, wenn in einer Organisation mehr als 10.000 untergeordnete Datensätze mit demselben übergeordneten Datensatz verknüpft sind.

Planen Sie Ihr Datenmodell mit genügend Accounts, um die Anzahl der untergeordneten Datensätze pro übergeordnetem Datensatz unter diesem Schwellenwert zu halten, und verteilen Sie neue untergeordnete Datensätze bei der Erstellung auf diese Accounts. Wenn Sie diese Strategien nicht anwenden, können drei Arten von Datenverzerrungen auftreten, die sich negativ auf die Performance auswirken können: Accountdatenverzerrung, Inhaberschaftsverzerrung und Nachschlageverzerrung.

Accountdatenverzerrung

Bestimmte Salesforce-Objekte, wie Accounts und Opportunities, haben spezielle Datenbeziehungen, die den Zugriff auf übergeordnete und untergeordnete Datensätze unter privaten Freigabemodellen aufrechterhalten. Werden zu viele untergeordnete Datensätze mit demselben übergeordneten Objekt in einer dieser Beziehungen verknüpft, führt dies zu einer Verzerrung der Accountdaten. Sagen wir, Sie verfügen über eine Gruppe nicht zugeordneter Kontakte und parken diese unter einem Account namens "Nicht zugeordnet". Dies kann zu Performance-Problemen beim Sperren und Freigeben von Datensätzen führen.

Datensatzsperre

Ein weiteres Szenario: Sie aktualisieren eine große Anzahl von Kontakten unter demselben Account in mehreren Threads. Bei jeder Aktualisierung sperrt das System sowohl den zu ändernden Kontakt als auch sein übergeordnetes Account, um die Integrität in der Datenbank zu erhalten. Jede Sperre wird nur für eine sehr kurze Zeit gehalten. Doch da alle Aktualisierungen versuchen, das gleiche Account zu sperren, besteht ein hohes Risiko, dass eine Aktualisierung fehlschlägt, weil eine frühere noch die Sperre auf dem Account hält.

Freigabeprobleme

Bei der Freigabe entsteht eine ähnliche Dynamik. Abhängig davon, wie Sie die Freigabe konfiguriert haben, müssen Sie bei scheinbar einfachen Vorgängen wie etwa dem Ändern des Account-Inhabers möglicherweise auch die Freigabeeinstellungen aller untergeordneten Datensätze des Accounts prüfen und ggf. anpassen. Dies kann die Neuberechnung der Rollenhierarchie und der Freigaberegeln beinhalten. Und wenn es sich um Hunderttausende untergeordneter Datensätze handelt, kann das Unmengen von Zeit verschlingen.

Inhaberschaftsverzerrung

Wenn ein einzelner Benutzer Inhaber einer sehr großen Anzahl von Datensätzen mit dem gleichen Objekttyp ist, führt dieses Ungleichgewicht zu einer Inhaberschaftsverzerrung. Da jeder Datensatz einen Inhaber haben muss, scheint es die logische Lösung zu sein, diese Datensätze auf einen generischen Inhaber zu verlagern, wie etwa den bereits oben erwähnten Account "Nicht zugeordnet". Dies kann jedoch zu aufgrund der Freigabeberechnungen zur Bestimmung der Sichtbarkeit dieser Datensätze zu Performance-Problemen führen.

Wenn der verzerrte Inhaber in der Rollenhierarchie enthalten ist, muss bei Vorgängen wie dem Löschen oder Aktualisieren des Inhabers die Freigabe für den alten Inhaber und allen übergeordneten Benutzer innerhalb der Rollenhierarchie sowie für alle Benutzer, die über Freigaberegeln Zugriff erhalten haben, entfernt werden. Aus diesem Grund sind Inhaberänderungen meist eine der kostspieligsten Änderungstransaktionen im System.

In manchen Fällen lässt sich eine Inhaberschaftsverzerrung einfach nicht vermeiden. In diesen Fällen ist es am besten sicherzustellen, dass dem verzerrten Inhaber keine Rolle zugewiesen ist. Auf diese Weise nehmen Sie den Benutzer und seine Datensätze aus der Rollenhierarchie und den zugehörigen Freigaberegeln heraus.

Nachschlageverzerrung

Eine Nachschlageverzerrung tritt auf, wenn eine sehr große Anzahl von Datensätzen mit einem einzelnen Datensatz im Nachschlageobjekt (dem Objekt, in dem Sie suchen) verknüpft ist. Da Sie Nachschlagefelder in jedem Objekt in Salesforce platzieren können, kann die Nachschlageverzerrung bei jedem Objekt in Ihrer Organisation Probleme verursachen.

Wenn Nachschlageverzerrung auftritt und Sie über eine hochkomplexe benutzerdefinierte Implementierung verfügen, schaffen Sie möglicherweise ein Problem, ohne es zu merken. Wenn Sie Ihre Möglichkeiten für die Vermeidung von Nachschlageverzerrungen sorgfältig prüfen, können Sie Sperrprobleme bei Nachschlagefeldern abwenden, um sicherzustellen, dass Ihre Architektur entsprechend dem Wachstum Ihrer Organisation skaliert werden kann.

Warum ist Nachschlageverzerrung so schlimm? Nachschlagefelder in Salesforce sind im Grund genommen Fremdschlüsselbeziehungen zwischen Objekten. Jedes Mal, wenn ein Datensatz eingefügt oder aktualisiert wird, muss Salesforce die Zieldatensätze sperren, die für jedes Nachschlagefeld ausgewählt wurden. Dadurch wird sichergestellt, dass die Integrität der Daten erhalten bleibt, wenn sie in der Datenbank festgeschrieben werden.

Unter normalen Umständen werden Speichervorgänge so schnell ausgeführt, dass Sie die Sperren nicht bemerken. Wenn jedoch benutzerdefinierter Code und große Datenvolumen in einem automatisierten Prozess aufeinander treffen, kann es zu Ausnahmen durch Sperren kommen, die beim Einfügen oder Aktualisieren von Datensätzen zu Fehlern führen.

Da es keine speziellen Tools für die Erkennung von Nachschlageverzerrungen gibt, kann sich die Suche nach diesen Architekturprobleme so schwierig wie die Suche nach der Nadel im Heuhaufen gestalten. Sie sollten unbedingt im Hinterkopf behalten, dass die Nachschlageverzerrung bei bestimmten Nutzungsmustern eventuell keine Probleme verursacht. Es ist daher am besten, nach Mustern zu suchen, die Probleme verursachen. Sie sollten Objekte mit einer großen Anzahl von Datensätzen und hoher gleichzeitiger Einfüge- und Aktualisierungsaktivität prüfen.

Verwenden externer Objekte

Eine weitere Strategie für große Datenvolumen ist die Verwendung externer Objekte, was bedeutet, dass keine Daten in Salesforce importiert werden müssen. Mit einer Datenverteilungsstrategie, bei der Daten über mehrere Objekte verteilt und bei Bedarf aus einem anderen Objekt oder einem externen Speicher abgerufen werden, vermeiden Sie sowohl die Speicherung großer Datenmengen in Ihrer Organisation als auch die mit großen Datenvolumen verbundenen Performance-Probleme.

Externe Objekte ähneln benutzerdefinierten Objekten, mit dem Unterschied, dass sie Daten zugeordnet sind, die außerhalb Ihrer Salesforce-Organisation gespeichert sind. Dies ermöglicht Ihren Benutzern und der Force.com-Plattform, externe Daten durchsuchen und damit interagieren zu können.

Durch den Zugriff auf Datensatzdaten bei Bedarf spiegeln externe Objekte immer den aktuellen Zustand der externen Daten wider. Sie müssen keine Kopie dieser Daten in Salesforce verwalten, sodass Sie keinen Speicherplatz und keine Ressourcen auf die Datensynchronisierung verschwenden. Die Verwendung externer Objekte empfiehlt sich, wenn Sie eine große Menge an Daten haben, die Sie nicht in Ihrer Salesforce-Organisation speichern können oder wollen, und nur jeweils eine kleine Menge dieser Daten benötigen.

Eine externe Datenquelle gibt an, wie auf das externe System zugegriffen wird. Salesforce Connect verwendet Datenquellen, um auf Daten zuzugreifen, die außerhalb Ihrer Salesforce-Organisation gespeichert sind. Files Connect verwendet Datenquellen, um auf Inhaltssysteme von Drittanbietern zuzugreifen. Externe Datenquellen enthalten zugeordnete externe Objekte, die Ihre Benutzer und die Force.com-Plattform verwenden, um mit den externen Daten und Inhalten zu interagieren.

Nachschlagen in externen Objekten

Externe Objekte unterstützen Standardnachschlagebeziehungen, bei denen die 18-stelligen Salesforce-Datensatz-IDs verwendet werden, um verwandte Datensätze miteinander zu verknüpfen. Daten, die außerhalb Ihrer Salesforce-Organisation gespeichert sind, enthalten jedoch häufig keine solchen Datensatz-IDs. Für externe Objekte gibt es daher zwei spezielle Arten von Nachschlagebeziehungen: externes Nachschlagen und indirektes Nachschlagen.

Diese externen bzw. indirekten Nachschlagevorgänge vergleichen die Werte eines bestimmten Felds im übergeordneten Objekt mit den Werten des Beziehungsfelds im untergeordneten Objekt. Wenn Werte übereinstimmen, werden die Datensätze einander zugeordnet.

Verwenden Sie eine externe Nachschlagebeziehung, wenn es sich bei dem übergeordneten Objekt um ein externes Objekt handelt. Bei einer externen Nachschlagebeziehung wird ein untergeordnetes standardmäßiges, benutzerdefiniertes oder externes Objekt mit einem übergeordneten externen Objekt verknüpft. Die Werte des Standardfelds "Externe ID" für das übergeordnete externe Objekt werden mit den Werten des externen Nachschlagebeziehungsfelds abgeglichen. Bei einem untergeordneten externen Objekt stammen die Werte des externen Nachschlagebeziehungsfelds aus dem angegebenen Namen der externen Spalte.

Verwenden Sie eine indirekte Nachschlagebeziehung, wenn die externen Daten keine Salesforce-Datensatz-IDs enthalten. Bei einer indirekten Nachschlagebeziehung wird ein untergeordnetes externes Objekt mit einem übergeordneten standardmäßigen oder benutzerdefinierten Objekt verknüpft. Wenn Sie ein indirektes Nachschlagebeziehungsfeld für ein externes Objekt erstellen, geben Sie das übergeordnete Objektfeld und das untergeordnete Objektfeld an, um sie miteinander abzugleichen. Dabei wählen Sie das Feld für die benutzerdefinierte eindeutige, externe ID im übergeordneten Objekt aus, das mit dem indirekten Nachschlagebeziehungsfeld des untergeordneten Objekts abgeglichen werden soll, dessen Werte durch den angegebenen Namen der externen Spalte bestimmt werden.

Diese Tabelle zeigt einen Überblick über die Arten von Beziehungen, die für externe Objekte zur Verfügung stehen:

Beziehung

Zulässige untergeordnete Objekte

Zulässige übergeordnete Objekte

Übergeordnetes Feld zum Abgleichen von Datensätzen

Nachschlagen

Standard

Benutzerdefiniert

Extern

Standard

Benutzerdefiniert

Die 18-stellige Salesforce-Datensatz-ID

Externes Nachschlagen

Standard

Benutzerdefiniert

Extern

Extern

Das Standardfeld "Externe ID"

Indirektes Nachschlagen

Extern

Standard

Benutzerdefiniert

Sie wählen ein benutzerdefiniertes Feld mit den Attributen "Externe ID" und "Eindeutig" aus.

Sie kennen jetzt einige wichtige Aspekte, die Sie beim Entwurf Ihrer Organisation für große Datenmengen beachten (und vermeiden) sollten. Möglicherweise sollten Sie einen Architekten von Salesforce Strategic Services hinzuziehen, der Sie beim Entwickeln der Strategien unterstützt, mit denen Sie die anfängliche Konfiguration und das Wachstum im Laufe der Zeit optimal managen. In der nächsten Einheit bringen wir Abfragen und Suchen bei großen Datenvolumen ins Spiel.

Ressourcen

Teilen Sie Ihr Trailhead-Feedback über die Salesforce-Hilfe.

Wir würden uns sehr freuen, von Ihren Erfahrungen mit Trailhead zu hören: Sie können jetzt jederzeit über die Salesforce-Hilfe auf das neue Feedback-Formular zugreifen.

Weitere Infos Weiter zu "Feedback teilen"