Sto lavorando su un'applicazione Spring Boot, e ho familiarità con JPA, ma completamente nuova su DynamoDB. Sto ancora pensando in termini di RDBMS, quindi ho problemi a visualizzare le cose in NoSQL, quindi volevo sapere se la seguente applicazione può essere modellata usando DynamoDB come sistema di database:
1) L'applicazione è per memorizzare dati da fogli di calcolo (ho scritto un file processor che funziona correttamente per ottenere ogni riga del foglio di calcolo) nel database.
2) Ogni foglio di calcolo è conforme a uno standard. Le 4 colonne in ogni foglio di lavoro, da sinistra a destra sono:
DATATYPE, DATAVALUE, APPLICATION_NAME, APPLICATION_VALUE
E le seguenti sono 2 righe di esempio:
COUNTRY_NAME, STATI UNITI, GOOGLE, Stati Uniti
COUNTRY_NAME, STATI UNITI, FACEBOOK, USA
Fondamentalmente questa è un'applicazione che conserva record di come i dati sono rappresentati in varie applicazioni, e come tali la combinazione "DATATYPE" e "DATAVALUE" come input dovrebbe fornire al chiamante tutti i dati disponibili per la combinazione, in termini di Java, Presumo che questa sarà una mappa, IE {GOOGLE = US, FACEBOOK = USA}. Chiamerò questa ASSUNZIONE 1 come riferimento più avanti in questa domanda.
3) Il sistema deve supportare anche il controllo delle versioni. OSSIA un foglio di calcolo può contenere un nuovo valore per un'applicazione esistente, ad esempio:
COUNTRY_NAME, STATI UNITI, GOOGLE, U.S.A.
Si noti che il valore è ora "U.S.A" (v2) anziché "US" come nel foglio di calcolo originale (v1). Entrambi questi valori devono ora essere nel sistema, con v2 come ultimo.
4) Le informazioni sulla versione dovrebbero essere memorizzate separatamente dai dati effettivi. Ciò significa che avrei bisogno di memorizzare i dati di aggiornamento nella stessa "tabella" (inserisco le virgolette perché è così che lo visualizzo, quindi potrebbe essere sbagliato). Ciò è in conflitto con ASSUMPTION 1 a causa della natura di Maps. Ciò significa anche che deve esserci un'altra "tabella" per memorizzare le informazioni sulla versione e in qualche modo legarla ai dati originali.
In conclusione, il modo in cui i requisiti sono presentati sopra, un sistema può essere implementato utilizzando DynamoDB? O c'è un difetto nelle mie stesse esigenze? Sto attraversando un periodo molto difficile visualizzando NoSQL, ma comprendo le chiavi Hash e Range.
Grazie.