Richiedi dati da Wikidata ogni volta o salvalo nel database?

2

Sto lavorando su un'applicazione web, che ottiene i dati di Wikipedia da Wikidata (come descrizione, immagine, link di Wikipedia) e li mostra sulla pagina.

Vedo 2 modi per farlo:

  1. Carica i dati richiesti da Wikidata nel mio database e poi prendili da esso. In questo caso la mia applicazione funzionerà quando Wikidata non è disponibile (succede qualche volta).

  2. Fai in modo che ogni volta che Wikidata visualizza la neve. In questo caso ho solo bisogno di mantenere il codice dell'articolo (ad esempio Q1637368)) nel database. In questo caso i dati sono sempre aggiornati. In caso contrario, a volte ho bisogno di eseguire qualche processo per la sincronizzazione.

E non sono sicuro di cosa è meglio per le prestazioni.

La domanda è: quale modo dovrei scegliere?

    
posta Alexan 23.11.2016 - 19:35
fonte

1 risposta

3

Bene, non possiamo dirti quale sarà più performante perché non abbiamo idea di quanto velocemente il tuo database stia interrogando per i dati di staging, rispetto a quanto velocemente l'API di Wikidata ti fornirà dati.

Per decidere, dovrai prima decidere se l'app deve funzionare se Wikidata è offline. Se è così, allora dovrai memorizzare il wiki per metodo 1.

Supponiamo che tu decida che devi mostrare qualcosa anche se Wikidata non funziona.

Dovrai configurare il tuo database per memorizzare le richieste degli utenti, insieme al metodo che stai usando per mostrare i dati (la tua copia o la nuova chiamata di Wikidata) e il tempo di elaborazione dall'inizio della richiesta alla fine del richiesta. Avrai bisogno di implementare qualcosa come una selezione casuale del metodo da usare (andrei 50/50 con qualcosa come una scelta pari / dispari sul timestamp corrente per decidere quale usare).

Dopo averlo installato per un po ', imparerai esattamente qual è la differenza di velocità tra i due.

Successivamente, potresti decidere una strategia come " Archivia la mia copia dei dati per 24 ore prima dell'eliminazione " (dove, se non hai una versione precedente dei dati di < 24 ore , lo estrai da Wikidata, poi lo memorizzi nel tuo database e poi lo restituisci all'utente. Altre strategie potrebbero includere miglioramenti delle prestazioni come avere la copia dei dati scritti nel database in modo asincrono in quello scenario, in modo che gli utenti non stiano aspettando sul tuo database l'azione Write prima di vedere i loro risultati di query.

In sostanza, esegui entrambi i metodi (in base alle tue esigenze) e misuralo!

    
risposta data 23.11.2016 - 20:16
fonte

Leggi altre domande sui tag