Colecção de cache MongoDB em memória?

estou a usar mongoDB para armazenar uma colecção de polígonos e usar $geoIntersects consultas para descobrir em que polígono está um ponto específico.

A Minha ...mongoose Schema parece isto:
var LocationShema = mongoose.Schema({
    name: String,
    geo: {
        type: {
            type: String 
        },
        coordinates: []
    }
});

LocationShema.index({geo: '2dsphere'});

module.exports = mongoose.model('Location', LocationShema);
Então, cada elemento é um polígono. Eu adicionei o índice 2dsphere esperando que as consultas seriam mais rápidas e toda a coleção seria armazenada na memória. Infelizmente é preciso cerca de 600ms para ~20queries que é muito para o meu caso de uso.

As minhas perguntas são assim:
Location.find({
            geo: {
                $geoIntersects: {
                    $geometry: {
                        type: 'Point',
                        coordinates: [pos.lng, pos.lat]
                    }
                }
            }
 },...)

é posso fazer isto correr mais depressa? Posso forçar o MongoDB a guardar toda a coleção no banco de dados (como a sua coleção nunca muda). Há alguma maneira de eu poder verificar se a colecção está realmente armazenada numa cache de memória ?

Também, há alguma alternativa que eu possa usar (por exemplo: uma biblioteca ou algo assim) que permita consultas geo-espaciais rápidas?

Author: Cristy, 2016-06-14

1 answers

Com mongo >3.0 pode usar o armazenamento inMemory, o que significa que pode ter um caso de mongo quando a colecção semeada permanece na memória (todas as alterações não persistem).

Do outro lado se a sua colecção for estática-pode haver uma forma de implementar um armazenamento de 'cache' como o Redis, ou mesmo a colecção indexada TTL com consulta e resposta armazenadas.

O processo de semeadura pode ser feito por backup da coleção atual e restaurar na coleção de memória.

Quando questionando frequentemente a coleta-resíduos de TI na memória, desde que mongo precisa carregar outras coleções (no sistema de ocupado). Qualquer comentário bem-vindo!
 2
Author: profesor79, 2016-06-14 13:23:31