2010-07-12 12 views
9

Sembra implementazione web-app come Twitter/facebook-parete ha bisogno di 1 enorme "feed" tabella relazionale (+ una tabella utente) e di un meccanismo di caching impressionante .. (si può raccomandare uno?)Come implementeresti twitter usando un tipo di DB noSQL?

mio principale la domanda è, come implementeresti una tale "caratteristica" usando un DB non relazionale, ad es un tipo di chiave/valore di DB?

Ovviamente, ho dovuto piace per supportare il numero di utenti che utilizzano Twitter in concomitanza e in generale.

Grazie

+0

La risposta alla tua domanda è fortemente dipendente dal tipo esatto DB –

+1

Twitter sta usando MySQL per memorizzare i tweets: http://engineering.twitter.com/2010/07/cassandra-at-twitter-today.html –

+0

mia la domanda non è come Twitter ha implementato la sua soluzione, ma come la implementeresti? – DuduAlul

risposta

0

Ovviamente, ho voluto supportare la quantità di utenti utilizzando twitter contemporaneamente e in generale.

Siamo spiacenti ma questo requisito è lontano dall'essere realistico. Twitter ha una enorme server farm per condividere i dati per supportare la loro massiccia concorrenza, hai tanti server come Twitter?

C'è un'idea di architettura l'attuazione di un clone di Twitter con Redis: TwitterAlikeExample

+0

è una domanda teorica, quindi supponiamo di avere una tale farm .. – DuduAlul

+0

per l'architettura redis: aggiungi sharding e replicazione come fa Twitter. –

2

I 'd uso Redis. Coda di chiavi per utente + set di blob recuperati da queste chiavi.

1

Lancio MongoDB nell'elenco.

Lo schema sarà piuttosto semplice.

TWEETS
nome utente (o un ID utente, se vuole normalizzare un po ')
TweetID (un numero unico)
Timestamp
Tweet (testo Tweet)

UTENTE
UserID (opzionale) Nome utente
Nome, Email, Informazioni personali (URL web, ecc.) Password (cancelletto)
Follower (rif. Utente ripetuto)
seguito (ripetendo ref utente)

+4

ok, come si fa a interrogare in modo efficiente per tutti i tweet delle persone che si sta seguendo – DuduAlul

2

Recentemente ho scritto un'implementazione minima dello strato Twitter dati utilizzando HBase. Se sei interessato puoi dare un'occhiata al succo: https://gist.github.com/1101316. Il primo file CreateTwitterTable.java ha il codice per creare le tabelle hbase e le relative famiglie di colonne correlate. Il secondo file TwitterClient.java ha il codice per le funzioni di base come getTimeline, addTweet, deleteTweet, followUser, unfollowUser e addUser.

Problemi correlati