A distanza di archiviazione di valori-chiave che consente indici?
-
30-09-2019 - |
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.
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 ??p>
Collection<Student> result = myDistributedMap.values(new SqlPredicate("sex=male AND group=ABC"));
Infine funziona benissimo in the cloud. Es: EC2