Architettura / design per mettere insieme i dati MySQL ex-relazionali, ora in diversi database

1

In base alla progettazione attuale, la maggior parte dei dati viene archiviata in MySQL e utilizziamo il modello di repository nella nostra app Web come livello per recuperare i dati dal DB. Facciamo la stessa cosa quando recuperiamo le relazioni, usando i modelli del nostro framework e l'ORM per recuperare i modelli e le loro relazioni tutto in una volta.

Alcune delle nostre tabelle, principalmente log-like, sono cresciute in maniera massiccia e abbiamo in programma di trasferirle su Cassandra o qualcosa di simile. Per ora, vogliamo fare il lavoro iniziale di separare le query mysql e inserire le tabelle dei big data in una connessione di database separata.

Abbiamo difficoltà a trovare un modo pulito e organizzato per gestire i dati relazionali quando si trovano su diversi database. Ad esempio, possiamo avere una classe RelationManager che contiene metodi per prelevare due diverse parti correlate di dati e restituirle la strada verso la logica di dominio dell'applicazione, come erano prima, in modo da ridurre al minimo il refactoring nel resto dell'app. Ma qualcosa sembra solo sbagliato in proposito.

Qualche suggerimento su come altre società gestiscono i dati in molti database?

    
posta Blossoming_Flower 21.07.2017 - 21:11
fonte

1 risposta

1

Se dovessi fare questo e garantire la coerenza transazionale, allora creerei il mio record di commit in un DB SQL di reclamo ACID standalone.

Quindi, quando sei pronto per iniziare una transazione che si estende su più sistemi di database, crea una transazione e registra nel DB di transazione che contiene i metadati della transazione cross-DB. In teoria potresti persino implementare un qualche tipo di meccanismo di blocco e / o rollback, se necessario.

Quindi eseguirò le transazioni cross DB, e poi assumendo che tutto sia andato bene, registra il completamento nel DB standalone.

Avresti una certa flessibilità qui a mio avviso, a seconda di quanto impegno vuoi mettere. Ma ti permetterebbe di usare le transazioni tra i due DB.

    
risposta data 21.07.2017 - 21:27
fonte