NoSQL ha estado recibiendo mucha atención en nuestra industria recientemente. Estoy realmente interesado en los pensamientos de las personas sobre los mejores casos de uso para su uso sobre el almacenamiento de bases de datos relacionales. Lo que debería inducir a un desarrollador a pensar que determinados conjuntos de datos son más adecuados para una solución NoSQL. Estoy particularmente interesado en MongoDB y CouchDB ya que parecen estar obteniendo la mayor cobertura con respecto al desarrollo de PHP y ese es mi objetivo.Casos de uso para NoSQL
Respuesta
Algunos grandes casos de uso - para MongoDB de todos modos - se mencionan en el sitio MongoDB. Los ejemplos que se dan son análisis en tiempo real, registro y búsqueda de texto completo. Estos artículos están bien vale la pena leer http://www.mongodb.com/use-cases
También hay un gran reportaje en el que la base de datos NoSQL es el más adecuado para el tipo de proyecto: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
buena valoración crítica sobre el uso de NoSQL en TekPub
Lo que me gusta NoSQL no tiene nada que ver con el rendimiento y mucho que ver con la facilidad de uso. Las tiendas de documentos son simplemente más fáciles de usar cuando sus unidades de datos atómicos son similares a documentos, porque es trivial serializar hacia y desde los objetos. Es simplemente más divertido, y ese es un factor importante para proyectos personales o secundarios.
No diría exactamente que es * trivial *, pero este es un buen punto sobre bases de datos orientadas a documentos. Lo contrario es verdad para algunos otros productos NoSQL: los DKVS tienden a ser * más difíciles * de mapear que los DB relacionales/SQL. – Aaronaught
me gustaría sugerir este artículo por Rick Cattell sobre almacenes de datos NoSQL varios (aka), sus diferencias y algunos de sus casos de uso: http://www.cattell.net/datastores/index.html
Sólo prometer que nunca va a tratar de asignar una de datos relacional modelar a una base de datos NoSQL como MongoDB o CouchDB ... Este es el error más común que cometen los desarrolladores cuando evalúan la tecnología emergente.
Ese enfoque es similar a tomar un automóvil y tratar de usarlo para tirar de su carro por el camino como un caballo.
Es una reacción natural debido a la experiencia de todos, por supuesto, pero el valor real en el uso de una base de datos de documentos es que puede simplificar su modelo de datos y minimizar su sufrimiento como desarrollador. Su base de código se reducirá, sus errores serán menos y más fáciles de encontrar, el rendimiento será asombroso y la escala será mucho más simple.
Como fundador de Joomla soy parcial :-) pero viniendo del espacio de CMS, algo así como MongoDB es una bala de plata, ya que los mapas de contenido son muy naturales para documentar sistemas.
Otro gran caso para MongoDB es el análisis en tiempo real, ya que MongoDB tiene un rendimiento muy fuerte y una escala particularmente en cuanto a la concurrencia. Hay casos de estudio en el sitio web MongoDB.org que demuestran esos atributos.
Estoy de acuerdo con la noción de que cada base de datos tiene sus propios objetivos y casos de uso; tome el propósito de cada base de datos para la evaluación en consecuencia.
verdaderamente bien dicho spacemonkey, estoy en la misma posición que seengee, claramente tenemos que pensar de una manera nueva y deberíamos preguntarnos cómo estructurar mis datos de aplicaciones en una estructura de documento, alejándome de la forma de pensar RDBMS cuando haz este análisis –
Para algunos casos de uso que necesita, especialmente para consultas analíticas que puede ejecutar consultas SQL en MongoDB con this wrapper desde Postgres.
Como ahora hay muchas más bases de datos NoSQL en el mercado que nunca, sugiero echar un vistazo al Magic Quadrant de Gartner si está buscando una base de datos que también sea ideal para aplicaciones empresariales basadas en soporte, capacidad de expansión , administración y costo.
http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb
me gustaría sugerir Couchbase a cualquier persona que no está probado todavía, pero no se basa en la versión que se muestra en el informe (2.5.1), ya que es casi 2 revisiones detrás de donde CB servidor es hoy, cerca del lanzamiento de 4.0 en 2H15.
http://www.couchbase.com/coming-in-couchbase-server-4-0
La otra parte sobre Couchbase como un vendedor/producto es que es un tipo multi-uso de DB. Puede actuar como una tienda de K/V pura, una base de datos orientada a documentos con escalado multidimensional, Memcached, caché a un lado con persistencia y admite SQL compatible con ANSI 92 con uniones automáticas, replicación en clústeres de DR con solo presionar un botón y incluso tiene un componente móvil incorporado en el ecosistema.
Si nada más, vale la pena echarle un vistazo a las últimas referencias:
http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html
Recomiendo esta charla por Martin Fowler:
https://www.youtube.com/watch?v=qI_g07C_Q5I
RESUMEN: Martin da una introducción rápida a las bases de datos NoSQL: de dónde provienen, la naturaleza de los modelos de datos que utilizan y la diferente forma en que debe pensar sobre la coherencia. A partir de esto, describe qué tipo de circunstancias debería considerar usarlas, por qué no convertirán obsoletas las bases de datos relacionales y la consecuencia importante de la persistencia políglota.
Dibuja una buena imagen de lo que es NoSQL, las diferentes categorías y las cosas que todos deben entender cuando provienen de las bases de datos relacionales del mundo. Saludos.
Entendido, lo tendremos en cuenta para el futuro. – user3631881
Primero tiene que comprender CAP (Coherencia, Disponibilidad y Particionado, donde tiene que elegir dos de tres) la teoría y nuestro caso de uso Comercial. MongoDB cumple con la consistencia y el particionamiento & Couch DB satisface la disponibilidad & Particionado.
Los videos de Edureka en youtube con respecto a NoSQL son algunos de los mejores video tutoriales.
https://www.youtube.com/watch?v=gJFG04Sy6NY
https://www.youtube.com/watch?v=KSq6tMMXZ8s
https://www.youtube.com/watch?v=3z1KFA2qcSo
buenas presentaciones están disponibles en Slideshare.neta
http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 (Esta presentación es compatible con vídeo tutorial en youtube)
He estado usando NoSQL DBs desde hace un tiempo, y este es mi contribuyen al tema:
Un gran caso de uso para una base de datos NoSQL es una aplicación para estadísticas y/o informes generación, especialmente cuando los datos provienen de una fuente externa.
En una situación como la que una base de datos NoSQL puede ser un gran elección
Consideremos, por ejemplo, MongoDB:
Una vez que tenga sus datos en JSON, (que podría provenir de una tercera parte de la API, o exportarse desde un sql-aplicación) en MongoDB es bastante strightforward para importar y actualizar el JSON datos en la base de datos; por ejemplo, utilizando la línea de comandos mongoimport
utilidad
En este punto es muy sencillo de construir consultas dinámicas con el filtrado y la agrupación, así que encaja con este tipo de aplicación.
Por ejemplo, utilizando el Aggregation Framework:
$pipeline = [];
//filter by date
$pipeline[] = [ '$match' => [ 'created_at' => [ '$gte' => $starDate, '$lte' => $endDate ] ] ];
//if we want to filter by a specific field, we add the filter to the pipeline array
if($filters->isFilterByField())
$pipeline[] = [ '$match' => [ 'field' => $fieldValue ] ];
//group the results by date and get the count
$pipeline[] = [ '$group' => [ '_id' => '$created_at', 'num_elements' => [ '$sum' => 1 ] ] ];
return $collection->aggretate($pipeline);
me gustaría señalar la facilidad con la que podemos añadir dinámicamente /quitar filtros usando estructuras de datos php y evitar la tediosa concatenación de cadena para construir nuestras consultas. Con este enfoque añadir/quitar filtros dinamycally es tan fácil como añadir/quitar elementos de una matriz
Otra gran ventaja proviene del hecho de que una solución de este tipo es probable que sea más rápido de utilizar un base de datos relacional , donde tenemos que hacer que se une con diferentes tablas para obtener todos los datos que necesitamos
Además, este caso de uso es óptimo debido a evita todos los principales límites de una base de datos NoSQL:
La falta de transacciones: La aplicación no realiza la escritura pero sólo lee, por lo que no es necesario en absoluto transacciones
La falta de unión entre tablas: No necesitamos une, como podemos usar redundancy para almacenar nuestros datos desnormalizados en las colecciones. Como solo leemos datos, no necesitamos preocuparnos por sincronizar los datos desnormalizados entre las actualizaciones.
De esta manera podemos centrarnos en almacenar los datos con redundancia de manera que así se adapta a nuestras preguntas, que será el foco en colecciones individuales.
Sólo estoy escribiendo esto porque si lo hubiera leído algo así hace unos momentos, me habría sido ahorrado algo de tiempo para hacer investigaciones
Esperamos que sea útil a alguien
- 1. Escenarios de casos de uso de NoSQL o CUÁNDO usar NoSQL
- 2. Casos de uso para IdentityHashMap
- 3. Casos de uso para JCA
- 4. casos de uso DropBoxManager?
- 5. Los casos de uso para @WebInitParam
- 6. ¿Qué casos de uso para OWL?
- 7. Casos de uso para Clojure en proyectos
- 8. Casos de uso para implementar anotaciones
- 9. Casos de uso para flujos en Scala
- 10. Casos de uso para utilidades concurrentes Java
- 11. Diagramas de casos de uso
- 12. Casos de uso para la API de Predicción de Google
- 13. Casos de uso para los diferentes haml helpers de Padrino
- 14. ¿Cuáles son los casos de uso para __new__ de Python?
- 15. ¿Qué tipo de casos de uso aseados existen para/cuándo?
- 16. casos de uso del mundo real para indexadores de C#?
- 17. Casos de uso común de erlang
- 18. Buenos casos de uso de comentarios
- 19. Casos de uso para el método dict 'setdefault'
- 20. Casos de uso comunes para pickle en Python
- 21. ¿Qué son casos de uso para una corrutina?
- 22. Casos de uso no numéricos para programación funcional?
- 23. Casos de uso para transiciones CSS y animaciones CSS
- 24. Historias de usuarios vs casos de uso
- 25. Casos de uso de PipedInputStream y PipedOutputStream
- 26. Opción NoSql para MMORPGs
- 27. nosql db para python
- 28. ¿Cuándo NO utilizar NoSQL?
- 29. Qué almacenamiento NoSQL para elegir
- 30. Casos de uso del motor de flujo de trabajo
Cassandra y MongoDB son productos completamente diferentes - categorías * completamente diferentes. Esta pregunta sería más fácil de responder si preguntara por casos de uso para un tipo de base de datos * específico * (OODB, DODB, DKVS, etc.) "NoSQL" es simplemente un término general para "cualquier cosa que no sea SQL" - podría ser algo como BerkleyDB o un montón de archivos planos en una red compartida. – Aaronaught
@Aaronaught aprecio las diferencias, supongo que soy culpable de utilizar un término paraguas con nosql – robjmills