Pregunta

Estoy empezando un proyecto manía (no facturada) usando Ruby on Rails. He hecho una buena cantidad de desarrollo en los rieles usando PostgreSQL, y puedo hacer una buena imitación del esquema normalizado. Sin embargo, Mongrodb se ve brillante y nuevo. Lo mejor para probar algo nuevo que un proyecto hobby?

Piense de nuevo a cuando comenzó a utilizar MongoDB. ¿Qué técnicas hizo que se aprende más tarde que hizo que usted dice, "Si sólo se sabía que cuando empecé!" ¿Qué plug-ins que has descubierto que habría utilizado desde el principio, aunque sólo hubiera sabido? ¿Qué referencias le gustaría haber tenido marcada?

¿Fue útil?

Solución

Sin duda, la segunda recomendación de MongoMapper si va a estar usando MongoDB con rieles. Yo advierto, sin embargo, que no es (hasta ahora) no es otro que un par de blogs mensajes documentación. Si no se siente cómodo de excavación en el código fuente para ver cómo funcionan las cosas, probablemente no es para usted todavía.

Si está fuera de los carriles de trabajo, lo recomiendo mantenerse alejado de MongoMapper. Debido a que está trabajando MongoDB en algo similar a lo que esperamos de un ORM SQL respaldados, que en realidad no le dan una buena idea de la potencia de y de la diferente idea detrás de MongoDB. Pasa algún tiempo jugando con el conductor de rubí de nivel inferior, e incluso en la consola de JavaScript.

La otra cosa que recomiendo, sobre todo ya que ha mencionado saber cómo normalizar un esquema, es no a pensar en MongoDB como base de datos por el momento. La forma de organizar los datos en MongoDB es muy diferente que con una base de datos relacional. Trate de pensar en ello más como un lugar para almacenar y recuperar los hash Ruby. Usted puede hacer algunas cosas relacionales con MongoDB, pero recomiendo quedarse con sólo los documentos autónomos, mientras que usted está tratando de envolver su cabeza en torno a NoSQL.

En cuanto a lo que los enlaces que debe mirar, lo recomiendo mucho leer a través de todo lo que pueda en el sitio MongoDB. Su documentación es muy bueno. En particular, echar un vistazo a la consultas avanzadas , índices multitecla y MapReduce para tener una idea de algunas de las ventajas únicas y fortalezas de una base de datos NoSQL.

Otros consejos

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

Uso Mongoid en lugar de MongoMapper

http://mongoid.org/

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

Mañana, se dará a conocer la versión candidata para una nueva versión principal de MongoId. Se va a trae un montón de cosas útiles.

Estoy usando Rails 3. Para instalar la versión de desarrollo añadir esto a su archivo de joya:

joya 'MongoId', "~> 2.0.0.beta"

beta actual es de 20, pero como dije, mañana hay la versión candidata.

También me sugest a unirse al grupo de Google también. Cuenta con poco tráfico y la gente está muy dispuesto a responder a cualquier pregunta. Por ejemplo, yo les mostré mi primer diseño Modelo DB y me dieron muchas maneras de mejorar eso. El creador de Mongoid responder a sus preguntas también.

En dos palabras:. Gran comunidad

Hay este plugin que le permite utilizar maquinista 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'

Se puede utilizar Falsificación con maquinista. mezcla impresionante.

https://github.com/sevenwire/forgery

Otra cosa que quiero decir. Vengo de una base de datos mundial relación, así que esto sonaba muy raro al principio: Puede guardar los archivos en una base de datos mongo

.

De hecho, podría ser más rápido que su gestión como estamos acostumbrados a hacer. Esto es debido al apoyo de mongo para sharding. medios que puede utilizar un conjunto de ordenadores para servir a la base de datos Mongo Sharding. Es sin fisuras. Maestro-esclavo. Para que pueda servir a un archivo de muchos equipos, cada envío de una porción. Se escala muy bien:)

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

Mongoid apoya que config maestro-esclavo.

Pídeme si necesita más información.

Editar:

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

1. Consultar su no entre mayúsculas y minúsculas

eq

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

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

2. Última inserto ID:

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

3. _id es un objeto MongoId

Buscar por ID:

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

Mostrar _ID:

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

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

4. MongoDB tiene soporte para LIMIT, OFFSET, ORDER

durante algún avance de clasificación puede utilizar Marco de agregación.

5. En SQL es la inyección de SQL en MongoDB es la inyección de array

Así que cuando escribir un cierto uso de datos (cadena) o cheque is_array

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

6. HDD DOS

Tamaño _POST por defecto es de 8 MB en PHP, EN Mongo hay límite por documento de 16 MB. Así que imaginen Algunos usuarios parodia eq USER_AGENT CADENA en que la escritura analítica y luego enviar 16MB por solo inserto.

7. Hubo algunos problemas en el pasado con MongoDB, pero en este momento 3.0 es bastante impresionante y estable.

Aquí hay una gran principiantes / Introducción a MongoDB podcast .NET Rocks -

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

Mike Dirolf se intereviewed ... que trabaja en el proyecto MongoDB. Ah, 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 - Se ha presentado en EuroPython, lazo extraño Conf, RubyEnRails, Rupy y RubyConf, así como en los grupos Meetup de la ciudad de Nueva York, Londres, Washington DC y San Francisco.

definitivamente debería echar un vistazo a junemakers Mongo mapeador: http://github.com/jnunemaker/mongomapper Pero también te recomiendo que jugar un poco con el conductor Rubí Mongo pura para ver cómo mongo-asignador trabaja bajo el capó. No es muy difícil poner algunos datos en una base de datos Mongo usando Ruby.

supongo que ya ha encontrado el Mongo Tutorial de Ruby. En caso de que no, aquí está el enlace: http: //www.mongodb .org / pantalla / docs / Ruby + Tutorial

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top