暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

NoSQL学习笔记--数据存储模式(1)

张春光的一亩三分地 2018-06-21
1645

这里说的数据存储模式(Data Storage Schema),也就是数据库分类。通过:http://www.nosql-database.org可以查询到现在的NoSQL种类和数量。

NoSQL数据库存储模式主要涉及数据库建立的存放数据的逻辑结构,通俗的说就是数据结构。基本的数据查插删改等操作,数据处理对象,及在分布式状态下的一些处理模式。

键值(Key-Vaule)数据存储模式:

键值数据库(Key-Value Database)为一类轻量级结合内存处理为主的NoSQL数据库。轻量是因为存储数据结构特别简单,数据库系统本身规模比较小;其设计之初的目的是为了更快地实现对大数据的处理,以内存为主运行处理。

键值数据库的数据结构最早借鉴了一维数组(Array)的设计方法,如图:

左边一列为key,用来定位右边的数组值,右边一列为value

将两边的值类型放宽,例如字符串,blob等,就成了我们今天的键值数据库。

键内容必须唯一,用来索引和数据查找。

键值数据库主要运行在内存中,需要定期向硬盘写数据,使数据得到永久保存。数据量大的话,内存是有限的,就需要引入分布式处理方法。

键值数据库基本要素:

键(Key):起到唯一索引的作用,确保一个键值结构里的数据记录的唯一性。

值(Value):值是对应键相关的数据,通过键来获取,可以存放任意类型的数据。键值数据库的值由二进制大对象(Blob)进行存储,可以存放任意的数据,键值数据库无预定义数据类型的要求。

键值对(Key-Value Pair):键和值得组合就构成键值对。是一对一的映射关系。

命名空间(Namespace):命名空间是由键值对所构成的集合。


到这里大家可能看出来了,Namespace和Oracle中的table概念类似,如果在Oracle中创建一张两列的表,可以做出如下对比:


基本操作方式:

put:用于写或者更新键值对里指定地址的值。当指定地址无值,则插入;有值,则更新。

get:用于读键值存储里指定的值。如果无值,则返回错误。

delete:用于删除键值存储里指定的键和值。如果键值存储里没有该键,则返回错误。

 

键值存储的优缺点:

优点:

简单:数据结构中只有键和值,并成对出现,值在理论上可以存放任一数据,并支持大数据存储。

快速:以内存运行模式为主,数据处理快是其最大优势。

高效计算:数据结构简单化,数据集之间的关系简单化,再加上基于内存的数据集计算,分布式计算等,形成了高效计算的前提条件。

分布式处理:分布式处理能力使键值数据库具备了处理大数据的能力。

缺点:

对值进行多值查找功能很弱。

缺少约束容易出错。

不容易建立复杂关系。

根据其缺点可以看出来,很多查询,排序,统计等功能需要程序员在业务代码进行编程约束。

 

总结:

键值数据库就像在传统语言中使用的哈希表。你可以通过key来添加、查询或者删除数据,鉴于使用主键访问,所以会获得不错的性能及扩展性。

产品:Riak、Redis、Memcached、Amazons Dynamo、Project Voldemort

有谁在使用:GitHub (Riak)、BestBuy (Riak)、Twitter (Redis和Memcached)、StackOverFlow(Redis)、 Instagram (Redis)、Youtube (Memcached)、Wikipedia(Memcached)

适用的场景

储存用户信息,比如会话、配置文件、参数、购物车等等。这些信息一般都和ID(键)挂钩,这种情景下键值数据库是个很好的选择。

不适用场景

1. 取代通过键查询,而是通过值来查询。Key-Value数据库中根本没有通过值查询的途径。

2. 需要储存数据之间的关系。在Key-Value数据库中不能通过两个或以上的键来关联数据。

3. 事务的支持。在Key-Value数据库中故障产生时不可以进行回滚。

 

待续......

 

文档(Document)数据存储模式:

 

列族(Column Families)数据存储模式:

 

图(Graph)数据存储模式:

 

 

资料来源:《NoSQL数据库入门与实践》

                    网络资源


文章转载自张春光的一亩三分地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论