现在最成熟的开源nosql是啥?分别有啥优缺点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了现在最成熟的开源nosql是啥?分别有啥优缺点相关的知识,希望对你有一定的参考价值。

Apache三剑客:HBase, Cassandra, CouchDB。HBase的前景最为看好,因为它的开发者众多并且都是顶尖高手。Cassandra目前有很多否定的声音。CouchDB的小而精悍,赞誉很多,将要正式发布的CouchBase融合了MemBase和CouchDB,很令人期待。

  HBase和Cassandra都是效仿Google的BigTable的基于列的数据库,它们都是用Java写的。另外一类似的数据库是HyperTable,百度用在一些后台分析,因为它是C++写的,速度比较快。不过HyperTable有点边缘,不太流行。这些基于列的开源数据库目前都比Goolge的BigTable差之少一个数量级

  CouchDB是一个文档数据库。其最大的竞争者是MongoDB。MongoDB和HBase都采用主从服务器设计。CouchDB的服务器分布设计和Cassandra类似,Peer to Peer类型的。主从服务器设计一般能更好的strong consistent,属于CAP理论中的CP类型。 CouchDB和Cassandra一般认为都是eventual consistent,属于CAP理论中的AP类型。但其实MongoDB和Cassandra都可以设置成strong consistent或者eventual consistent。

  以上所提到的数据库都支持MapReduce。好像出了HyperTable都支持非主键索引。HBase和strong consistent配置的MongoDB都支持最基本的锁定(HBase单行锁定,MongoDB单文档锁定),因此可以实现transaction,但是实现有点复杂和低效。单就transaction这一点,目前开源NoSQL数据库没有做的比较好的。

  MongoDB的最大卖点是不需构建非主键索引也能执行很多查询。但是MongoDB的服务器分布设计实在不能让人恭维,可以说是NoSQL数据库中最Ugly的实现。

  K-V数据库比较多,而且上面提到的基于列的数据库和文档数据库其实也都是K-V数据库。比较流行的纯种K-V数据库有:
  Memcached: 非常流行,不支持持久化

  VMWare's Redis: 很流行,新浪和知乎都在用,CP类型。
  MemBase: 由很多Memcached的开发者开发,使用sqlite作底层存储。在社交游戏中用的比较多, zynga在用,CP类型。
  Riak, 分布式实现和CouchDB/Cassandra比较像,AP类型。支持MapReduce。
  Linkin's Voldemort, 在K-V中少见的eventual consistent ,AP类型。
  TT, TC

  纯基于二维座标索引的是Neo4j。但是现在MongoDB和CouchDB都集成这一特性。

  目前CouchDB的开发者成立的公司CouchOne收购了MemBase,将其底层sqlite换成CouchDB推出了CouchBase,从而引入MapReduce以支持非主键索引。CouchBase暂时还没有正式发布官方正式版,不过快了。虽然CouchDB是eventual consistent的,但是CouchBase的开发者宣称CouchBase保持了MemBase的strong consistent特性,具体实现有待以后研究。

  如果从成熟的角度来看,比较成熟并且十分流行的的有CouchDB,Memcached,Redis。
参考技术A 目前成熟的开源nosql产品基本没有,但不少产品潜力很大,闭源的倒是有一些比较成熟的.要使用一款nosql产品,一定要深入研究它的源码.可以研究下mongodb,redis,优缺点需要自己靠自己实践得出结论.今天的缺点可能明天就不是缺点了

SWT是啥?与swing/awt相比有啥优缺点

SWT是什么?与swing/awt相比有什么优缺点,发展前景如何?

       swt(Standard Widget Toolkit)即标准小窗口工具箱,是一个GUI开源框架,著名的IDE eclipse就是用这门技术开发的。是IBM公司推出的一种在Eclipse中使用的集成开发环境,SWT提供可移植的API,并与底层本机OS GUI平台紧密集成,它是一个与本地窗口系统集成在一起的小部件集和图形库。SWT由JNI(Java Native Interface,Java 本机接口)调用操作系统的内部API,因此运行速度快,能够获得与操作系统的内部应用程序相同的外观。
       JFace是一个用户界面工具箱,也是一个易用、功能强大的图形包,它简化了常见的图
形用户界面的编程任务。SWT和JFace都是Eclipse 平台上的主要组件。JFace是在SWT的
基础上创建的,但JFace并不能完全覆盖SWT的功能,JFace和SWT的关系如图所示。

                           

由于JFace的功能更强大,因此做图形界面开发时一般优先选用JFace。

       SWT/JFACE创建的界面是依赖于操作系统的,而awt/swing的界面就是要通过程序去控制显示的样式,正式java的一次编译,多处运行的特点,它的界面也是能做到的,遮掩就显得系统界面于系统主题样式不融合,从而产生视觉上的不好的感觉。

    对于swt/jface也成为了java扭转桌面程序的一个利器,通过这个框架就能开发出融合与本地系统界面元素的桌面程序来。在国内的市场也大有前景……

参考技术A SWT是Eclipse使用的GUI工具包,有本机组件的使用本机组件,没有的模仿,外观和平台上的程序基本一致。分发是需要自带swt.jar。 参考技术B 相比,swing和awt,都太弱了!

以上是关于现在最成熟的开源nosql是啥?分别有啥优缺点的主要内容,如果未能解决你的问题,请参考以下文章

SWT是啥?与swing/awt相比有啥优缺点

知名的CRM系统都有哪些,分别有啥优缺点,可以简单介绍一下吗?最好能有一个排行榜啥的,要2016年的哦

Redis 和 Memcached 各有啥优缺点,主要的应用场景是啥样的

当今流行的PHP框架中各自都有啥特点,优缺点都在哪?

VB.Net和C#.Net有啥差异?优缺点是啥?

Android中使用事件总线的优缺点分别是啥?