现在最成熟的开源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是啥?分别有啥优缺点的主要内容,如果未能解决你的问题,请参考以下文章
知名的CRM系统都有哪些,分别有啥优缺点,可以简单介绍一下吗?最好能有一个排行榜啥的,要2016年的哦