提到非关系型数据库,我想大多数人想到的是redis和mongoDB,实际还存在其他的,之前介绍了几种,现在将剩余的也介绍一下,不多啰嗦,往下看。
Azure Cosmos DB
Azure Cosmos DB是一种全局分布式,水平分区的多模型数据库服务。它提供了四种数据模型(键值,列族,文档和图形)和五种可调一致性级别(强,有界陈旧,会话,一致前缀和最终一致性)。
一致性水平下方强换取较弱的一致性提供更高的性能。宇宙DB住户中,约70%的人选择会话一致性,这招只有一半%的读取成本强有力的一致性。
Cosmos DB提供五种API集:SQL(方言),MongoDB兼容,Azure表兼容,图形(Gremlin)和Apache Cassandra兼容。Cosmos DB自动索引所有数据,无需您处理模式和索引管理。
Cosmos DB的设计目标包括弹性全局可扩展性,低成本操作,低读写延迟,99.99%可用性,可预测和可调数据一致性,严格的财务支持全面SLA,自动模式/索引管理和版本控制,多个本机支持数据模型和用于访问数据的流行API。
在最低级别,Cosmos DB具有基于模式无关,基于原子记录序列(ARS)的数据库引擎,该引擎在Azure Service Fabric之上实现。四种应用数据模型都被投射到基于ARS的核心模型上。
正如所料,五个数据库API集并不都映射到每个数据模型。SQL API曾经被称为DocumentDB API; 它适用于JSON文档数据库。MongoDB API也适用于文档数据库。请注意,MongoDB API和SQL API的有线协议是不同的,因此一个帐户不能用于这两个API,即使文档数据可以在两者之间迁移。Gremlin API用于属性图数据库,Azure Table API用于键值表,Cassandra API用于宽列(列族)数据库。
一段时间以来,Microsoft已将Cosmos DB用于内部应用程序。例如,Azure Portal使用Cosmos DB作为其全局事务存储,Xbox和Skype也是如此。
Cassandra和DataStax
Apache Cassandra是一个高度可用的分布式数据存储,它通过一致性来评估可用性和分区容错。Cassandra的设计将Amazon Dynamo键值存储的分区和复制与Google Bigtable的日志结构ColumnFamily数据模型相结合。当添加节点时,Cassandra会线性扩展。
Cassandra并没有完全丧失一致性; 这是对延迟的权衡。用户可以指定每次读取和写入的一致性级别,范围从仅需要一个节点,到需要群集仲裁,到需要所有节点。另一个中间选项是需要本地仲裁,这是一种在数据中心内获得一致性而无需等待远程节点更新的方法。
DataStax为Cassandra增加了功能和性能。在其他改进中,DataStax消除了运行修复脚本的需要,并消除了手动修复失败时可能发生的集群中断; 自动保持DataStax Enterprise节点不会因客户端或副本请求而过载; 并使用每核心架构架构,可将读取和写入操作的吞吐量提高2倍。
CouchDB
Apache CouchDB是一个开源文档模型数据库,具有查询引擎,复制和冲突解决方案。它使用RESTful HTTP API进行查询和更新。CouchDB在Erlang中实现。
CouchDB文件布局和承诺系统具有所有ACID属性。在磁盘上,CouchDB永远不会覆盖已提交的数据或相关结构,从而确保数据库文件始终处于一致状态。这是一种“仅崩溃”设计,CouchDB服务器不会通过关机过程; 相反,它只是终止了。
CouchDB读取操作使用多版本并发控制(MVCC)模型,其中每个客户端从读取操作的开始到结束都看到数据库的一致快照。文档通过名称(DocID)和序列ID在B树中编制索引。
CouchDB是一个基于对等的分布式数据库系统。它允许用户和服务器在断开连接时访问和更新相同的共享数据。然后可以在以后双向复制这些更改。
CouchDB允许在数据库中同时存在任意数量的冲突文档,每个数据库实例确定性地决定哪个文档是“赢家”,哪些是冲突。当发生分布式编辑冲突时,每个数据库副本都会看到相同的获胜版本,并且每个副本都有机会解决冲突。
FaunaDB
FaunaDB是一个分布式,高度一致的OLTP NoSQL数据库,符合ACID标准并提供多模型接口。它具有主动 - 主动架构,可以跨越云和大陆。
FaunaDB支持来自单个查询的文档,关系,图形和时间数据集。除了自己的FQL查询语言外,该公司现已宣布支持GraphQL,以及未来的CQL和SQL。
Google Cloud Bigtable
Cloud Bigtable是一个公共的,高度可扩展的(高达PB级),面向列的NoSQL数据库,它使用与Google内部版本相同的代码,谷歌在21世纪初发明并在2006年发表了一篇论文.Bigtable是和是许多Google服务的基础数据库,包括Google搜索,Google Analytics,Google地图和Gmail。
该Bigtable的论文的启发几个开源NoSQL数据库包括Apache HBase、Apache Cassandra和Apache Accumulo。Bigtable使用高度可伸缩,稀疏填充的表结构,其中每个表都是一个排序的键值映射。Bigtable行描述单个实体,并由单个行键索引; 列包含每行的各个值。列族将相关列组分组。每个行/列交集可以包含不同时间戳的多个单元格,没有数据的单元格不占用空间。
与其他NoSQL服务相比,Cloud Bigtable在高负载下可提供非常高的性能。其中一部分来自本质上高效的设计,其中一部分来自快速,可扩展的基础架构。除了高性能,Bigtable还具有极低的延迟。
非关系型数据库从出现发展到现在已经有很多种,具体使用哪一种看你们自己的项目需要以及对NoSQL的了解,显示还是redis和MongoDB比较多。