Progettazione di database per Aggregator di feed RSS basato sul Web

1

Sto lavorando a un'applicazione open source che può consentire agli utenti di aggiungere feed RSS. Tutti gli utenti del sito possono leggere il contenuto di tali feed RSS. Non è solo per i feed dell'utente.

Utilizzando la libreria PHP e SimplePie ho creato una semplice app. Sto cercando di implementare l'elenco basato su categorie.

Ho una lista di feed RSS / Atom in un database. Ogni post nel feed può avere una categoria / etichetta associata ad esso e un singolo feed può avere più post che rientrano in più categorie.

Domanda: Voglio ricevere solo i post della categoria "Scienza".

Nel peggiore dei casi, se ho 1000 feed RSS, dovrei leggere i post di ciascun feed e controllare la categoria di ciascun post?

Memorizzare tutti i post di ciascun feed e le sue categorie non è una buona soluzione.

Quanto meglio possiamo avere un design di database per questo?

Lo schema del database è fornito di seguito. Nulla è stato risolto e sono libero di modificare qualsiasi schema o progetto.

link

NOTA: il violino è solo per riferimento e non ha bisogno di preoccuparsi. È opzionale come pensavo potesse aiutare a far capire agli altri.

    
posta Purus 20.03.2014 - 12:25
fonte

1 risposta

2

Guardando il tuo campione DDL in sqlfiddle, sembra che tu stia cercando di memorizzare le categorie sui post, ma considera una cattiva idea archiviare i post stessi.

Dato quello che sembra tu stia cercando, penso che avrai bisogno di una tabella di post con attributi "Mi piace" (URL, categoria (i), titolo, teaser / dettagli) .. con feed-id della tabella di feed o feed-url come una chiave straniera. Questa tabella dei post può essere indicizzata su un post-id che potrebbe anche fungere da chiave primaria

Se consenti a un determinato post di appartenere a più di una categoria, avere una tabella di categorie separate ha senso e gli ID di categorie possono quindi essere chiavi esterne nelle colonne delle categorie di post.

Why do you reckon its a bad idea to store all posts? Penso che se non desideri archiviare i singoli post, le tue opzioni sono limitate a codificare interi feed con categorie e ciò non suona come quello che stai cercando di fare.

Anche in questo caso, se il volume aumenterà rapidamente e ti preoccupi dell'indicizzazione e del rendimento, perhaps you should look into graph DBs or some other NOSQL DBs come alternative più rapide ...

    
risposta data 27.04.2014 - 18:14
fonte

Leggi altre domande sui tag