何时使用NoSql,以及选择哪种数据库?

9

我已经使用php和mySql编程一段时间了,最近决定尝试一下nosql。如果有经验的人能告诉我:

  • 什么时候适合切换,如何知道nosql适合我?
  • 你会推荐哪个nosql软件?

谢谢


7
非常主观,就我个人看法而言。 - driis
5
非常建设性,我个人认为。 - GorillaApe
4个回答

7

什么时候切换是一个好时机?

这实际上取决于具体的项目。但总的来说,我认为对于95%的Web应用程序,我可以使用nosql。对于需要保证ACID的系统(例如与“真实”货币相关的系统),我仍将使用老式的SQL。

如何知道nosql适合我?

它适合你,相信我。 ;)

您只需要尝试一些nosql世界中的东西,阅读一些现有文章,您将看到所有的好处和问题。

您会推荐哪个nosql软件?

我个人建议您从mongodb开始,因为它非常简单。要成为SQL专家需要数年时间,而要成为mongodb专家只需要一个月左右。

我建议您花一个小时阅读《The little mongodb book》,并尝试从明天开始编写您的第一个测试应用程序。

这里没有人会说你需要使用这个或那个数据库。选择使用哪个数据库取决于项目和需求。


+1 对于详细的回答。然而有三个异议:关于ACID - 一些NoSQL也支持,例如RavenDB(http://ayende.com/blog/23553/yoursquo-ll-pry-transactions-from-my-dead-cold-broken-hands)。选择NoSQL - 可以参考http://nosql-database.org。关于推荐MongoDB - 首先应该选择要使用的NoSQL类型,然后从该类型中选择一个产品。没有真正了解业务逻辑和基础架构的情况下,没有理由推荐一种数据库而不是另一种。 - synhershko
@synhershko:我也在使用RavenDB,我知道它的事务处理。而且我同意你的观点。 - Andrew Orsich

3

同一网站上还有一个表单 - http://highscalability.com/blog/2011/6/20/35-use-cases-for-choosing-your-next-nosql-database.html - Ravindra babu

2
这篇最近在High Scalability上发布的博客文章基本回答了你关于何时使用NoSQL的问题。
我个人总是首选MySQL,直到它不能满足我的需求,然后再选择适合当前任务的工具。我曾经使用过一些非关系型数据库,包括:
  • Riak:一个Dynamo克隆品,当你需要快速访问记录但又有太多记录无法放在一台机器上时很有用。例如,在Web应用程序中为用户提供推荐系统,你希望在几毫秒内访问数据,但你有2亿用户。
  • MongoDB:一个基于文档的数据库,当我需要速度但应用程序写入密集(读/写比接近1:1)且数据高度瞬态化时使用,我不关心持久性问题。

1

最佳转换时机是:

  • 开始新项目并做出第一个架构决策。将现有应用程序移植到不同的数据库可能会引起很多问题。
  • 遇到瓶颈...或者更好的是在看到瓶颈之前 :) 主要原因通常是性能或可扩展性不足。
  • 需要缺失的功能(例如:复杂的分层结构、类似图形的遍历等)。

我会推荐很多工具,但每个工具都有自己的优点和缺点。选择正确的工具的唯一方法是熟悉其中几个。

  • Web开发人员通常首先学习键值存储(memcached、redis),因为它们可以解决许多性能问题(但也会增加一些复杂性到您的应用程序中...)。
  • 有文档(无模式)数据库,如MongoDB或CouchDB,如果您的数据模型经常更改,则可以显着提高生产力。
  • 对于图形遍历,有NeoJ。
  • 对于“大数据”,有Hadoop及其相关项目。
  • 列表还可以继续下去...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接