13

Attualmente sto cercando di creare un database in cui una percentuale molto grande dei dati è temporale. Dopo aver letto molte tecniche per fare ciò (la maggior parte riguarda la normalizzazione 6nf) mi sono imbattuto in Anchor Modeling.Quali sono i pro e i contro di Anchor Modeling?

Lo schema che stavo sviluppando somigliava molto al modello Anchor Modeling, soprattutto perché il caso d'uso (Temporal Data + Known Unknowns) è così simile, che sono tentato di abbracciarlo completamente.

Il problema più grande che ho è che non riesco a trovare nulla che descriva i negativi di questo approccio e non riesco a trovare riferimenti alle organizzazioni che lo hanno utilizzato nella produzione di storie di guerra e trucchi che devo essere consapevole di.

Mi chiedo se qualcuno qui sia abbastanza familiare per esporre brevemente alcuni degli aspetti negativi (poiché i positivi sono molto ben pubblicizzati nei documenti di ricerca e nel loro sito) e qualsiasi esperienza con l'utilizzo in un ambiente di produzione.

risposta

12

In riferimento alla anchormodeling.com

qui ci sono alcuni punti che sono a conoscenza

  1. Il numero di DB-oggetti è semplicemente troppo grande per mantenere manualmente, in modo da assicurarsi di utilizzare progettista tutto il tempo per evolvere lo schema.

  2. Attualmente, il progettista supporta completamente MS SQL Server, quindi se si ha il codice di porta tutto il tempo, si consiglia di attendere fino al completo supporto del DB di destinazione. So che ha Oracle in un menu a discesa, ma ...

  3. Non aspettatevi (né chiedete) ai vostri sviluppatori di capirlo, devono accedere al modello tramite viste 5NF - il che è positivo. Il fatto è che le tabelle vengono caricate tramite trigger (anziché) sulle viste, il che può (o non può) essere un problema di prestazioni.

  4. Aspettatevi che potrebbe essere necessario scrivere alcune procedure di manutenzione extra (per ogni attributo temporale) che non sono ancora state generate automaticamente.Ad esempio, ho spesso bisogno di una procedura di sfoltimento per gli attributi temporali - per cancellare record dello stesso valore per lo stesso ID su due eventi temporali consecutivi.

  5. viste generati e query-over-viste risolvere bene, e così sarà probabilmente tutto ciò che si scrive in futuro. Tuttavia, "altre persone" scriveranno query su visualizzazioni-over-view-over-views - che non sempre si risolvono bene. Quindi aspettati che tu possa aver bisogno di interrogare la polizia più del solito.

Purtroppo, ho recentemente utilizzato l'approccio di refactoring di una sezione del mio magazzino e ha funzionato come un incantesimo. Certo, il magazzino non ha la maggior parte dei problemi delineati qui.

vorrei suggerire che è indispensabile per creare una demo del sistema e test, test, test di ..., in particolare puntare No 3 - Caricamento via trigger.

5

Non ho letto alcun documento su di esso, ma dal momento che si basa su 6NF, mi aspetterei che soffrisse di qualunque problema seguisse 6NF.

6NF richiede che ogni tabella sia composta da una chiave candidata e non più di una colonna non chiave. Quindi, nel peggiore dei casi, avrai bisogno di nove join per produrre un set di risultati a 10 colonne. Ma puoi anche progettare un database che utilizza, diciamo, 200 tabelle che sono in 5NF, 30 in BCNF e solo 5 in 6NF. (Penso che non sarebbe più Anchor Modeling di per sé, che sembra mettere tutte le tabelle in 6NF, ma potrei sbagliarmi.)

Il Mese di Man mitico è ancora pertinente qui.

La domanda di gestione, quindi, non è se costruire un sistema pilota e buttarlo via. Lo farai. L'unica domanda è se pianificare in anticipo la costruzione di un gettone o promettere di consegnare il gettone ai clienti.

Fred Brooks, Jr., nel The Mythical Man-Month, pag 116.

Come a buon mercato si può costruire un prototipo per testare il caso peggiore previsto?

+0

Cat, non che non sono d'accordo con quello che dici qui, ma c'è una differenza tra un modello preso in sè (e l'atto di disegnare qualsiasi carta da modello), e l'implementazione di quel modello (l'atto di definizione di un struttura del database per implementare tale modello). C'è qualche legge che dice che un modello concettuale/informale che "assomiglia" a 6NF deve necessariamente anche portare a una struttura di database logica che sia _IS_ 6NF? Personalmente, la mia risposta sarebbe più simile a quella che quando si utilizza la modellazione di ancoraggio come tecnica per disegnare modelli _IN_formal, un singolo attributo in una "entità" (continua ...) –

+0

... occupa più pollici quadrati di quando usi ER come tecnica di disegno. Con l'inevitabile conseguenza che data una dimensione di carta fissa, la modellazione di ancoraggio non può trasmettere tutte le informazioni (_IN_formali) come possono essere E/R. Cosa ti impedisce di implementare un modello disegnato con Ancoraggio in 5NF anziché 6NF? Cosa ti impedisce di implementare un modello disegnato in E/R ranuncolo in pieno 6NF comunque? –

+0

@ErwinSmout: non esiste alcuna legge relazionale che affermi che un modello concettuale in 6NF deve generare un database in 6NF. Ho implementato modelli concettuali 5NF in Lotus Notes in precedenza - si tratta di un modello fisico 5NF * * che puoi ottenere. Ma capisco che in Anchor Modeling, * ogni * tabella che implementa un'ancora, un attributo o un nodo * deve * essere in 6NF. Le tabelle in 6NF sembrano essere necessarie per supportare i metodi agili di Anchor Modeling; Non penso che puoi scendere a 5NF senza fare qualcosa che non è più "Anchor Modeling". (Non che ci sia qualcosa di sbagliato in questo.) –

7

Rispetto al punto numero 4 sopra. Il controllo della restatement è quasi terminato, in modo tale da poter evitare due valori identici consecutivi nel tempo.

E un commento generale, i join non sono necessariamente una cosa negativa. Leggi: Why joins are a good thing.

Uno dei grandi vantaggi di 6NF in Anchor Modeling è non distruttiva evoluzione dello schema. In altre parole, ogni versione precedente del modello di database è disponibile come sottoinsieme nel modello corrente. Inoltre, poiché le modifiche sono rappresentate da estensioni nello schema (nuove tabelle), l'aggiornamento di un database è quasi istantaneo e può essere fatto in modo sicuro online (anche in un ambiente di produzione). Questo vantaggio andrebbe perso in 5NF.

Problemi correlati