Archivio dati per valore-chiave sequenziale, "diario" di eventi a tempo limitato

-1

Sto progettando un sistema in cui un componente chiave agisce come un "giornale", nel senso che memorizza un elenco di eventi sequenziali che possono modificare lo stato dell'intero sistema. Su richiesta, qualsiasi altro componente nel sistema può chiedere a questo componente l'elenco completo degli eventi accaduti dall'evento XXX.

Si può pensare all'ID evento sequenziale come chiave e all'evento stesso (un oggetto con codifica JSON di alcuni kb) come valore.

Il sistema deve conservare una cronologia di un paio di giorni di dati o, in alternativa, qualche milione di record, ma potrebbe essere necessario ridimensionarli a 10 s di milioni. Gli eventi passati dovrebbero essere facili da rimuovere automaticamente dallo spazio di archiviazione.

Preferibilmente, dovrebbe essere facile scalare questa memoria su più nodi usando la replica master-master o anche master-replica.

Qualsiasi suggerimento per tale archiviazione sarebbe utile.

    
posta shevron 12.08.2018 - 15:49
fonte

1 risposta

0

Alcune considerazioni sulla qualità in cui è importante, che non hai chiarito:

  • quanto è importante conservare i dati (se si riavvia il servizio, va bene se perde dati?)

Diversi approcci plausibili che ti vengono in mente:

  • Mantieni i dati in memoria (più facili da implementare e più performanti. Usa la macchina con molta memoria. (perde i dati quando riavvii il servizio)

  • MongoDB  Questo è un ottimo scopo generale, un approccio molto veloce. Anche qui puoi usare qualsiasi db no-sql.

  • archivio di filesystem  Basta memorizzare il blob json con tutti i tuoi dati in un file chiamato con la chiave. Questo è moderatamente lento da aggiornare, ma forse abbastanza veloce per il tuo scopo ed è molto facile da implementare, scala abbastanza bene e il disco può essere condiviso su macchine (smb).

  • DB relazionale  (simile a mongodb, ma generalmente più costoso - solo una questione di preferenza)

In tutti questi casi, puoi eliminare vecchi elementi per il tuo negozio con un'attività in background con priorità molto bassa (forse se usi DB, mantieni indice su data-usato per scadenza).

    
risposta data 12.08.2018 - 16:14
fonte

Leggi altre domande sui tag