MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Transformar dados do MongoDB na localização


É possível fazer praticamente qualquer coisa do lado do servidor com o mongodb. A razão pela qual você geralmente ouve "não" é que você sacrifica muita velocidade para que isso faça sentido em circunstâncias normais. Uma das principais forças por trás do PyMongo, Mike Dirolf com 10gen, tem uma boa postagem no blog sobre o uso de javascript do lado do servidor com pymongo aqui:http://dirolf.com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html . Seu exemplo é para armazenar uma função javascript para retornar a soma de dois campos. Mas você pode facilmente modificar para retornar a primeira letra do seu campo de nome de usuário. A essência seria algo como:
db.system_js.first_letter = "function (x) { return x.charAt(0); }"

Entenda primeiro, porém, que o mongodb foi feito para ser realmente bom em recuperar seus dados, não muito bom em processá-los. A recomendação (veja, por exemplo, 50 dicas e truques para desenvolvedores mongodb de Kristina Chodorow por Oreilly) é fazer o que Andrew resumidamente aludiu acima:faça uma coluna de primeira letra e devolva-a. Qualquer processamento pode ser feito com mais eficiência no aplicativo.

Mas se você acha que mesmo consultar o nome completo antes de retornar nome completo[0] da sua 'visualização' é um risco de segurança muito grande, você não precisa fazer tudo da maneira mais rápida possível. Eu evitei map-reduce no mongodb por um tempo por causa de todas as preocupações do público sobre velocidade. Então eu executei meu primeiro mapa de redução e girei meus polegares por 0,1 segundo enquanto processava 80.000 documentos de 10k. Percebo que no esquema das coisas, isso é minúsculo. Mas isso ilustra que só porque é ruim para um site enorme sofrer um impacto no desempenho de algum processamento do lado do servidor, não significa que isso importaria para você. No meu caso, imagino que levaria um pouco mais de tempo para migrar para o Hadoop do que apenas comer 0,1 segundo de vez em quando. Boa sorte com seu site