Usos de la base de datos NoSQL en ciencia de datos

16

¿Cómo se pueden usar las bases de datos NoSQL como MongoDB para el análisis de datos? ¿Cuáles son las características en ellos que pueden hacer que el análisis de datos sea más rápido y poderoso?

jithinjustin
fuente
2
El uso principal es almacenar datos y recuperar datos. De hecho, ese es el único uso para una base de datos NOSQL, o cualquier base de datos. ¿Quieres mejorar tu pregunta?
Spacedman
Sí, la base de datos se usa principalmente para almacenar y recuperar datos. ¿Cómo se pueden usar para el análisis de datos? ¿Cuáles son las herramientas integradas en las bases de datos NOSQL como mongodb que hacen que el análisis de datos sea fácil y poderoso?
jithinjustin
1
Mejore su pregunta editándola, no agregando comentarios.
Spacedman

Respuestas:

23

Para ser sincero, la mayoría de las bases de datos NoSQL no son muy adecuadas para aplicaciones en Big Data. Para la gran mayoría de todas las aplicaciones de Big Data, el rendimiento de MongoDB en comparación con una base de datos relacional como MySQL es significativamente lo suficientemente pobre como para justificar mantenerse alejado de algo como MongoDB por completo.

Dicho esto, hay un par de propiedades realmente útiles de las bases de datos NoSQL que ciertamente funcionan a su favor cuando trabaja con grandes conjuntos de datos, aunque la posibilidad de que esos beneficios superen el rendimiento generalmente pobre de NoSQL en comparación con SQL para lectura. Las operaciones intensivas (más similares a los casos típicos de uso de Big Data) son bajas.

  • Sin esquema : si está trabajando con una gran cantidad de datos no estructurados, puede ser difícil decidir y aplicar rígidamente un esquema. Las bases de datos NoSQL en general son muy compatibles con esto y le permitirán insertar documentos sin esquema sobre la marcha, lo que ciertamente no es algo que una base de datos SQL pueda soportar.
  • JSON : si está trabajando con documentos de estilo JSON en lugar de conarchivos CSV , verá muchas ventajas al usar algo como MongoDB para una capa de base de datos. En general, el ahorro en el flujo de trabajo no supera el aumento de los tiempos de consulta.
  • Facilidad de uso : no digo que las bases de datos SQL sean siempre difíciles de usar, o que Cassandra sea ​​la cosa más fácil de configurar en el mundo, pero en general las bases de datos NoSQL son más fáciles de configurar y usar que las bases de datos SQL. MongoDB es un ejemplo particularmente fuerte de esto, conocido por ser una de las capas de base de datos más fáciles de usar (fuera de SQLite ). SQL también se ocupa de una gran cantidad de normalización y existe un gran legado de mejores prácticas de SQL que generalmente empantana el proceso de desarrollo.

Personalmente, podría sugerirle que también consulte las bases de datos de gráficos como Neo4j que muestran un rendimiento realmente bueno para ciertos tipos de consultas si está buscando elegir un back-end para sus aplicaciones de ciencia de datos.

indico
fuente
Tienes razón. Las bases de datos NOSQL se utilizan principalmente para almacenar datos no estructurados o semiestructurados como json. ¿Puede explicar algunos de los tipos de análisis de datos que podemos hacer con ellos? ¿Cuáles son las herramientas integradas en mongodb que se pueden usar para el análisis de datos?
jithinjustin
1
@jithinjustin no hay herramientas de análisis de datos integradas en mongo, o realmente ninguna base de datos. Además, jsonson datos totalmente estructurados. Técnicamente, puede hacer cualquier tipo de análisis de datos en él, el uso de una base de datos NOSQL no está relacionado. Sin embargo, hay herramientas creadas sobre Mongo, como analytica.
indico
1
No sé sobre todo eso. MongoDB puede funcionar mejor que MySQL. Tendría un mejor argumento si dijera PostgreSQL (que, por cierto, puede aceptar JSON). De cualquier manera, no consideraría algún "rendimiento" arbitrario (no sabemos cuál es el caso de uso) como una razón para no usar NoSQL. Tampoco descarte el uso de múltiples bases de datos. Recuerde, MongoDB tiene características de agregación sorprendentes que SQL no tiene.
Tom
1
En cuanto al rendimiento, descubrirá que la única tarea en la que Mongo realmente supera a mysql es la inserción ( moredevs.ro/mysql-vs-mongodb-performance-benchmark ), que es una parte relativamente pequeña del análisis de datos. Las características de agregación de SQL son MUCHO más maduras que las de Mongo. En cuanto a MYSQL versus Postgres, los números están muy sesgados y ambos tienden a ofrecer un rendimiento similar. MYSQL es más común, por eso lo mencioné en su lugar, pero los dos son bastante similares.
indico
Siempre he visto un mejor rendimiento en MongoDB cuando las cosas encajan en la memoria. Tomo puntos de referencia con una ganancia de sal porque si buscas un poco en Google, encontrarás un montón de puntos de referencia que muestran a MongoDB como más rápido. Realmente depende de tus necesidades. Dicho esto, para ayudar a responder la pregunta original, creo que hay muchos usos para NoSQL en ciencia y análisis de big data.
Tom
4

