NoSQL你真的需要吗?

NoSQL你真的需要吗?

NoSQL你真的需要吗?请看下文,也许你会更了解你是否需要NoSQL:

CAP的崩溃

 

CAP猜想可是NoSQL的基石。上图非常有意思,他从CAP,和数据库种类两个方向对NoSQL进行了分类。

Consistent, Available (CA) Systems 。在分布式方面有些问题,通常是通过复制来解决的。包括

  • Traditional RDBMSs like Postgres, MySQL, etc (relational)
  • Vertica (column-oriented)
  • Aster Data (relational)
  • Greenplum (relational)

Consistent, Partition-Tolerant (CP) Systems 。可用性上有问题但是在各节点数据保存一直。包括:

Available, Partition-Tolerant (AP) Systems 能够使用“最终一致性”保证一直。包括

射人先射马,擒贼先擒王。虽然CAP只是个经验性总结,但是反NoSQL的簇拥们免不了要对CAP先下毒手。

CAP的证明。大体逻辑是如果要分布式,那么更新数据的时候,要么加锁(或其他技术)保证一致,要么不加锁保证可用;如果两个都想保证,就不能分布式了。可以看得出,这个证明很粗略,没有什么数学公式啥的。自然会被人钻牛角尖。

有人说,为什么一定要加锁才能保证一致?因为数据总是以串行的进入的,所以是一致的。如果保持数据不串行进入而且同时保证一致性呢?

数据的更新不是新数据替换掉旧数 据,就算是顺序发生错误,也是一致的。在实现上可以说是数据库有一个Agent可以以一种积极的态度来防止出现非一致更新。这种系统有如下特点:

  • 支持事务,每个事物都是原子操作
  • 在事务提交阶段可以发现不一致现象,并加以制止
  • 事务提交算法支持分布式

我觉得也可以是一种新型的数据结构实现。

所以CAP应该称为SAP

上面这段文字是从理论层面的反驳,尽管看起来头头是道。。。。说不定是个好想法,可以试一试。比如将数据库日志化,或者根据数据修改操作的唯一ID,来识别先后。再仔细想想,说不定挺有意思的。

RDBMS不具备可扩展性的谎言

刚刚的言论是对NoSQL的攻击,这里则是自保了。

可扩展性是什么?可扩展性是不是要扩展到九重天上太上老君的兜率宫?适合的才是最好的,NoSQL的适用情况并不是太多。

你不需要为了NoSQL花费100万美元。一个中级的Dell服务器就可以满足这个世界上绝大部分的应用了。只要你的应用不是Twitter和Facebook.你可以将这些4核的服务器连起来,形成一个24核的,128GB内存的运算能力,只有$15,000。这已经强大到应付绝大部分应用了。

那些NoSQL簇拥诽谤着RDBMS不具备的扩展性,其实是徒劳的。RDBMS的扩展性实用的,不是无限的。

感觉商业机密比计算能力值钱。风云莫测啊。

原文:http://www.yankay.com/nosql%E7%9A%84%E7%9C%9F%E7%9B%B8%E5%92%8C%E8%B0%8E%E8%A8%80/

发表评论

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