Trattare con la ridondanza dei dati immagine in una tabella NoSQL

0

Dire che ho una struttura di database come questa:

CREATE table Customer (id identity, name varchar(30), dateofbirth datetime, Photo varbinary, primary key (id))

CREATE table Order (id int, Date datetime, Primary Key (id))

create table CustomerOrder (CustomerID, OrderID)

Dire che volevo copiare il database in DynamoDB per CQRS. La tabella dynamodb avrebbe le seguenti colonne:

Name
DateOfBirth
Photo
List of Orders

Tuttavia, se il cliente piazza 100 ordini, la stessa foto viene memorizzata 100 volte. È normale farlo o la foto deve essere memorizzata in una tabella diversa?

    
posta w0051977 20.11.2017 - 17:52
fonte

2 risposte

3

Nel mondo NoSQL perdi un comportamento relazionale alcuni . Tuttavia, non è necessario disporre di una ridondanza completa dei dati.

Nel mio caso ho creato una coppia di oggetti: SomethingRef che ha specificato un ID di ricerca e dati sufficienti per la visualizzazione e Something che estende SomethingRef per il record completo. (Ref è l'abbreviazione di riferimento)

Applicando questo al tuo caso, un Order avrebbe un oggetto CustomerRef invece di copiare l'intero record del cliente. Questo mi ha dato abbastanza libertà per duplicare solo le informazioni minime pertinenti, ma fornire maggiori dettagli nella registrazione effettiva.

Detto questo, non archivia i binari in un database di documenti NoSQL. La maggior parte di essi usa JSON come meccanismo di trasporto, che decodificherà in un array di byte, che a sua volta occupa memoria run-time che non può permettersi di sprecare se si tenta di mantenere bassi i costi di hosting. Utilizza l'archiviazione BLOB come S3 o alcuni equivalenti e archivia l'URL dei dati nel tuo oggetto Customer . In questo modo puoi fare in modo che l'interfaccia utente estragga direttamente l'immagine dallo storage blob o ti dia la flessibilità di scorrere attraverso l'app.

    
risposta data 20.11.2017 - 19:12
fonte
-2

Sì, questo è normale nel mondo NoSQL.

L'idea è che tu usi NoSQL quando lo spazio di archiviazione disponibile è grande rispetto ai volumi che stai effettivamente scrivendo, così puoi semplicemente scrollare di dosso i requisiti di archiviazione non ottimali. Ovviamente, i dati di immagine duplicati sono uno spreco di spazio particolarmente grave perché le immagini sono così grandi rispetto ai bit di testo, ma i programmatori NoSQL che conosco potrebbero davvero scrollare di dosso anche questo.

    
risposta data 20.11.2017 - 18:29
fonte

Leggi altre domande sui tag