NoSQL数据库在数据科学中的用途


16

MongoDB这样的NoSQL数据库如何用于数据分析?它们有哪些功能可以使数据分析更快,更强大?


2
主要用途是存储数据和检索数据。实际上,这仅是NOSQL数据库或任何数据库的唯一用法。想要使您的问题更好?
Spacedman 2014年

是的,数据库主要用于存储和检索数据。如何将它们用于数据分析?像mongodb这样的NOSQL数据库内置了哪些工具,这些工具可以使数据分析变得轻松而强大?
jithinjustin 2014年

1
通过编辑而不是添加评论来改善您的问题。
Spacedman 2014年

Answers:


23

坦白地说,大多数NoSQL数据库都不太适合大数据应用程序。对于绝大多数的大数据应用,表现MongoDB的相比,就像一个关系型数据库的MySQL显著是够可怜的认股权证从类似的MongoDB完全避而远之。

随着中说,有一对夫妇NoSQL数据库的真正有用的特性,在您的青睐肯定的工作,当你的工作与大型数据集,但这些好处outweighing的NoSQL的普遍表现不佳的机会相比,SQL为只读密集型操作(与典型的大数据用例最相似)很低。

  • 无模式 -如果要处理大量非结构化数据,可能很难真正决定并严格应用模式。通常,NoSQL数据库对此非常支持,并且允许您即时插入无模式的文档,这当然不是SQL数据库所支持的。
  • JSON-如果您碰巧使用的是JSON样式的文档而不是 CSV文件,那么在数据库层使用MongoDB之类的东西会带来很多好处。通常,工作流节省不会超过增加的查询时间。
  • 易于使用 -我并不是说SQL数据库总是很难使用,或者说Cassandra是世界上最容易建立的东西,但是总的来说,NoSQL数据库比SQL数据库更容易建立和使用。MongoDB是一个特别有力的例子,它是最容易使用的数据库层之一(在SQLite之外)。SQL还处理大量的规范化工作,并且存在大量的SQL最佳实践,通常会拖延开发过程。

就个人而言,如果您正在为数据科学应用程序挑选一个后端,我建议您也检查一下诸如Neo4j之类的图形数据库,这些数据库对于某些类型的查询显示出非常好的性能。


你是对的。NOSQL数据库主要用于存储非结构化或半结构化数据(如json)。您能否解释一下我们可以对它们进行的某些类型的数据分析。mongodb内置的哪些工具可用于数据分析?
jithinjustin 2014年

1
@jithinjustin mongo或任何数据库都没有内置数据分析工具。同样,json是完全结构化的数据。从技术上讲,您可以使用NOSQL数据库对它进行任何类型的数据分析,而实际上并不相关。有一些工具建立 mongo 之上,例如analytica。
印度2014年

1
我一点都不知道。MongoDB的性能可能优于MySQL。如果您说PostgreSQL(顺便说一下,它可以接受JSON),那么您会有更好的说法。无论哪种方式,我都不会将某些任意的“性能”(我们不知道用例是什么)视为不使用NoSQL的原因。也不要打折使用多个数据库。请记住,MongoDB具有SQL所没有的惊人的聚合功能。
汤姆,

1
@Tom在性能上,您会发现mongo实际上胜过mysql的唯一任务是插入(moredevs.ro/mysql-vs-mongodb-performance-benchmark),这是数据分析中相对较小的部分。SQL的聚合功能比Mongo的FAR更成熟。就MYSQL与Postgres而言,这些数字在时间上有很大的偏差,而且两者往往提供相似的性能。MYSQL更常见,这就是为什么我提到它,但是两者非常相似。
印度2014年

当事情放到内存中时,我一直在MongoDB上看到更好的性能。我使用基准测试会有所收获,因为如果您稍微使用Google,就会发现很多基准显示MongoDB的速度更快。这确实取决于您的需求。也就是说,为了帮助回答最初的问题-我认为NoSQL在大数据科学和分析中有很多用途。
2014年


4

考虑,尝试甚至使用多个数据库。在这里,这不仅仅是一个“性能”问题。这真的要取决于您的要求。您正在谈论多少数据?什么样的数据?您需要多快?您是沉重阅读还是沉重写作?

这是您在SQL数据库中无法做的一件事:计算情感。http://www.slideshare.net/shift8/mongodb-machine-learning

当然,在这种情况下,速度可能还不够快,无法满足您的需求,但这是可能的。通过缓存特定的合计值,甚至可以接受。你为什么要这样做?方便。

便利确实是您要说服的。这就是(在我看来)创建NoSQL数据库的原因。当然也有性能,但是我试图打折基准并更多地关注其他问题。

MongoDB(和其他一些NoSQL)数据库具有一些非常强大的功能,例如内置的map / reduce。与使用Hadoop这样的方法相比,这可以节省成本和时间。或者它可以提供原型或MVP来启动更大的业务。

图数据库呢?他们也是“ NoSQL”。查看类似OrientDB的数据库。如果您想争论性能...我认为您不会告诉我那里有更快的SQL数据库=)...并且图数据库根据您的需要有一些非常出色的应用程序。

技术规则(和互联网)对一件事情不太满意。您将受到限制并为失败做好准备。


1
我在该链接中看不到任何内容,在这里也看不到任何内容可以证明您无法在SQL数据库中进行情感分析。mongoDB示例受益于数据库中的Javascript,因此您可以在SQL数据库中使用任何嵌入式语言。例如Postgres的+ R.
Spacedman

很想看看您可以在那些数据库中执行代码和映射/减少的地方。认真地说(尤其是Postgres)。...即使您可以,那仍然不会使答案的有效性降低。一个人可能只是想使用NoSQL。确实有效。
汤姆

1
Postgres + C,Python,Perl,R将您的Postgres DB馈入最新的机器学习算法。简易:postgresql.org/docs/9.0/static/xplang.html
Spacedman 2014年

真好 我将不得不尝试一下。MySQL怎么样?
汤姆(Tom)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.