Domanda

Abbiamo bisogno di una soluzione di caching che memorizza nella cache in sostanza di dati (file di testo) ovunque da 3 giorni fino a una settimana in base alle preferenze degli utenti e criteri. In questo caching basato caso la memoria non ha senso per noi. Siamo stati chiamati col MemcacheDB però ho pensato anche di alcune soluzioni NO SQL.

I nostri attuali usi applicativi RDMS (MySQL) e credo che senso utilizzare MemcacheDB tuttavia NoSQL fa appello come è qualcosa di più all'orizzonte. Tuttavia non abbiamo implementato un'applicazione livello di produzione sotto NoSQL e la roba beta non risolve bene con la gestione / investitori. Qualsiasi come Quali sono i tuoi pensieri e come si sarebbe affrontare il problema?

Grazie

È stato utile?

Soluzione

CouchDB e MongoDB sono entrambi grandi basi di dati, ma sono scelte terribili per uno strato di cache in cima ai vostri RDBMS esistenti. Oltre al fatto che sono ancora piuttosto immaturo, non soddisfare lo scopo a tutti. Inoltre, la velocità-saggio si sarebbe meglio andare senza un livello di cache rispetto all'utilizzo di CouchDB o MongoDB - sono entrambi più lento per semplice lettura / scrive di MySQL ancora. Sì, i database NoSQL sono "cool", ma questo non significa che si dovrebbe utilizzare per qualcosa che non dovevano fare.

Mi piacerebbe andare con Memcached, in quanto è solo la cosa più veloce e leggero troverete, ed è ben noto e ben supportato.

Altri suggerimenti

Se siete preoccupati per l'appello al management e agli investitori, e l'attuale sistema (si parla di MySQL) opere, perché dovresti cambiare? Si sta spostando da un progetto abbastanza stabile a progetti ancora in fase beta, e quale valore stai aggiungendo se il sistema attuale funziona già?

Come accennato in precedenza, tutte le risorse CouchDB contengono etags.

Ciò che non è stato menzionato è che si può mettere qualsiasi HTTP caching soluzione di fronte CouchDB e farlo fare etag basato caching. In questo modo è possibile utilizzare per unghie, nginx, quello che volete.

Mi piacerebbe anche dare un'occhiata a Cassandra ( http://cassandra.apache.org/ ). Ho provato MemcacheDB e CouchDB, in qualche modo trovato Cassandra più attraente (Boh su PHP dato che io lavoro con ColdFusion). Ecco domanda relativa Cassandra PHP modulo

CouchDB fa già un po 'di caching: quando si ottiene un documento il server invia anche l'HTTP ETag intestazione (è la stessa della revisione del documento in CouchDB).

La prossima volta che il browser richiede lo stesso documento si invia l'Etag ricevuto. Se il documento non è stato modificato le risponde di server con il codice HTTP 304 Non modificato e il browser recupera il documento dalla cache locale.

Comunque, se avete a file di cache per tempi diversi in base alle preferenze degli utenti, anche se le modifiche di file di testo, probabilmente l'opzione migliore è quello di scrivere codice personalizzato che invia i approriate HTTP intestazioni di cache in base alle preferenze dell'utente.

Per completezza un'altra opzione buona è Redis . Si arriva prestazioni paragonabili a Memcache ma Redis supporta anche diverse strutture di dati (hash, liste, insieme, gli insiemi ordinati) e le operazioni atomiche.

Se memcached con persistenza, si dovrebbe verificare Redis. Ha tutte le funzionalità memecached (e più) con persistenza.

Non ho provato io stesso, ma mi ricordo di aver letto che Redis ha inoltre sostenuto l'API memcached pure.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top