Questo documento delinea i consigli chiave durante la progettazione del modello dati Adobe Campaign.
Per una migliore comprensione delle tabelle integrate di Campaign e della loro interazione, consulta questa sezione sezione .
Leggi questa documentazione per iniziare a utilizzare gli schemi di Campaign. Scopri come configurare gli schemi di estensione per estendere il modello di dati concettuale del database Adobe Campaign in presente documento.
Il sistema Adobe Campaign è estremamente flessibile e può essere esteso oltre l'implementazione iniziale. Tuttavia, mentre le possibilità sono infinite, è fondamentale prendere decisioni sagge e creare solide basi per iniziare a progettare il modello dati.
Questo documento fornisce casi d’uso comuni e best practice per imparare a progettare correttamente lo strumento Adobe Campaign.
Adobe Campaign è un potente sistema di gestione delle campagne cross-channel che consente di allineare le strategie online e offline per creare esperienze cliente personalizzate.
Mentre la maggior parte dei provider di servizi e-mail comunica ai clienti con un approccio incentrato sull’elenco, Adobe Campaign si basa su un database relazionale per sfruttare una visione più ampia dei clienti e dei loro attributi.
Questo approccio incentrato sul cliente è mostrato nel grafico seguente. La Destinatario la tabella in grigio rappresenta la tabella cliente principale intorno alla quale viene creato tutto:
Per accedere alla descrizione di ciascuna tabella, vai a Admin > Configuration > Data schemas, seleziona una risorsa dall’elenco e fai clic sul pulsante Documentation scheda .
Il modello dati predefinito di Adobe Campaign è presentato in presente documento.
Adobe Campaign Classic consente di creare una tabella cliente personalizzata. Tuttavia, nella maggior parte dei casi, si consiglia di sfruttare lo standard Tabella destinatari che dispone già di tabelle e funzionalità aggiuntive predefinite.
Quali dati devono essere inviati ad Adobe Campaign? È fondamentale determinare i dati necessari per le attività di marketing.
Adobe Campaign non è né un data warehouse né uno strumento di reporting. Pertanto, non cercare di importare in Adobe Campaign tutti i possibili clienti e le relative informazioni associate, né di importare dati che verranno utilizzati solo per generare rapporti.
Per decidere se un attributo sarebbe necessario o meno in Adobe Campaign, chiedi se rientra in una di queste categorie:
Se non rientra in nessuno di questi, è molto probabile che questo attributo non sarà necessario in Adobe Campaign.
Per garantire una buona architettura e prestazioni del sistema, segui le best practice riportate di seguito per configurare i dati in Adobe Campaign.
Un campo deve essere memorizzato in una tabella se ha uno scopo di targeting o personalizzazione. In altre parole, se un campo non viene utilizzato per inviare un’e-mail personalizzata o come criterio in una query, occupa spazio su disco mentre è inutile.
Per le istanze ibride e on-premise, FDA (Federated Data Access, una funzione opzionale che consente di accedere ai dati esterni) copre la necessità di aggiungere un campo "on-the-fly" durante un processo di campagna. Non è necessario importare tutto se si dispone di FDA. Per ulteriori informazioni, consulta Informazioni su Federated Data Access.
Oltre al autopk definito per impostazione predefinita nella maggior parte delle tabelle, è consigliabile aggiungere alcune chiavi logiche o aziendali (numero di account, numero di client e così via). Può essere utilizzato successivamente per le importazioni/riconciliazione o i pacchetti di dati. Per ulteriori informazioni, consulta Identificatori.
Le chiavi efficienti sono essenziali per le prestazioni. I tipi di dati numerici devono sempre essere preferiti come chiavi per le tabelle.
Per il database SQLServer, è possibile utilizzare "indice cluster" se le prestazioni sono necessarie. Poiché Adobe non gestisce questa operazione, è necessario crearla in SQL.
L'attributo della tablespace nello schema consente di specificare una tablespace dedicata per una tabella.
La procedura guidata di installazione consente di memorizzare gli oggetti per tipo (dati, temporanei e indice).
Le tablespace dedicate sono migliori per il partizionamento, le regole di sicurezza e consentono un'amministrazione fluida e flessibile, una migliore ottimizzazione e prestazioni.
Le risorse Adobe Campaign hanno tre identificatori ed è possibile aggiungere un identificatore aggiuntivo.
Nella tabella seguente sono descritti questi identificatori e il loro scopo.
Identificatore | Descrizione | Best practice |
---|---|---|
Id |
|
|
Nome (o nome interno) |
|
|
Etichetta |
|
|
Le chiavi primarie sono necessarie per ogni tabella creata in Adobe Campaign.
La maggior parte delle organizzazioni importa record da sistemi esterni. Anche se la chiave fisica della tabella Destinatario è l’attributo "id", è possibile determinare anche una chiave personalizzata.
Questa chiave personalizzata è la chiave primaria del record effettiva nel sistema esterno che alimenta Adobe Campaign.
Quando una tabella preconfigurata presenta sia un'autopsia che una chiave interna, la chiave interna viene impostata come un indice univoco nella tabella del database fisico.
Durante la creazione di una tabella personalizzata sono disponibili due opzioni:
Un'autopsia non deve essere utilizzata come riferimento nei flussi di lavoro.
La chiave primaria di Adobe Campaign è un id generato automaticamente per tutte le tabelle predefinite e può essere lo stesso per le tabelle personalizzate. Per ulteriori informazioni, consulta questa sezione.
Questo valore è tratto da ciò che viene chiamato un sequenza, che è un oggetto di database utilizzato per generare una sequenza numerica.
Esistono due tipi di sequenze:
La sequenza è un valore intero a 32 bit, con un numero massimo finito di valori disponibili: 2,14 miliardi. Una volta raggiunto il valore massimo, la sequenza torna a 0 per riciclare gli ID.
Se i vecchi dati non sono stati eliminati, il risultato sarà una violazione chiave univoca, che diventa un blocco per lo stato e l’utilizzo della piattaforma. Adobe Campaign non sarebbe in grado di inviare comunicazioni (quando influisce sulla tabella dei registri di consegna) e le prestazioni sarebbero fortemente influenzate.
Pertanto, un cliente che invia 6 miliardi di e-mail all’anno con un periodo di conservazione di 180 giorni per i propri log avrebbe esaurito gli id in 4 mesi. Per evitare tale problema, assicurati di avere le impostazioni di eliminazione in base ai volumi. Per ulteriori informazioni, consulta questa sezione.
Quando viene creata una tabella personalizzata in Adobe Campaign con una chiave primaria come autoPK, a tale tabella deve essere sistematicamente associata una sequenza personalizzata dedicata.
Per impostazione predefinita, una sequenza personalizzata avrà valori compresi tra +1.000 e +2,1BB. Tecnicamente, è possibile ottenere una gamma completa di 4BB abilitando gli id negativi. Questo dovrebbe essere utilizzato con cura e un ID andrà perso quando si passa da numeri negativi a numeri positivi: il record 0 viene in genere ignorato da Adobe Campaign nelle query SQL generate.
Per ulteriori informazioni sull'esaurimento delle sequenze, guarda questo video.
Gli indici sono essenziali per le prestazioni. Quando si dichiara una chiave nello schema, Adobe creerà automaticamente un indice sui campi della chiave. È inoltre possibile dichiarare altri indici per le query che non utilizzano la chiave.
Adobe consiglia di definire indici aggiuntivi in quanto potrebbero migliorare le prestazioni.
Tuttavia, tieni presente quanto segue:
La gestione degli indici può diventare molto complessa, quindi è importante capire come funzionano. Per illustrare questa complessità, prendiamo un esempio di base, ad esempio la ricerca dei destinatari filtrando il nome e il cognome. Per eseguire questa operazione:
Passa alla cartella in cui sono elencati tutti i destinatari nel database. Per ulteriori informazioni, consulta Gestione dei profili di .
Fai clic con il pulsante destro del mouse sul pulsante First name campo .
Seleziona Filter on this field.
Ripeti questa operazione per Last name campo .
I due filtri corrispondenti vengono aggiunti sopra lo schermo.
È ora possibile eseguire il filtro di ricerca nel First name e Last name campi in base alle varie condizioni del filtro.
Ora, per velocizzare la ricerca su questi filtri, puoi aggiungere indici. Ma quali indici dovrebbero essere utilizzati?
Questo esempio si applica ai clienti in hosting che utilizzano un database PostgreSQL.
La tabella seguente mostra i casi in cui i tre indici descritti di seguito vengono utilizzati o meno in base al pattern di accesso visualizzato nella prima colonna.
Criteri di ricerca | Indice 1 (Nome + Cognome) | Indice 2 (solo nome) | Indice 3 (solo cognome) | Commenti |
---|---|---|---|---|
Nome uguale a "Johnny" | Utilizzato | Utilizzato | Non utilizzato | Poiché il nome è in prima posizione sull'indice 1, verrà comunque utilizzato: non è necessario aggiungere un criterio al cognome. |
Il nome è uguale a "Johnny" E il cognome è uguale a "Smith" | Utilizzato | Non utilizzato | Non utilizzato | Poiché nella stessa query vengono cercati entrambi gli attributi, verrà utilizzato solo l’indice che combina entrambi gli attributi. |
Cognome uguale a "Smith" | Non utilizzato | Non utilizzato | Utilizzato | Si tiene conto dell'ordine degli attributi nell'indice. Se l'ordine non corrisponde, l'indice potrebbe non essere utilizzato. |
Il nome inizia con "Joh" | Utilizzato | Utilizzato | Non utilizzato | "Ricerca a sinistra" abilita gli indici. |
Il nome termina con "nny" | Non utilizzato | Non utilizzato | Non utilizzato | "Ricerca corretta" disabilita gli indici e viene eseguita una scansione completa. Alcuni tipi di indice specifici possono gestire questo caso d’uso, ma non sono disponibili per impostazione predefinita in Adobe Campaign. |
Il nome contiene "John" | Non utilizzato | Non utilizzato | Non utilizzato | Questa è una combinazione di ricerche "sinistra" e "destra". A causa di quest'ultimo, disabiliterà gli indici e verrà eseguita una scansione completa. |
Nome uguale a "john" | Non utilizzato | Non utilizzato | Non utilizzato | Gli indici sono sensibili all'uso di maiuscole e minuscole. Per evitare la distinzione tra maiuscole e minuscole, è necessario creare un indice specifico che includa una funzione SQL come "Upper(firstname)". Dovresti fare lo stesso con altre trasformazioni di dati come "unaccen(firstname)". |
Attenzione all'integrità "propria" su grandi tavoli. L'eliminazione di record con tabelle ampie con integrità "propria" può arrestare l'istanza. La tabella è bloccata e le eliminazioni vengono effettuate una per una. Quindi è meglio utilizzare l'integrità "neutrale" sui tavoli figli che hanno grandi volumi.
La dichiarazione di un collegamento come join esterno non è valida per le prestazioni. Il record zero-id emula la funzionalità di join esterno. Non è necessario dichiarare giunti esterni se il collegamento utilizza l'autopsia.
Sebbene sia possibile unire qualsiasi tabella in un flusso di lavoro, Adobe consiglia di definire collegamenti comuni tra le risorse direttamente nella definizione della struttura dati.
Il collegamento deve essere definito in allineamento con i dati effettivi nelle tabelle. Una definizione errata potrebbe influire sui dati recuperati tramite i collegamenti, ad esempio duplicando inaspettatamente i record.
Assegna al collegamento un nome coerente con il nome della tabella: il nome del collegamento dovrebbe aiutare a comprendere cosa sia la tabella lontana.
Non denominare un collegamento con "id" come suffisso. Ad esempio, denominalo "transaction" anziché "transactionId".
Per impostazione predefinita, Adobe Campaign crea un collegamento utilizzando la chiave primaria della tabella esterna. Per una maggiore chiarezza, è preferibile definire esplicitamente il join nella definizione del collegamento.
Verrà aggiunto un indice agli attributi utilizzati in un collegamento.
In molte tabelle sono presenti i collegamenti creati da e modificati da ultimo. È possibile disabilitare l'indice utilizzando l'attributo noDbIndex sul collegamento, se queste informazioni non vengono utilizzate dall'azienda.
Quando progetti un collegamento, assicurati che il record di destinazione sia univoco quando è stata dichiarata una relazione 1-1. In caso contrario, il join potrebbe restituire più record quando è previsto un solo record. Questo si traduce in errori durante la preparazione della consegna quando "la query restituisce più righe del previsto". Imposta il nome del collegamento sullo stesso nome dello schema di destinazione.
Definisci un collegamento con una cardinalità (1-N) nello schema sul lato (1). Ad esempio, la transazione Destinatario relazione (1) - (N) deve essere definita nello schema della transazione.
Per impostazione predefinita, una cardinalità inversa di un collegamento è (N). È possibile definire un collegamento (1-1) aggiungendo l'attributo revCardinality='single' alla definizione del collegamento.
Se il link inverso non deve essere visibile all'utente, puoi nasconderlo con la definizione del link revLink='NESSUNO". Un buon caso d’uso è quello di definire un collegamento tra il destinatario e l’ultima transazione completata, ad esempio. Devi solo visualizzare il collegamento dal destinatario all’ultima transazione e non è necessario alcun link di storno per essere visibile dalla tabella delle transazioni.
I collegamenti che eseguono un join esterno (1-0.1) devono essere utilizzati con attenzione in quanto influiranno sulle prestazioni del sistema.
Adobe Campaign non è né un data warehouse né uno strumento di reporting. Pertanto, per garantire buone prestazioni della soluzione Adobe Campaign, la crescita del database dovrebbe rimanere sotto controllo. A questo scopo, segui alcune delle best practice riportate di seguito.
Per impostazione predefinita, i registri di consegna e tracciamento di Adobe Campaign hanno una durata di conservazione di 180 giorni. Viene eseguito un processo di pulizia per rimuovere i registri precedenti.
Ulteriori informazioni sulla conservazione dei dati in Linee guida sulla privacy e sulla sicurezza delle campagne.
Ulteriori informazioni sul flusso di lavoro di pulizia della base dati di Campaign in questa sezione.
Le tabelle personalizzate non vengono eliminate con il processo di pulizia standard. Anche se questo potrebbe non essere necessario il primo giorno, non dimenticare di creare un processo di eliminazione per le tabelle personalizzate in quanto ciò potrebbe portare a problemi di prestazioni.
Sono disponibili alcune soluzioni per ridurre al minimo la necessità di record in Adobe Campaign:
È possibile dichiarare l'attributo "deleteStatus" in uno schema. È più efficiente contrassegnare il record come eliminato, quindi rimandare l'eliminazione nell'attività di pulizia.
Per garantire prestazioni migliori in qualsiasi momento, segui le best practice riportate di seguito.
Adobe Campaign si basa su motori di database di terze parti. A seconda del provider, l’ottimizzazione delle prestazioni per le tabelle più grandi può richiedere una progettazione specifica.
Di seguito sono riportate alcune best practice comuni da seguire per progettare il modello dati utilizzando tabelle di grandi dimensioni e join complessi.
La dimensione della tabella è una combinazione del numero di record e del numero di colonne per record. Entrambi possono influire sulle prestazioni delle query.
Su PostgreSQL, una riga non deve superare gli 8 KB per evitare TOUR meccanismo. Pertanto, cerca di ridurre il più possibile il numero di colonne e la dimensione di ogni riga per preservare le prestazioni ottimali del sistema (memoria e CPU).
Anche il numero di righe influisce sulle prestazioni. Il database Adobe Campaign non è progettato per memorizzare dati storici non utilizzati attivamente per il targeting o la personalizzazione, si tratta di un database operativo.
Per evitare problemi di prestazioni relativi al numero elevato di righe, conservare solo i record necessari nel database. Qualsiasi altro record deve essere esportato in un data warehouse di terze parti e rimosso dal database operativo Adobe Campaign.
Di seguito sono riportate alcune best practice relative alle dimensioni delle tabelle:
Ecco un esempio:
In questo esempio: