Ho controllato alcuni altri thread sull'argomento e cerco in giro, mi chiedo se qualcuno possa darmi una chiara indicazione su perché dovrei considerare NoSQL e quale (dal momento che ce ne sono parecchie ognuna con scopi diversi)
Come molti altri - ho iniziato con i database relazionali e ho lavorato su di essi da allora, quindi quando viene presentato un problema, il primo istinto è pensare sempre a "Posso creare queste tabelle, con queste colonne, con queste chiavi esterne ", ecc.
Il mio obiettivo generale è Come entrare nella mentalità "NoSQL" ? vale a dire allontanarsi dall'inclinazione di pensare sempre a tabelle / colonne / FK (capisco che ci sono casi in cui RDBMS è ancora il modo migliore per andare)
Sto pensando a 2 scenari, ad esempio solo per ottenere una direzione più concreta
Scenario 1
Immagina un database per modellare la costruzione di istruzioni per il mobile (pensa alle istruzioni IKEA) dove avresti l'oggetto "mobile" che avrebbe una lista di "materiali" e avere un elenco di "istruzioni"
- Mobili - avrebbe semplicemente un nome che ha un elenco di Materiali e Istruzioni
- Materiali - sarebbe un nome + quantità, potrebbe anche essere possibile avere anche la tabella "Categoria materiale"
- Istruzioni - sarebbe semplicemente un elenco ordinato di testi
Il mio primo istinto sarebbe stato il modo RDBMS:
- Crea una tabella chiamata "Mobili", "Materiale" e "Istruzioni" e le colonne appropriate
- Crea le tabelle JOIN appropriate secondo necessità e FK
L'uso di questo sistema può includere cercare in base ai materiali o può essere una combinazione di materiali. E si può pensare di estendere i dati memorizzati per includere informazioni su quante persone sono necessarie per costruirlo? Livello di difficoltà? quanto tempo ci vorrebbe?
Qualcosa di simile potrebbe essere un buon candidato per un database NoSQL?
Scenario 2
Immagina un database per modellare un database utente con informazioni di base (ad esempio nome, email, numero di telefono, ecc.), ma vuoi anche avere la flessibilità di poter aggiungere qualsiasi campo personalizzato come desideri.
Pensa a sistemi diversi che utilizzano questo database utente, ogni sistema vorrebbe avere il proprio attributo personalizzato da collegare all'utente
La mia inclinazione sarebbe andata nel modo RDBMS:
- Crea una tabella per "USER" con colonne: ID, nome, email, telefono
- Crea una tabella per "USER_ATTRIBUTE" con colonne: ID, USER_ID, attr_name, attr_type, attr_value
USER_ATTRIBUTE consentirà tale personalizzazione e flessibilità senza dover spegnere il sistema, modificare il database e riavviarlo.
Qualcosa di simile potrebbe essere un buon candidato per un database NoSQL?