Naresh Kumar是位软件工程师与热情的博主,对于编程与新事物拥有极大的兴趣,很是乐于与其余开发者和程序员分享技术上的研究成果。近日,Naresh撰文谈到了12款知名的免费、开源NoSQL数据库,并对这些数据库的特色进行了分析。html
如今,NoSQL数据库变得愈来愈流行,我在这里总结出了一些很是棒的、免费且开源的NoSQL数据库。在这些数据库中,MongoDB独占鳌头,拥有至关大的使用量。这些免费且开源的NoSQL数据库具备很好的可伸缩性与灵活性,很是适合于大数据存储与处理。相较于传统的关系型数据库,这些NoSQL数据库在性能上具备很大的优点。然而,这些NoSQL数据库未必最适合你。大多数常见的应用仍然可使用传统的关系型数据库进行开发。NoSQL数据库依然不太适合于那些任务关键型的事务要求。我对这些数据库进行了一些简单介绍,下面就来看看。程序员
MongoDB是个面向文档的数据库,使用JSON风格的数据格式。它很是适合于网站的数据存储、内容管理与缓存应用,而且经过配置能够实现复制与高可用性功能。sql
MongoDB具备很强的可伸缩性,性能表现优异。它使用C++编写,基于文档存储。此外,MongoDB还支持全文检索、跨WAN与LAN的高可用性、易于实现的复制、水平扩展、基于文档的丰富查询、在数据处理与聚合等方面具备很强的灵活性。数据库
这是个Apache软件基金会的项目,Cassandra是个分布式数据库,支持分散的数据存储,能够实现容错以及无单点故障等。换句话说,“Cassandra很是适合于那些没法忍受数据丢失的应用”。编程
这也是Apache软件基金会的一个项目,CouchDB是另外一个面向文档的数据库,以JSON格式存储数据。它兼容于ACID,像MongoDB同样,CouchDB也能够用于存储网站的数据与内容,以及提供缓存等。你能够经过JavaScript在CouchDB上运行MapReduce查询。此外,CouchDB还提供了一个很是方便的基于Web的管理控制台。它很是适合于Web应用。后端
Hypertable模仿的是Google的BigTable数据库系统。Hypertable的建立者将“成为高可用、PB规模的数据库开源标准”做为Hypertable的目标。换言之,Hypertable的设计目标是跨越多个廉价的服务器可靠地存储大量数据。缓存
这是个开源、高级的键值存储。因为在键中使用了hash、set、string、sorted set及list,所以Redis也称做数据结构服务器。这个系统能够帮助你执行原子操做,好比说增长hash中的值、集合的交集运算、字符串拼接、差集与并集等。Redis经过内存中的数据集实现了高性能。此外,该数据库还兼容于大多数编程语言。安全
Riak是最为强大的分布式数据库之一,它提供了轻松且可预测的伸缩能力,向用户提供了快速测试、原型与应用部署能力,从而简化应用的开发过程。服务器
Neo4j是一款NoSQL图型数据库,具备很是高的性能。它拥有一个健壮且成熟的系统的全部特性,向程序员提供了灵活且面向对象的网络结构,可让开发者充分享受到拥有完整事务特性的数据库的全部好处。相较于RDBMS,Neo4j还对某些应用提供了很多性能改进。网络
HBase是一款可伸缩、分布式的大数据存储。它能够用在数据的实时与随机访问的场景下。HBase拥有模块化与线性的可伸缩性,而且可以保证读写的严格一致性。HBase提供了一个Java API,能够实现轻松的客户端访问;提供了可配置且自动化的表分区功能;还有Bloom过滤器以及block缓存等特性。
虽然Couchbase是CouchDB的派生,不过它已经成为了一款功能完善的数据库产品。它向文档数据库转移的趋势会让MongoDB感到压力。每一个节点上它都是多线程的,这是个很是主要的可伸缩性优点,特别是当托管在自定义或是Bare-Metal硬件上时更是如此。借助于一些很是棒的集成特性,诸如与Hadoop的集成,Couchbase对于数据存储来讲是个很是不错的选择。
这是个分布式的键值存储系统,咱们不该该将其与缓存解决方案搞混;相反,它是个持久化存储引擎,用于数据存储并以很是快速且可靠的方式检索数据。它遵循memcache协议。其存储后端用于Berkeley DB中,支持诸如复制与事务等特性。
RAVENDB是第二代开源数据库,它面向文档存储而且无模式,这样就能够轻松将对象存储到其中了。它提供了很是灵活且快速的查询,经过对复制、多租与分片提供开箱即用的支持使得咱们能够很是轻松地实现伸缩功能。它对ACID事务提供了完整的支持,同时又能保证数据的安全性。除了高性能以外,它还经过bundle提供了轻松的可扩展性。
这是个自动复制的分布式存储系统。它提供了自动化的数据分区功能,透明的服务器失败处理、可插拔的序列化功能、独立的节点、数据版本化以及跨越各类数据中心的数据分发功能。
各位读者,不知在你的项目中曾经、如今或是将来使用了哪些NoSQL数据库。现今的NoSQL世界纷繁复杂,NoSQL数据库也多如牛毛,并且有一些数据库提供了类似的特性,本文所列出的只是其中比较有表明性的12款NoSQL产品。你是否使用过他们呢?是否使用了本文没有介绍的产品呢?他们有哪些特性打动了你,让你决定使用他们呢?很是欢迎将你的经历与见解与咱们一块儿分享。