Domanda

Nel nostro progetto abbiamo già un incorporato di archiviazione di valori-chiave in memoria per gli oggetti, ed è molto utile, perché ci permette di fare gli indici per esso e interrogare lo stoccaggio basati su di esso. Quindi, se abbiamo una raccolta di s "studente", e un indice composto sul student.group e student.sex, allora possiamo trovare tutti gli studenti di sesso maschile di gruppo "ABC". Lo stesso vale per l'eliminazione e così via.

Ora dobbiamo adottare il nostro servizio per lavorare in una nuvola, in modo che non ci sarà più server, l'elaborazione delle richieste degli utenti, e hanno uno stato condiviso, memorizzato in questa memoria chiave-valore indicizzato. Abbiamo cercato di adottare memcashed per le nostre esigenze, ed è quasi ideale - è veloce, semplice e collaudata soluzione, ma non avere indici, quindi non possiamo utilizzato per cercare i nostri dati temporanei.

C'è un altro modo per avere una cache remota, proprio come il memcashed, ma con gli indici?

Grazie.

È stato utile?

Soluzione

Hazelcast , Si tratta di una griglia di dati in memoria che distribuisce i dati tra i server. Si possono avere indici come te descritto nella sua domanda e domanda per loro.

L'uso è molto semplice. Basta aggiungere Hazelcast.jar e iniziare a scrivere codice. Può essere sia incorporato e remota.

Ecco l'utilizzo degli indici e di query

index add

IMap<Integer, Student> myDistributedMap = Hazelcast.getMap("students")
myDistributedMap.addIndex("group", false);
myDistributedMap.addIndex("sex", false);

store a IMDG

myDistributedMap.put(student.id, student)

;

richiesta

Collection<Student> result = myDistributedMap.values(new SqlPredicate("sex=male AND group=ABC"));

Infine funziona benissimo in the cloud. Es: EC2

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