Sto cercando di determinare la migliore applicazione e l'architettura del database per un progetto su cui sto lavorando.
L'idea è che ci saranno più applicazioni separate che condivideranno tutte le tabelle come un utente e una tabella Employee. Ogni Applicazione avrà una porzione web (che potrebbe richiedere un'API, a seconda che il rendering sia lato server o lato client) e una porzione iOS (che richiederà un'API). Se decido di eseguire il rendering lato client e utilizzare un qualcosa come Vue.js, React o Ember. Potrei riuscire a consolidare le API web e iOS. (Una nota a margine: mi sento molto più a mio agio con il rendering lato server e dovrei imparare un framework JS se decido di andare dal lato client ma lo faremo se questa è l'opzione migliore.)
Attualmente ho 3 diversi approcci su come implementare questo tipo di sistema. Tutti loro separano le tabelle comuni all'interno di un database separato che chiamerò COMMON_DB.
(scusate per favore l'ultima opzione, ho dovuto ridisegnarla dalla prima pagina.)
-------------------- Descrizione del testo delle opzioni -------------------
Opzione 1:
Usa un'API insieme a GraphQL che faccia tutte le comunicazioni con tutti i database del sistema. Se c'erano 2 applicazioni Web, l'API avrebbe 3 database collegati, DB_APP_1, DB_APP_2 e DB_COMMON. Il database comune conterrebbe tabelle duplicate / condivise tra le 2 applicazioni. Le applicazioni (App1 e App2) sarebbero server client o server laterali e sarebbero in grado di comunicare con l'API DB per ottenere determinate informazioni richieste.
Opzione 2:
Ogni applicazione si connette a 2 diversi database. L'app 1 si collegherebbe a DB_APP_1 e DB_COMMON, l'app 2 si collegherebbe a DB_APP_2 e DB_COMMON. App1 e App 2 sarebbero server-side (ether API per client-side o rendering client tramite rendering lato server)
Opzione 3:
Ogni applicazione comunica con un server API comune. Il server API comune ha 1 database, ovvero le tabelle comuni di ciascuna applicazione. Ogni app ha il proprio database, che contiene tutta la tabella univoca per ogni applicazione. Ogni Applicazione non avrebbe accesso diretto al database comune come l'Opzione 2. Di nuovo, l'app 1 e l'app 2 sarebbero API lato server, etere per un rendering lato client o rendering lato client.
Attualmente sto combattendo su quale di questi approcci sarebbe il più vantaggioso e prevenirò i blocchi stradali in futuro. Ci sarà un po 'di apprendimento delle nuove tecnologie che ci si può aspettare.
Qualunque opinione e opinione sarebbe molto apprezzata, per favore fatemi sapere se qualcosa non è chiaro o avete qualche domanda.
Grazie