Una ventaja del enfoque NoSQL sin esquema es que no se compromete prematuramente y puede aplicar el esquema correcto en el momento de la consulta utilizando una herramienta adecuada como Apache Drill . Vea esta presentación para más detalles. MySQL no sería mi primera opción en una configuración de Big Data.

Emre
fuente
Aquí hay una pregunta relacionada con NoSQL, JSON y Drill: datascience.stackexchange.com/questions/9568/…
sheldonkreger
4

Considere, pruebe y quizás incluso use múltiples bases de datos. Aquí no se trata solo de un problema de "rendimiento". Realmente se reducirá a sus necesidades. ¿De cuántos datos estás hablando? que tipo de datos ¿Qué tan rápido lo necesitas? ¿Lees más o escribes mucho?

Aquí hay una cosa que no puede hacer en una base de datos SQL: Calcular el sentimiento. http://www.slideshare.net/shift8/mongodb-machine-learning

Por supuesto, la velocidad en ese caso puede no ser lo suficientemente rápida para sus necesidades, pero es algo que es posible. Con un cierto almacenamiento en caché de valores agregados específicos, incluso fue bastante aceptable. ¿Por qué harías esto? Conveniencia.

La comodidad realmente es algo por lo que te va a persuadir. Eso es exactamente por qué (en mi opinión) se crearon bases de datos NoSQL. El rendimiento también, por supuesto, pero estoy tratando de descontar los puntos de referencia y centrarme más en otras preocupaciones.

Las bases de datos MongoDB (y algunas otras NoSQL) tienen algunas características muy poderosas, como el mapa incorporado / reducir. Esto podría resultar en un ahorro tanto en costo como en tiempo al usar algo como Hadoop. O podría proporcionar un prototipo o MVP para lanzar un negocio más grande.

¿Qué pasa con las bases de datos de gráficos? También son "NoSQL". Mire bases de datos como OrientDB. Si quieres discutir el rendimiento ... no creo que me muestres una base de datos SQL que sea más rápida allí =) ... y las bases de datos de gráficos tienen una aplicación realmente sorprendente basada en lo que necesitas hacer.

La regla de la tecnología (e internet) no se siente muy cómoda con una cosa. Serás limitado y te prepararás para el fracaso.

Tom
fuente
1
No veo nada en ese enlace o aquí que pruebe que no se puede hacer un análisis de sentimientos en una base de datos SQL. Los ejemplos de mongoDB se benefician de Javascript en la base de datos, por lo que podría usar cualquier lenguaje incrustado en una base de datos SQL. Por ejemplo Postgres + R.
Spacedman
Me encantaría ver dónde podría ejecutar código y asignar / reducir en esas bases de datos. Con toda seriedad (especialmente Postgres). ... e incluso si pudieras, eso no hace que la respuesta sea menos válida por cierto. Uno simplemente podría querer usar NoSQL. Funciona
Tom
1
Postgres + C, Python, Perl, R, alimenta tu DB de Postgres en los últimos algoritmos de aprendizaje automático. Fácil: postgresql.org/docs/9.0/static/xplang.html
Spacedman
Agradable. Tendré que probar eso alguna vez. ¿Qué hay de MySQL?
Tom