Sto sviluppando una sorta di gioco di ruolo basato sul web. Quindi per il mio dominio player
ho trovato questo.
player
oggetto avrà molti parametri come class
, level
, name
e così via. Come oggetto piuttosto semplice, lo memorizzo nel database relazionale come PostgreSQL
ad esempio. Ho un'entità RPlayer
per quello.
Inoltre, volevo introdurre per player
la possibilità di stabilire contatti con altri giocatori, alcune funzionalità di base dei social network. Per questo motivo ho deciso di utilizzare un database grafico come Neo4J
. Ho un'entità GPlayer
per quello. È un oggetto più semplice con alcuni campi univoci come id
o name
.
Come oggetto è diventato in qualche modo distribuito - tengo i dati per esso in diversi depositi - Ho aggiunto la mappatura di id
in RDBMS a id
in graphDB. Alla fine sembra così. (Non so come aggiungere campi in draw.io
alla tabella, quindi qui ho solo tre campi e manca name
).
Nonhocollegatoplayers
emapping
tabellainquantounodeicampièesternoquindinonavevomotivodiconnettererelational_uuid
aid
inplayers
tabella.
Quandohobisognodirecuperaretutto-uniscotuttiidatidaGPlayer
-larappresentazionedelgiocatoreèilgrafico-eRPlayer
-larappresentazionedelgiocatoreèlatabella-inCompletePlayer
oggettochecontienetuttiicampidientrambiglioggetti.
Quando aggiungo un nuovo giocatore
1. I create record in app.players table and get r_ID
2. I create node in graphDB and get g_ID
3. I create record in util.mapping for r_ID and g_ID
Anche i 3 passaggi che sto pianificando di fare nell'ambito di global transaction
.
Questo approccio è ok? Dovrei in qualche modo memorizzare il dominio nel singolo database e non diffonderlo tra diversi archivi?