NoSQL,RDBMS,何时,合适?

随着NoSQL种类的逐步确定,以及产品越来越丰富,对数据库产品有了更多的选择,而传统的关系型数据库依然有着巨大的市场,在DBMS2的文章《When it’s still best to use a relational DBMS》中,作者总结了目前关系型数据库的四个优势,如:

  • 数据重用
  • 范式化带来的好处(单一数据单一写,RDBMS具有强一致性)
  • 解了“应用”与“数据”之间的耦合
  • 技术更为成熟(懂RDBMS的人多,成型的产品多,还有丰富的SQL库)

并讲述了以下三种应坚持RDBMS的场景:

  • 你正在构建一个低数据量、中等复杂度的应用,且该应用会运行很久(这是RDBMS的初衷)
  • 如果你不做合理的范化,数据量会增长得非常夸张
  • 将遗留技术进行改造,并没发现其好处

作者还提出RDBMS未必是最好的的场景:当你确实想要做一个开创性的新应用时——

  • 问题大到你并不那么在乎“松散耦合”
  • 遗留技术与系统也不在考量范畴
  • 你有足够聪明的成员

作者举例

  • 我建议SaaS供应商采用面向对象数据库技术
  • 目前绝大多数Web应用很少有传统的关系型,进来默认的扩展方式是构建memcached/shared MySQL,而NoSQL的出现多了很多选择
  • 分析型应用目前也不全都是关系型数据,尽管常常用join来获取更多信息

——————————-

那么,什么时候用什么呢?

在TTNN group上发了这个讨论,回复寥寥,如果有更多回复我还是会更新上来的。

其中,Q提出的两种对NoSQL和RDBMS的应用场景很有趣:

NoSQL随着web的发展越来越火,当然还有google的推动。他还没有撼动RDBMS的结构化存储的地位,不过以后,也许会有这样的分析产品架构出来:

1、数据层:用RDBMS存储结构化数据,用NoSQL存储非结构化数据;

2、应用层:分析模型构建在专门的NoSQL库上,形成一套完整分析方案。比如在网络数据库上的社交分析应用。把一些分析模型的计算转移到数据库层的计算。

笔者对于NoSQL不甚了解,就目前来看,RDBMS依然占有统治地位无疑,NoSQL的主战场现在主要是会产生大量用户数据、高并发的Web应用。与其说NoSQL对RDBMS带来了冲击,不如说是更多的选择。感觉现在的NoSQL这并不是它的最终形态,我不知道现在或者未来会不会有一个结合结构化与非结构化特性这样的概念出现,抑或等它慢慢成熟占据某一个应用领域(如大规模Web应用)。说来现在NoSQL可能无法影响到企业级DW以及其他类型的企业应用,但其特性中的优势(弹性扩展,灵活的数据结构,海量数据处理)恐算是大势所趋,针对NoSQL进行数据分析与挖掘应该也会慢慢形成吧。

另外,其实我很想知道,倘若用现在的NoSQL来构建类数据仓库(DW-like)型应用,对现有的实践模式、数据模型会有哪些影响?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>