Redis
与CouchDB和MongoDB同样,Redis用于存储文档和由键值对组织的文件。与其余的NoSQL数据库不一样的是,其存储的不只仅是字符串或是数字,其中还包括分类和未分类的字符串集合做为与键关联的值。这一特色使其能够为用户提供更为复杂的集合操做。用户再也不须要下载数据计算交集,由于Redis可以在服务器上作这一工做。
Redis催生了一些没有过多编码的简单结构。Luke Melia经过建立一个全新集合追踪其网站上的访问者。最后五个集合的并集可肯定那些当时在线的访问者。这一带有好友列表的并集的交集能够生成在线好友列表。这类集操做拥有许多应用。Redis集群为咱们揭示了其强大的功能。
Redis将数据存储在内存中,仅记录下每次变化的列表。因为其具备功能强大,可写入硬盘中写入的缓存,许多人甚至并不将Redis称之为数据库。因为Redis只须要在数据读入内存以前进行等待,所以速度要比传统数据库快不少,可是不适时机的断电致使其存在潜在的应用风险。
Riak
Riak是设计最为精巧的数据存储,其拥有其余产品的绝大多数功能,而且对副本有着更多的控制。尽管基本结构存储着多对键值,可是恢复它们和确保它们的一致性的选项不少。好比写入操做包括了要求Riak确认数据什么时候被成功传输到集群其余机器上的参数。若是你不但愿仅信任一台机器,在发送确认信息前,你能够要求其等待,直至两台、三台或是54台机器写入了数据。这也是该团队可以打出“最终一致性不是数据遗失的借口”这一口号的缘由。
数据自身并不只仅写在硬盘中。这只是其中的一个选项,可是并非主要的。Riak使用的是插件式存储引擎(默认为Bitcask)。该引擎用它们本身的内部格式将数据写入硬盘中。此外,它还有多种选项,包括MySQL使用的InnoDB版本。Riak的集群能力能够确保全部一切都万无一失。
在抓取数据时,Riak会消除任何可能出现的错误。若是在两个节点的目标版本不一样,那么Riak会选择最新升级版本,或是将两个目标版本都反馈回来,交由你的客户端代码作决定。对于发现数据中存在的潜在错误,这是一个很是有用的选项。
Neo4J
在咱们所提到的几个应用之中,Neo4J是最具特点一个。它能够用于存储图而不是数据。它对图数据是以节点和边(关系)模式进行存储。社交网络应用是它的强项。Neo4J很是的新,开发人员仍然在寻找更好的算法。在新版本中,开发人员开始尝试新的缓存策略:因为Neo4J可以缓存节点信息,所以搜索算法运行速度很快。开发人员还为其增长了相似XSL模式匹配的新查询语言。
Neo4J受到了Neo Technology公司的支持。该公司推出的商业用版本数据库拥有备份、故障恢复和复杂监视功能。
FlockDB
有些人抱怨代码过于复杂,他们认为Neo4J过于复杂,超出了他们的需求。那么他们不妨尝试一下FlockDB。FlockDB是一个实时的、分布式的数据库,是Twitter网站基础设施的核心组件。Twitter在一年多之前推出了基于Apache许可证的开源项目FlockDB。若是你想创建起本身的Twitter,那么你须要下载Gizzard工具,其做用是分割跨多个Flock的数据。因为FlockDB存储两个节点之间的关联,咱们中的许多人将FlockDB称为“图数据库”。不过,也有人认为这一称呼仅适用于像Neo4J这类复杂的工具。(范范编译)
如何选择NoSQL数据库? 关于如何选择NoSQL数据库这一问题并很差回答。许多IT部门会随便选一个,有时候他们选择的数据库并不能知足他们的需求。因为优秀的开发人员但愿可以平衡项目的优点、商业支持的可得到性以及文档质量,所以选择一个最佳数据库是十分困难的。 这些数据库都存储了大堆的键和值,可是真正的问题是如何在服务器中合理分配负载,如何将变动传递给它们。另外一个问题是托管。云服务可以替你完成全部的维护,这一点很是具备吸引力。与SQL数据库相比,NoSQL数据库的数据交换更为困难。目前全球尚未一个标准的查询语言,也没有一个像JDBC同样的大型虚拟层。尽管如此,NoSQL数据库已经对咱们具有了足够的吸引力。