2011-12-30 13 views
11

Utilizo bastante PHP/mySQL/CodeIgniter, escribiendo sentencias SQL para manejar/manipular datos. Siento que hago todo lo que es primitivo, y he oído cosas buenas sobre MongoDB, una base de datos sin esquemas.Necesito una introducción a la base de datos de MongoDB/NoSQL

En MySQL, los esquemas me ayudan a determinar la estructura del modelo. Normalmente, dibujo un diagrama de clases con elementos básicos como: id, título, descripción, fecha

Lo que me sorprende es que MongoDB parece increíblemente simple, es difícil comprender por dónde empezar. Por lo que escucho/leo, no tiene un esquema. ¿Cómo sé qué tipo devolverá?

¿Cómo construyo mis modelos, cómo agrego las relaciones entre las diferentes "tablas"?

¿Cuál es la forma estándar de agregar relaciones y trazar los datos? Intenté jugar con eso, pero no estaba seguro de lo que estaba haciendo de la manera correcta.

He intentado leer manuales y cosas así, pero no he podido encontrar un buen artículo que me ayude a pasar de mySQL a MongoDB.

¿Hay alguna forma pude ver comparaciones de modelos con mySQL y MongoDB? Cosas simples como CRUD.

¿Cómo empiezo? ¿Por dónde empiezo?

+1

Sólo una respuesta parcial, pero trate de pensar en su base de datos sólo como el lugar donde se almacenan las cosas entre las peticiones. Su base de datos no es * su aplicación *, su aplicación (código) es su aplicación. La base de datos solo está ahí para * persistencia *. Esto va bien con un enfoque OOP correcto y completo, donde sus clases/objetos representan sus modelos, no donde los modelos representan la base de datos. – deceze

+0

@deceze Tiene sentido, básicamente diseña los modelos según la aplicación, no la base de datos. – tpae

+1

Correcto, implementas tu lógica de negocios directamente usando clases/objetos, que encarnan un cierto estado y cuidan que este estado solo cambie de acuerdo con lógica de negocio (propiedades 'privadas', setters y todo eso). La base de datos está allí para persistir ese estado una vez que el script ha finalizado. – deceze

Respuesta

5

Puedes comenzar here.

¿Cómo construyo mis modelos, cómo agrego las relaciones entre las diferentes "tablas"?

Answer:

Un enfoque no-relacional es el mejor camino para soluciones de bases de datos, que escalar horizontalmente a> muchas máquinas.

Answer:

MongoDB almacena los datos de los documentos JSON (que serializar a BSON). JSON nos proporciona un rico modelo de datos que se adapta perfectamente a los tipos de lenguaje de programación nativos y, dado que no tiene esquemas, hace que sea mucho más fácil evolucionar su modelo de datos que con un sistema con esquemas aplicados, como un RDBMS.

Check también What is NoSQL, how does it work, and what benefits does it provide?, I need an advice about NoSQL/MongoDb and data/models structure y Converting simple MySQL database to a NoSQL solution

Cuestiones relacionadas