热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

反NoSQL的呼声(转)

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

CAP的崩溃

反NoSQL的呼声(转)

 

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 。可用性上有问题但是在各节点数据保存一直。包括:

  • BigTable (column-oriented/tabular)
  • Hypertable (column-oriented/tabular)
  • HBase (column-oriented/tabular)
  • MongoDB (document-oriented)
  • Terrastore (document-oriented)
  • Redis (key-value)
  • Scalaris (key-value)
  • MemcacheDB (key-value)
  • Berkeley DB (key-value)

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

  • Dynamo (key-value)
  • Voldemort (key-value)
  • Tokyo Cabinet (key-value)
  • KAI (key-value)
  • Cassandra (column-oriented/tabular)
  • CouchDB (document-oriented)
  • SimpleDB (document-oriented)
  • Riak (document-oriented)

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

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

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

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

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

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

所以CAP应该称为SAP

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

RDBMS不具备可扩展性的谎言

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

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

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

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

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

引用:

Getting_Real_about_NoSQL_and_the_SQL_Isnt_Scalable_Lie
Brewer’s CAP Conjecture is False
visual-guide-to-nosql-systems

 

 

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

 

 

 

 

 


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 在IDEA中运行CAS服务器的配置方法
    本文介绍了在IDEA中运行CAS服务器的配置方法,包括下载CAS模板Overlay Template、解压并添加项目、配置tomcat、运行CAS服务器等步骤。通过本文的指导,读者可以轻松在IDEA中进行CAS服务器的运行和配置。 ... [详细]
  • 本文介绍了如何使用MATLAB调用摄像头进行人脸检测和识别。首先需要安装扩展工具,并下载安装OS Generic Video Interface。然后使用MATLAB的机器视觉工具箱中的VJ算法进行人脸检测,可以直接调用CascadeObjectDetector函数进行检测。同时还介绍了如何调用摄像头进行人脸识别,并对每一帧图像进行识别。最后,给出了一些相关的参考资料和实例。 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • step1.为mongodb添加admin管理员root@12.154.29.163:~#mongoMongoDBshellversionv3.4.2connectingto:mo ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • SeMITechnologies正在使用矢量搜索引擎Weaviate构建的内容。SeMI的首席执行官兼联合创始人BobvanLuijt说,它是一种独特的AI优先数据库,使用机器学习 ... [详细]
  • Abp+MongoDb改造默认的审计日志存储位置
    一、背景在实际项目的开发当中,使用AbpZero自带的审计日志功能写入效率比较低。其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起。所以我们可以重新实现A ... [详细]
  • Java开发实战讲解!字节跳动三场技术面+HR面
    二、回顾整理阿里面试题基本就这样了,还有一些零星的问题想不起来了,答案也整理出来了。自我介绍JVM如何加载一个类的过程,双亲委派模型中有 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb副本集+分片集群搭建相关的知识,希望对你有一定的参考价值。环境需求: ... [详细]
author-avatar
让安丷全筑起心灵的屏障
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有