Economia del ridimensionamento, denormalizzazione di NoSQL per contenuti personalizzati [chiuso]

5

Sto utilizzando Cassandra per un'app ad uso intensivo di dati. Con relativamente poche operazioni e esperienza di implementazione, l'esperienza che cerco è una persona che può leggere l'esempio qui sotto e decidere se sto trascurando soluzioni più semplici, o se le risorse necessarie rendono questo problema costoso o intrattabile.

  1. ~ Un milione di voci in una tabella di libri: ogni voce ~ 30 colonne - nome, serie di temi, anno, ecc.

  2. ~ 1-10 mila librerie che contengono ciascuna un sottoinsieme della tabella principale in (1), forse contenente il campo id da (1). quindi una tabella di negozio di libri per i metadati del negozio e una tabella di inventario del negozio di libri sarà necessaria.

  3. Un milione di utenti: un milione di voci in una tabella utente.

Un algoritmo di raccomandazione sequenziale è progettato per classificare la scelta migliore tra tutte le possibilità per un utente in un determinato negozio. in primo luogo, può facilmente segnare ogni libro nella tabella principale del libro con 1 o 0 in base ai gusti dell'utente. quindi può "filtrare" ciò che sa che l'utente non gradisce e gli 1 passano al round di punteggio. in secondo luogo, può richiedere dati utente in tempo reale e classificare i libri rimanenti per il negozio visitato dall'utente.

la domanda è come applicare il primo passaggio di raccomandazione binaria ai dati.

a) ciascuna delle 10.000 "librerie" ha il proprio sottoinsieme di inventario dell'elenco principale di libri. nel peggiore dei casi se tutti i negozi hanno tutti i libri (solo fingere), questo è di 10.000 negozi X un milione di libri. quindi un'operazione batch (scintilla forse) può estrarre l'inventario di un singolo negozio per ottenere un punteggio per un utente, e nella logica di applicazione , ogni libro viene confrontato con una tabella hash per verificare se ha superato il primo suggeritore binario filtro, che viene interrogato dalla tabella utente.

b) crea una tabella user-store-book (poiché l'utente ha solo uno o due negozi preferiti) che include i risultati booleani del primo round di recommender per ogni libro. questo significa un milione di utenti X un milione di libri X 2 memorizza come voci in questa tabella. quindi il lavoro in batch si limita a interrogare direttamente per i libri consigliati al fine di classificare.

Per porre la mia domanda in modo più sintetico, sono preoccupato che nella soluzione a, le risorse della CPU richieste e l'I / O extra facciano una soluzione a basse prestazioni e che la mole di dati nella soluzione b possa rendere questa soluzione intrattabile.

    
posta Ar415 31.12.2014 - 01:50
fonte

1 risposta

0

Non puoi raggruppare i libri per genere, o gruppi di gusti, per ridurre il problema a livelli più bassi? A mio parere, il problema principale è che si sta tentando di utilizzare un ampio set di dati che non è sufficientemente raffinato per fornire una visione in tempo reale. Probabilmente dovresti provare a raggruppare i libri in questa situazione. Se non ci riesci, allora sei giù per l'iterazione completa e sei limitato alle due soluzioni che hai elencato.

Modifica: ho dimenticato, ma anche il clustering degli utenti può avere senso

    
risposta data 09.09.2015 - 03:55
fonte

Leggi altre domande sui tag