问题描述
|
解决方法
什么时候是切换的好时机?
这实际上取决于特定的项目。但总的来说,我发现95%的Web应用程序都可以使用nosql。对于仍应保证ACID的系统,我仍将使用旧的良好sql(例如,使用'real \'钱的系统)。
我怎么知道nosql适合我?
为你,为你,相信我。 ;)
您只需要尝试一下nosql世界中的某些内容,阅读一些现有的文章,您就会看到所有的好处和问题。
您会推荐哪种nosql软件?
我个人建议您从mongodb开始,因为它真的很简单。要成为sql专家需要花费数年,而成为mongodb专家则需要一个月左右。
我建议您花一个小时阅读《小mongodb书》,并尝试从明天开始编写您的第一个测试应用程序。
这里没有人会说您需要使用此数据库。使用哪种数据库取决于项目和要求。
, 它取决于您的应用程序需求。有很多选择。
您可以使用诸如mongodb之类的面向文档的文档,诸如Redis之类的“扩展”键值或诸如neo4j之类的面向图形的文档
这篇文章非常有用http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html
, 最近在High Scalability上发表的博客文章几乎回答了有关何时使用NoSQL的问题。
我本人一直使用MySQL,直到它失败为止,然后选择合适的工具来工作,我使用的一些非关系数据库是:
Riak:发电机克隆,当您需要快速访问记录但又有太多记录要保存在一台机器上时,该副本非常有用。例如,针对Web应用程序中用户的推荐系统,您希望在几毫秒内访问数据,但您有2亿用户。
MongoDB:一个基于文档的数据库,当我需要速度但有一个写密集型应用程序(读/写比率接近1:1)时,数据是高度瞬态的,所以我不在乎持久性问题
, 最佳切换时间是在以下情况下:
开始进行新项目,您将做出第一个架构决策。将现有应用程序移植到其他数据库可能会引起很多麻烦。
碰上一堵墙...或者更好,然后再看到一个:)主要原因通常是缺乏性能或可伸缩性。
需要缺少的功能(例如:复杂的层次结构,类似图的遍历等)。
我会推荐很多,但是它们每个都有自己的亮点,它们在其中闪耀,而其他部分则缺乏功能。选择正确工具的唯一方法是熟悉其中的一些工具。
Web开发人员通常首先学习键值存储(内存缓存,redis),因为它们可以解决很多性能问题(但也会增加应用程序的复杂性...)。
有些文档(无模式)数据库(如MongoDB或CouchDB)可以在数据模型经常更改的情况下显着提高生产力。
对于图遍历,有NeoJ。
对于“大数据”,有Hadoop及其相关项目。
清单不停...