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?
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.
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
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:
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.
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.
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
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