NoSql简述
发布时间:2020-12-13 13:36:25 所属栏目:百科 来源:网络整理
导读:NoSQL并不是"No! SQL",你可以将其理解为"Not Only SQL",表示在关系型数据库不再好用的时候可以选择更加合适的数据存储。 NoSQL数据库是非关系的、水平可扩展、分布式并且是开源的。MongoDB的创始人Dwight Merriman表示NoSQL可作为一个Web应用服务器、内容管
NoSQL并不是"No! SQL",你可以将其理解为"Not Only SQL",表示在关系型数据库不再好用的时候可以选择更加合适的数据存储。
NoSQL数据库是非关系的、水平可扩展、分布式并且是开源的。MongoDB的创始人Dwight Merriman表示NoSQL可作为一个Web应用服务器、内容管理器、结构化的事件日志、移动应用程序的服务器端和文件存储的后备存储。 分布式数据库公司VoltDB的首席技术官Michael Stonebraker表示NoSQL数据库可提供良好的扩展性和灵活性,但他们也有自己的不足。由于不使用SQL,NoSQL数据库系统不具备高度结构化查询等特性。NoSQL其他的问题还包括不能提供ACID(原子性、一致性、隔离性和持久性)的操作。另外不同的NoSQL数据库都有自己的查询语言,这使得很难规范应用程序接口。 NoSQL数据库按类型可以飞为键值数据库(Key-value)、文档数据库(Document)、列族数据库(Column store)、图数据库(Graph)等。 键值数据库
键值数据库就是一个简单的哈希表,主要用在所有数据库访问均通过主键来操作的场景下。由于键值数据库总是通过主键访问,所以一般性能较高,且易于扩展。
下面是Oracle和Riak的术语对照:
键值数据库包括Aerospike、riak、redis、memcached等。 键值数据库的特征如下:
文档数据库
此类数据库可存放并获取文档,格式可以为XML、JSON、BSON(Binary JSON)等。数据库中的文档批次相似,但不必完全相同,文档相当于键值数据库所存放的“值”。下面是Oracle和MongoDB的术语对照:
文档数据库的文档可以包含子文档,形成一个树状结果,例如: { "firstname": "Pramod","citiesvisited": ["Chicago","London","Pune","Bangalore"],"addresses": [ { "state": "AK","city": "DILLINGHAM","type": "R" },{ "state": "MH","city": "PUNE" } ] "lastcity": "Chicago" }文档数据库的文档没有空属性,若其中不存在某属性,则认为该属性值未设定或者与此文档无关,向文档中新增属性,无需预先定义,也不用修改已有文档内容。 当前流行的文档数据库有:MongoDB、CouchDB、Terrastore、OrientDB、RavenDB等。 文档数据库的特性如下:
列族数据库
列族数据库可以存储关键字及其映射值,并且可以把值分为多个列,让每个列代表一张数据映射表。
列族数据库将数据存储在列族中,而列族里的行则把许多列数据关联起来,例如下面的结构:
在Cassandra中,基本存储单元叫做“列”,列中包含列名、值和时间戳,时间戳用于数据过期、解决写入冲突、处理陈旧数据等操作,结构如下:
{ name: "name",value: "Mike",timestamp: 1234567890 }行是列的集合,列都属于某个关键字下,由相似行构成的集合就是列族: //列族 { //行 "pramod-sadalage" : { firstName: "Pramod",lastName: "Sadalage",lastVisit: "2012/12/12" } //行 "martin-fowler" : { firstName: "Martin",lastName: "Fowler",location: "Boston" } }列族数据库的各行不一定要具备完全相同的列,并且可以随意向其中某列加入一行,而不用把它添加到其他行中。 列族数据库具有如下特性:
图数据库
图数据库可存放实体及实体间关系。实体也叫“节点”(node),具有属性,关系又叫做“边”(edge),也具有属性,边具备方向性,节点间通过关系组织起来。用图将数据一次性组织好,后续便可根据“关系”以不同方式解读它。
在图数据库中,节点间的关系不在查询时计算,而是在创建时就已经持久化好了。节点间可有多种不同的关系类型,由于节点关系的数量及类型不限,所以这些关系可存放在同一图数据库中。 常用的图数据库包括:Neo4j,Infinite Graph、OrientDB等。 图数据的特性如下:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |