小伙伴们知道应该nosql数据库吧,你们知道nosql四大类型是什么吗?下面听小编为你介绍一下吧。
一、 键值(Key-Value)数据库
概念
键值数据库与我们常使用的哈希表相似,同样可以使用key来完成各种增删改查的操作,而且因为它是使用主键访问的,使得它的性能及扩展性会有相当不错的提升。
一般应用场景
储存各种用户信息。就如会话、配置文件、参数、购物这些一样。这些信息一般都和ID(键)相连,在这种情景下键值数据库就是一种非常好的选择。
不适用场景
1. 取代通过键查询,而是通过值来查询。这种场景就不适合使用Key-Value数据库,因为在Key-Value数据库中根本就没有通过值查询的途径。
2. 需要储存数据之间的关系时。Key-Value数据库是不能够通过两个或以上的键来关联数据的。
3. 事务支持时。Key-Value数据库在故障时是不能够进行回滚的。
相关产品:Memcached、Project Voldemort、Riak、Amazon’s Dynamo、Redis、Project Voldemort
二、 面向文档(Document-Oriented)数据库
面向文档数据库是一种特殊的数据库,它会把数据以文档的形式储存。文档中都是各自包含的数据单元,是一系列数据项的集合。且它的每个数据项都有一个名称与对应的值,一般来说,它的值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,像有序列表和关联对象等。它的数据存储的最小单位是文档,同一个表中存储的文档属性也可以是不同的,它的数据可以使用XML、JSON或者JSONB等多种形式存储。
一般应用场景
1. 日志。我们知道,每个项目都有不同的日志信息。Document-Oriented数据库就可以用来储存不同信息,因为它是没有固定模式的。
2. 分析。立于它的弱模式结构下,它可以不改变模式下就可以储存不同的度量方法及添加新的度量。
不适用场景
Document-Oriented数据库不支持文档间事务,所以在不同的文档上添加事务是不适用的。
相关产品:CouchDB、RavenDB、MongoDB
三、 列存储(Wide Column Store/Column-Family)数据库
列存储数据库会把数据储存在列族(column family)中,一般一个列族存储经常是会被一起查询的相关数据。
一般应用场景
1. 日志
因为我们能够把数据储存在不同的列中,使得每个应用程序都可以将信息写入自己的列族里。所以一般使用在日志上会比较合适
2. 博客平台
我们可以储存每个信息到不同的列族中。举个例子,标签可以储存在一个,类别可以在一个,而文章则在另一个。
不适用场景
1. 需要ACID事务时,Vassandra不支持事务。
2. 我们可以试着分析Cassandra的数据结构,会发现它的结构通常是基于我们期望的数据查询方式而定。但在模型设计之初,我们根本没办法去预测它的查询方式,然一旦查询方式改变,我们就必须重新设计列族,这是十分让人头疼的,所以它不适用于原型设计。
相关产品:Cassandra、HBase
四、 图(Graph-Oriented)数据库
在Graph-Oriented数据库中,实体会被作为顶点,而实体之间的关系则会被作为边。且它能够让我们将数据以图的形式储存。
一般应用场景
1. 如一些关系性较强的数据中
2. 推荐引擎
不适用场景
以实际来说,图数据库的适用范围较小,所以不适合的数据模型就很难应用。
相关产品:Infinite Graph、Neo4J、OrientDB
以上就是关于nosql数据库四种数据类型的所有内容了,小伙伴们如果还想了解更多java常见问题答案,就快来关注我们的网站吧。
推荐阅读: