Esiste un modello di programmazione, un modello di progettazione o una convenzione di denominazione per spostare i dati tra schemi correlati? [chiuso]

1

Sto lavorando a un'applicazione web accessibile pubblicamente. (Realmente) Per farla breve, abbiamo due serie di tabelle nel database con relativamente gli stessi nomi e relativamente gli stessi dati. Il primo set di tabelle viene utilizzato dal nostro sito Web, che chiamerò Set A. Il secondo set di tabelle viene utilizzato da un'applicazione Oracle Forms, che chiamerò Set B.

I motivi delle tabelle duplicate:

  1. I dati nel Set B sono il Santo Graal delle informazioni. Consentire al pubblico di cambiare questo ha ripercussioni legali.
  2. Il pubblico può compilare parzialmente tutti i moduli nella nostra applicazione Web e, con un clic del pulsante finale, finalizzare le informazioni. Quindi devono pagare una tariffa prima che inizi l'elaborazione a valle. Gli utenti possono avviare, interrompere e riavviare questo processo un numero illimitato di volte.

Il mio compito corrente è copiare i dati dal Set B nel Set A in un'unica operazione, in modo che i campi del modulo siano prepopolati. Se non lo facciamo, ogni pagina della nostra applicazione web deve prima estrarre i dati dal Set A, e se manca, ricade sul Set B (che a volte comporta conversioni di dati).

L'ho costruito e funzionante correttamente, ma non sono molto interessato ai nomi che ho usato: * Convertitore

Sto davvero cercando di evitare un oggetto "servizio". Avendo letto Devo chiamarlo .. SomethingManager su Coding Horror, nominando qualsiasi cosa con la parola " servizio "mi fa venir voglia di scrivere un post sul blog di pari livello intitolato" Lo chiamerò .. SomethingService. "

Il mio sviluppatore principale non ha gradito la convenzione di denominazione "Convertitore". Ho cercato per la programmazione e modelli di progettazione per lo spostamento di dati tra tabelle simili e non ho trovato nulla.

Ho pensato a "Migrazione", ma ciò implica la modifica iterativa dello schema del database per un periodo di tempo (ad esempio, Migrazioni del database dei record attivi).

Qualunque sia il nome o il modello, mi piacerebbe che comunichi chiaramente:

  1. Le informazioni vengono estratte da un set di tabelle
  2. Associato a un modello di oggetto comune
  3. E inserito in un altro schema

Inoltre mi sento come se non fossi la persona solo che ha riscontrato questo problema.

Esiste un modello di programmazione, un modello di progettazione o una convenzione di denominazione per lo spostamento dei dati tra schemi correlati?

Aggiornamento: uno dei maggiori problemi che ho è che le tabelle del sito web (Set A) non hanno chiavi primarie o esterne! Abbiamo un sacco di metadati nascosti in costanti, i cui valori vengono ammucchiati insieme in una singola colonna.

La risposta di kevincline alla scrittura di una stored procedure è in realtà il motivo per cui scelgo di gestire questa situazione specifica nel codice. Abbiamo una procedura memorizzata per spostare i dati dal Set A al Set B, e Oh. Mio. Bontà. I cerchi che il povero sviluppatore PL / SQL ha dovuto saltare per districare il nostro casino non erano niente meno che un miracolo.

In questo caso, il codice era molto più facile da scrivere e gestire al di fuori del database perché la nostra applicazione web ... beh. Pensa a tutte le migliori pratiche di progettazione di database immaginabili e poi fai esattamente il contrario.

    
posta Greg Burghardt 30.09.2014 - 20:05
fonte

3 risposte

2

Se vuoi dare un nome a "spostare i dati tra schemi correlati": In Datawarehousing questo è chiamato ETL:

Da Extract_transform_load @ wikipedia

In informatica, estrazione, trasformazione e caricamento (ETL) si riferisce a un processo nell'utilizzo del database e in particolare nel data warehousing che:

  • Estrae i dati da fonti esterne
  • Lo trasforma per soddisfare esigenze operative, che possono includere livelli di qualità
  • Carica nel target finale (database, in particolare, archivio dati operativo, data mart o data warehouse)
risposta data 01.10.2014 - 12:45
fonte
1

Vorrei solo scrivere una procedura memorizzata per fare questo invece di ottenere il codice dell'applicazione coinvolto. Sarà più facile da sviluppare e mantenere e funzionerà più velocemente. Potresti aver bisogno di una sola dichiarazione MERGE per ogni tabella di destinazione.

    
risposta data 30.09.2014 - 20:37
fonte
0

Un modello di progettazione sarebbe probabilmente più applicabile al raggiungimento dell'obiettivo nel codice sorgente piuttosto che alla descrizione dell'obiettivo stesso. Sembra che questo potrebbe essere stato codificato usando il pattern Adapter o Strategy, ma di nuovo, ciò dipenderebbe dal codice stesso.

Sembra che tu stia cercando un nome per descrivere l'intero processo, quindi vuoi applicarlo al codice per descrivere che "questa è la parte del codice che converte / traduce i dati da B ad A". Dipende molto dal codice base. Ma potresti prendere in considerazione la denominazione in base ai nomi effettivi. SetBConverter potrebbe non essere così male, a seconda del contesto. Oppure OracleToWebDataTranslator o qualsiasi altra cosa ... (ora sto entrando nella speculazione totale).

In generale, molta informatica può essere ridotta alle trasformazioni dei dati. Spostarsi tra schemi correlati è un po 'più specifico, ma non riesco a pensare a termini specifici per coprirlo.

    
risposta data 30.09.2014 - 20:26
fonte

Leggi altre domande sui tag