2010-02-24 26 views
99

He visto que NoSQL apareció un poco en SO y tengo una comprensión sólida de por qué lo usaría (desde aquí, Wikipedia, etc.). Esto podría deberse a la falta de una definición concreta y uniforme de lo que es (más un paradigma que una implementación concreta), pero estoy luchando para entender cómo diseñar un sistema que lo use o cómo Lo implementaría en mi sistema. Estoy realmente atrapado en una mentalidad relacional-db pensando en cosas en términos de tablas y combinaciones ...NoSql Crash Course/Tutorial

En cualquier caso, ¿alguien sabe de un curso intensivo/tutorial sobre un sistema que lo usaría (tipo de un "mundo de saludo" para un sistema basado en NoSQL) o un tutorial que toma una aplicación "Hello World" existente basada en SQL y la convierte en NoSQL (no necesariamente en código, sino solo en una explicación de alto nivel).

+0

Me gustó mucho este [video] (http://web.archive.org/web/20130106031559/http://www.10gen.com/presentations/webinar-managing-social-content-mongodb). Es un seminario por 10Gen. Explica cómo publicar contenido básico y agregar interacciones sociales (etiquetas, comentarios, agregación de datos) usando MongoDB. – Onema

Respuesta

46

Here is a decent slide show presentando MongoDB. Creo que algunas de las grandes diferencias es que la mayoría de los sistemas se basan en Active Record o en una abstracción de base de datos similar.

También encontré una maravillosa free orlys book on Couch DB here, que es bastante impresionante.

2

Eche un vistazo a this video de DNR TV, haciendo algunas manos con MongoDB. Podría ser bueno para una primera presentación.

52

En su forma más básica, NoSQL no es más que una manera de almacenar objetos utilizando algún tipo de sistema de vinculación de clave/valor. Usas esto todo el tiempo, supongo. Por ejemplo. en javascript puede crear un objeto llamado foo y luego hacer foo['myobj'] = myobj; para almacenar cosas en el objeto.

Todos los servidores de NoSQL realmente lo que hace es darle una forma de agregar/eliminar/consultar matrices masivas y aún permitir la persistencia y tolerancia a fallas. Puede crear un NoSQL en el servidor de memoria en aproximadamente 100 líneas de código.

Así que vamos a hacerlo de esta manera ... en CouchDB utiliza map/reduce ... así que vamos a crear una función de mapa de hacer a la misma como un poco de código SQL:

SELECT * FROM users WHERE age > 10 

En CouchDB se proporcionar al servidor con una función de JavaScript que se ejecute en contra de todos los elementos de la base de datos ...

function (doc) 
{ 
    if (doc.objType == "users") { 
     if (doc.age > 10) { 
      emit(doc._id, null) 
     } 
    } 
} 

eso es todo lo que hay realmente es para él ..... se pone de manera más compleja desde allí en el extremo del servidor, como el servidor tiene que manejar bloqueos, y múltiples revisiones del mismo objeto, pero esto es solo un ejemplo.

+10

Parece que su ejemplo sería ineficiente en una gran base de datos. ¿Puede el servidor indexar en tipo de documento o ser inteligente acerca de las claves que usa e indexar en las claves? Como las claves pueden ser user1, user2, etc. – Jess

1

y_serial está escrito como un solo módulo Python que se lee como un tutorial de trabajo e incluye muchos consejos y referencias: http://yserial.sourceforge.net/

Esto toma la perspectiva de cómo persistir un objeto Python arbitrario (por ejemplo, una estructura de datos de diccionario) en una manera "NoSQL" (no solo SQL).

2

página web MongoDB ofrece un gran tutorial de 10 pasos en una forma de simulación de shell mongoDB en línea. ¡lleva 10 minutos completarlo y es una excelente manera de comenzar con noSQL!

http://www.mongodb.org/ (haga clic en "probarlo")

+1

solo para agregar a esto tienen una página de sql a mongo que ayuda a obtener el concepto a través del código http://docs.mongodb.org/manual/reference/sql-comparison/ –