Mongodb: ¿Qué saber antes de usar? [cerrado]


Estoy empezando un proyecto de hobby (sin ingresos) usando Ruby on Rails. He hecho una buena cantidad de desarrollo en Rails usando Postgresql, y puedo hacer una imitación bastante buena del esquema normalizado. Sin embargo, Mongrodb se ve brillante y nuevo. ¿Qué mejor para probar algo nuevo que un proyecto de hobby?

Piense en cuando empezó a usar Mongodb. ¿Qué técnicas aprendiste más tarde que te hicieron decir, " Si tan solo supiera eso cuando empecé!"¿Qué plug-ins has descubierto que habría utilizado desde el principio, si sólo lo hubiera sabido? ¿Qué referencias te gustaría haber marcado?

Author: Simone Carletti, 2010-01-23

5 answers

Definitivamente secundaría la recomendación de MongoMapper si vas a usar MongoDB con Rails. Te advierto, sin embargo, que no hay (hasta ahora) ninguna documentación que no sea un par de entradas de blog. Si no te sientes cómodo explorando el código fuente para ver cómo funcionan las cosas, probablemente aún no sea para ti.

Si estás trabajando fuera de Rails, te recomiendo que te mantengas alejado de MongoMapper. Porque está trabajando MongoDB en algo similar a lo que esperamos de un SQL respaldado por SQL, realmente no te da una buena idea del poder y de las diferentes formas de pensar detrás de MongoDB. Pase algún tiempo jugando con el controlador ruby de nivel inferior, e incluso en la consola javascript.

La otra cosa que recomendaría, especialmente porque mencionaste saber cómo normalizar un esquema, es no pensar en MongoDB como una base de datos por ahora. La forma de organizar sus datos en MongoDB es muy diferente que con una base de datos relacional. Trata de pensar en es más como un lugar para almacenar y recuperar hashes Ruby. Puedes hacer algunas cosas relacionales con MongoDB, pero te recomiendo que te quedes solo con documentos autónomos mientras intentas envolver tu cabeza en NoSQL.

En cuanto a qué enlaces debes mirar, te recomiendo leer todo lo que puedas en el sitio de MongoDB. Su documentación es muy buena. En particular, eche un vistazo a las consultas avanzadas , multikey indexes , and MapReduce to obtenga una idea de algunas de las ventajas y fortalezas únicas de una base de datos NoSQL.

 63
Author: Emily,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-26 22:28:40

Estoy casi en la misma etapa que tú. Iniciar un nuevo proyecto con MongoDB. Tengo alrededor de 7 semanas de experiencia. Esto es lo que he encontrado muy útil:

Utilice Mongoid en lugar de Mongomapper

Http://mongoid.org/

La documentación es excelente. En serio, excelente. Le tomará unos 15 minutos leer toda la documentación y tendrá una idea muy exacta de lo que puede hacer y no puede hacer con Mongoid.

Mañana, el release candidate for a new major version of mongoid will be released. Va a traer muchas cosas útiles.

Estoy usando Rails 3. Para instalar la versión de desarrollo agregue esto a su archivo gem:

Gema 'mongoid', "~>2.0.0.beta "

La beta actual es de 20, pero como he dicho, mañana está el release candidate.

También te sugiero que te unas al grupo de Google también. Tiene poco tráfico y la gente está muy dispuesta a responder cualquier pregunta. Por ejemplo, les mostré mi primer diseño de modelo DB y me dieron muchas maneras de mejorar eso. El creador de Mongoid también responde a tus preguntas.

En dos palabras: Gran comunidad.

Existe este plugin que te permite usar Machinist con mongo:

Https://github.com/nmerouze/machinist_mongo

Funciona bastante bien.

gem 'machinist_mongo', :require => 'machinist/mongoid', 
:git => 'http://github.com/nmerouze/machinist_mongo.git',
:branch => 'machinist2'

Puede usar falsificación con Maquinista. Increíble mezcla.

Https://github.com/sevenwire/forgery

Otra cosa que quiero decir. Vengo de un mundo de base de datos de relación, por lo que esto sonó muy raro al principio: Puede guardar archivos en una base de datos mongo.

De hecho, podría ser más rápido que administrarlos como solíamos hacer. Esto se debe al apoyo de mongo para el sharding. Sharding significa que puede usar un clúster de equipos para servir la base de datos Mongo. Es inconsútil. Amo-esclavo. Por lo tanto, puede servir un archivo desde muchas computadoras, cada una enviando una porción. Se escala muy bien :)

Esto se hace usando GridFS. http://www.mongodb.org/display/DOCS/GridFS

Mongoid soporta esa configuración maestro-esclavo.

Pregúntame si necesitas más información.

Editar:

También: http://railscasts.com/episodes/238-mongoid

 26
Author: Nerian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-06 21:46:31

1. La consulta no distingue entre mayúsculas y minúsculas

Eq

"_id": "1da259c70fe3392c3b000002",
"name": "Dany"

array('name' => 'dany') :: results 0
array('name' => 'Dany') :: results 1

2. Último insértese ID:

$coll->insert($user, true);
echo (string) $user['_id'];

3. _id es un MongoId objeto

Buscar por id:

$p->findOne(array('_id' => new MongoId( $UID  )), array('proj'));

Mostrar _id:

$coll['_id'] = ( string ) $coll['_id'];

También _id es solo único por colección, puede ser diferente en otro servidor

4. MongoDB tiene soporte para LIMIT,OFFSET, ORDER

Para una clasificación anticipada, puede usar el Marco de agregación.

5. En SQL es inyección Sql en MongoDB es inyección de matriz

Entonces cuando escribe algunos datos use (string ) o comprueba is_array

$req = (string) $range['name'];

6. HDD DOS

El tamaño predeterminado de _POST es de 8 MB en PHP, EN Mongo hay límite por documento de 16 MB. Así que imagine Alguna cadena USER_AGENT eq parodia de usuario en su script analítico y luego envíe 16 MB por inserción individual.

7. Hubo algunos problemas en el pasado con MongoDb pero ahora 3.0 es bastante impresionante y estable.

 8
Author: user956584,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-23 08:24:44

Aquí está un gran principiante / introducción a MongoDB podcast de. NET Rocas -

Http://www.dotnetrocks.com/default.aspx?ShowNum=507

Mike Dirolf es entrevistado... trabaja en el proyecto MongoDB. Y la calidad del sonido es excelente.

Mike Dirolf es Ingeniero de Software en 10gen, donde trabaja en el proyecto MongoDB. Trabaja principalmente en controladores de cliente para Python y Ruby, pero también se toma el tiempo para hablar de MongoDB - ha presentado en EuroPython, Strange Loop Conf, RubyEnRails, RuPy y RubyConf, así como en grupos de meetup en la ciudad de Nueva York, Londres, Washington D. C. y San Francisco.

 3
Author: Kris Krause,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-01 10:28:07

Definitivamente deberías echar un vistazo a junemakers mongo-mapper: http://github.com/jnunemaker/mongomapper Pero también le recomiendo que juegue un poco con el controlador pure Ruby Mongo para ver cómo funciona mongo-mapper bajo el capó. No es muy difícil poner algunos datos en una base de datos Mongo usando Ruby.

Supongo que ya has encontrado el tutorial de Ruby Mongo. En caso de que no lo hicieras, aquí está el enlace: http://www.mongodb.org/display/DOCS/Ruby + Tutorial

 2
Author: t6d,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-24 11:57:20