In diesem Artikel werden bewährte Methoden zum Entwerfen des Datenmodells für Adobe Campaign Classic (v6 oder v7) beschrieben.

Einführung

Adobe Campaign basiert auf externe Datenbanken. Es gibt keine Beschränkung für die Größe von Tabellen. Um die Leistung zu optimieren, müssen große Tabellen ein bestimmtes Design haben. In diesem Artikel wird erläutert, wie Sie den Datenbankentwurf für größere Volumen optimieren können.

Größe der Tabellen

  • Eine kleine Tabelle ist der Liefertabelle ähnlich.
  • Eine mittlere Tabelle entspricht der Größe der Empfängertabelle. Sie verfügt über einen Datensatz pro Kunde.
  • Eine große Tabelle ähnelt der umfassenden Protokolltabelle. Sie enthält viele Datensätze pro Kunde.

Wenn Ihre Datenbank beispielsweise 10 Millionen Empfänger enthält, enthält die umfassende Protokolldateientabelle etwa 100 bis 200 Millionen Nachrichten und die Übermittlungstabelle enthält einige tausend Datensätze.

Hinweis:

Es empfiehlt sich, große Tabellen mit weniger Feldern und mehr numerischen Daten zu entwerfen.

Beispiel

In diesem Beispiel sind die Transaktionen und Transaktionspostentabellen groß: mehr als 10 Millionen.

Die Produkt- und Speichertabellen sind kleiner: weniger als 10.000.

Das Produktetikett und die Referenz wurden in der Produkttabelle platziert.

Die Transaktionspostentabelle enthält nur eine Verknüpfung zur Produkttabelle, die numerisch ist.

image2014-1-14_10-40-22

Auswahl an Datentypen

Eine große Tabelle sollte hauptsächlich numerische Felder und Links zu Referenztabellen enthalten.

Sie können „expr“-Attribute verwenden, um das Duplizieren von Feldern zu vermeiden. Die Empfänger-Tabelle verwendet beispielsweise einen Ausdruck für die Domäne, die bereits im E-Mail-Feld vorhanden ist.

Der „XML“-Typ ist ein guter Trick um zu viele Felder zu vermeiden. Er belegt jedoch auch Speicherplatz, da eine CLOB-Spalte in der Datenbank verwendet wird.

Auswahl an Feldern

Die Treiber, die sicherstellen, dass ein Feld in einer Tabelle gespeichert werden muss, sind: Zielgruppenbestimmungszweck oder Personalisierungszweck. Mit anderen Worten, wenn ein Feld nicht zum Senden einer personalisierten E-Mail verwendet wird oder als Kriterium in einer Abfrage, müssen Sie berücksichtigen, dass dieses Feld nutzlos ist und Speicherplatz für nichts beansprucht. 


Bedenken Sie, dass die FDA (Federated Data Access, eine optionale Funktion, die den Zugriff auf externe Daten ermöglicht) die Notwendigkeit abdeckt, während eines Kampagnenprozesses ein Feld „spontan“ hinzuzufügen. Sie müssen nicht alles importieren, wenn Sie die FDA haben.

Auswahl an Schlüsseln

Zusätzlich zu dem in den meisten Tabellen standardmäßig definierten „Autopk“, sollten Sie einige logische oder geschäftliche Schlüssel hinzufügen (Kontonummer, Kundennummer usw.). Sie können später für Importe/Abstimmungen oder Datenpakete verwendet werden.

Effiziente Schlüssel sind wichtig für die Leistung. Numerische Datentypen sollten immer als Schlüssel für Tabellen bevorzugt werden.

Für die SQLServer-Datenbank könnten Sie erwägen einen „clustered-Index“ zu verwenden, wenn Leistung benötigt wird. Da Adobe dies nicht behandelt, müssen Sie ihn in SQL erstellen. 

Indizes

Indizes sind wichtig für die Leistung. Wenn Sie einen Schlüssel im Schema deklarieren, wird Adobe automatisch einen Index für die Felder des Schlüssels erstellen. Sie können auch weitere Indizes für Abfragen deklarieren, die den Schlüssel nicht verwenden.

Indizes sollten in Größe und Anzahl begrenzt sein, da dies die Leistung beim Einfügen von Daten beeinträchtigt.

Links und Kardinalität

Stellen Sie beim Entwerfen eines Links sicher, dass der Zieldatensatz einmalig ist, wenn eine 1-1-Beziehung deklariert wurde. Andernfalls kann der Join mehrere Datensätze zurückgeben, wenn nur einer erwartet wird. Dies führt zu Fehlern bei der Liefervorbereitung, wenn „die Abfrage mehr Zeilen als erwartet zurückgibt.“ Legen Sie den Link-Namen auf den gleichen Namen fest wie das Zielschema.

Vorsicht vor der „eigenen“ Kardinalität bei großen Tabellen. Das Löschen von Datensätzen mit umfangreichen Tabellen in der „eigenen“ Kardinalität kann die Instanz stoppen. Die Tabelle ist gesperrt und die Löschungen werden nacheinander vorgenommen. Daher ist es am besten, eine „neutrale“ Kardinalität auf untergeordneten Tabellen zu verwenden, die große Volumen haben.

Das Deklarieren eines Links als einen externen Join ist nicht gut für die Leistung. Der Null-ID-Datensatz emuliert die externe Join-Funktionalität. Es ist nicht notwendig externe Joins zu deklarieren, wenn der Link „autopk“ verwendet.

Partitionierung

Die Partitionierung auf Datenbankebene könnte eine Lösung sein, um Abfragen bei bestimmten Tabellen mit großen Volumen zu optimieren. Strategien unterscheiden sich von den Zielen der Tabelle.

  • Partitionieren Sie umfangreiche Protokolle und Transaktionen nach Woche oder Monat für Antwort- oder Berichtsaggregate, um den Zugriff auf die neuesten Daten zu optimieren.
  • Partitionieren Sie die Empfängertabelle nach Region oder Agentur für das verteiltes Marketing, um den Zugriff auf lokale Daten zu optimieren.

Dedizierte Tablespaces

Mit dem Tablespace-Attribut im Schema können Sie einen dedizierten Tablespace für eine Tabelle angeben.

Der Installationsassistent ermöglicht das Speichern von Objekten nach Typ („Daten“, „temporär“ und „Index“).

Dedizierte Tablespaces eignen sich besser für Partitionierung und Sicherheitsregeln und ermöglichen eine flüssige und flexible Verwaltung, bessere Optimierung und Leistung.

1:n-Beziehungen

Der Datenentwurf wirkt sich auf Benutzerfreundlichkeit und Funktionalität aus. Wenn Sie Ihr Datenmodell mit vielen 1:n-Beziehungen entwerfen, wird es für Benutzer schwieriger, aussagekräftige Logik in der Anwendung zu konstruieren. Es kann für nicht-technische Marketingexperten schwierig sein, eine 1:n-Filterlogik korrekt zu konstruieren und zu verstehen. 

Es ist gut, alle wichtigen Felder in einer Tabelle zu haben, da es den Benutzern das Erstellen von Abfragen erleichtert. Manchmal ist es auch gut für die Leistung, einige Felder in Tabellen zu duplizieren, wenn ein Join vermeidet werden kann. 

Bestimmte integrierte Funktionen können keine 1:n-Beziehungen referenzieren, zum Beispiel Angebotsgewichtungsformeln und Lieferungen. 

Bereinigungsaufgabe

Sie können das „deleteStatus“-Attribut in einem Schema deklarieren. Es ist effizienter, den Datensatz als gelöscht zu markieren und dann das Löschen in der Bereinigungsaufgabe zu verschieben.

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie