作者:李顺 本文字数:2506
[摘 要] 基于为学校开发的实际项目,首先对NoSQL数据库的理论和方向进行阐述,然后从总体的设计与需求出发,对以Redis技术为主的NoSQL数据库应用进行探究。
[关 键 词] 数据库;NoSQL技术;Redis
[中图分类号] TP311.1 [文献标志码] A [文章编号] 2096-0603(2019)15-0034-02
数据库是数据存储的主要场所,,当前的数据库技术主要是以MySQL、PosrareSQL等为主的关系数据库。随着网站技术的发展,特别是微博之类大型网站的出现让人们意识到了关系数据库的局限性,那就是关系数据库的设计约束不够灵活和海量数据处理能力不足,使用户的体验过程很不理想。所以为了优化用户的体验,满足数据库低延时和高并发的需求,研究人员开始将目光投入到非关系数据库上,也就是本文所研究的NoSQL技术。从本质上来说,NoSQL技术是对关系数据库的补足,主要是应对高并发和大数据的需求进行构架,充分开发了以集合论为代数基础的结构化查询语言,保证了事物的一致性,满足了网站对数据库伸缩性和高可用性的要求。
一、NoSQL简介
NoSQL是基于CAP理论、最终一致性和BASE思想而构建起来的技术体系,与传统的关系数据库的数据模型有着很大的区别。传统的关系数据库的数据模型表现为关系型数据模型,而NoSQL抛弃了关系型模型的框架和模式,从键值、文档、列、图四个存储应用方向出发进行构架。
键值(key-value)存储是一张类似于HashTable集合的数据结构的哈希表,能够根据结构中的key值进行存储,与其对应的value没有过多的限制,能够根据产品的不同进行不同的操作。但是通常情况下的NoSQL数据库不提供针对单独value值的操作,而是根据key值开放delet、set等操作,目前常见的键值数据库产品为Redis。
文档(key-文档)存储与键值存储类似,但对应的vale值从任意数值变成了结构化的文档。文档存储的优势在于只要文档满足XML、JSON等存储格式,就能够实现文档内嵌套的复杂存储方式。所以文档存储可以看作是键值存储的升级版本,目前常见的文档存储数据库产品为CouchDB。
列(key-列)存储在设计上与前两种截然不同,它是一种能够以传统关系结构的表模型(Table)为基础,打破了多行进行连续存储的方式,从而提高压缩率和缓存的利用率。但列存储因为结构特性有着无法聚集、无法形成唯一索引、无法包含稀疏列等缺点,所以列存储的应用范围有限,通常被应用在数据仓库或者汇总上,目前常见的列存储数据库产品为HBase。
图存储是利用图结构的算法来实现存储,常见的图存储算法为最短路径寻址算法。图存储的计算方式是基于整个图进行,所以其复杂算法不适合分布式集群方案。图存储的主要应用范围在社交网络这类能够构建出关系图谱的平台上,目前常见的图存储数据库产品为InfoGrid等。
二、基于NoSQL技术的数据库设计
本次研究所构架NoSQL数据库的方向为键值存储,研究的项目为redis问答系统设计与实现,旨在解决用户对笔者所在学校及其相关办学情况的疑惑。用户可以在問答系统上自行发布问题,由学校内部人员进行解答。
(一)总体设计与需求分析
首先,需要对用户的相关需求进行分析,用户登录系统之后需要先对问题进行搜索,借助搜索引擎对问题进行定位;其次,如果用户没有发现相关问题,那么就可以通过自行提问,然后由学校安排特定人员进行登录解答;最后,用户对感兴趣的问题进行关注,从而随之对问题答案消息进行接收。所以跟据以上三种情况,笔者将主要的模块分为四种:用户模块、关注模块、点赞模块和问题与评论模块。全文搜索相关功能需要借助其他框架实现,本文不多进行赘述。本次研究项目后台使用Java,采用了SSM的架构方式。
1.用户模块
用户在浏览网站首页的时候需要进行权限认证,然后跳转至登录页面进行登录,在登录验证成功后就可以跳转到之前的目标界面,如果没有成功再会提示用户信息出现问题。登录验证也分为新用户和老用户两种验证方式,新用户需要提交权限认证和注册,老用户只需要输入账号密码。
因为学校的用户规模有限,并且各个用户之间的关联性较强,所以用户模块的数据存储使用的是关系型数据库,并且使用了MD5加密技术进行加密。在用户模块字段的描述方面:id表示系统记录的用户主键序号;name表示账户名;password表示密码;slat表示根据原始密码生成的加密技术;head url表示头像的url。
2.问题与评论模块
用户在没有找到自己想要了解的问题情况下,就需要自行进行发布请求的提交,这时系统会检查用户是否已经登录,如果用户没有登录,就会弹出相应登录界面。在用户已经登陆的情况下就可以提示用户是否需要进行问题的发布,如果需要,就进入相关发布界面;如果不需要,就进入相关评论界面,两个界面都需要填写信息后提交,最终结果会在对应的界面上显示。问题与评论模块是相互对应进行设计的,所以选用的是传统关系型数据库进行数据存储。
在问题模块字段的描述方面:id表示系统记录的问题主键序号;title表示标题;content表示内容;user-id表示发布者的用户表序号;created-time表示创建问题时间;comment-count表示问题下方的评论数量。
- 《新课程》杂志征稿通知
- 论文发表中的DOI是什么意思
- 《新课程》杂志论文知网收截图
- 新课程杂志主管单位主办单位说明
- 如何提高发表论文的“命中率”
- 《现代职业教育》杂志每版字数调整为2000字
- 现代职业教育杂志中国知网全文收录截图
- 中国知网期刊大全检索《现代职业教育》杂志
- 编辑在论文发表工作中的重要性
新课程杂志社提示:
本文标题:基于某项目的NoSQL数据库设计与研究
当前网址:http://www.xinkecheng.cn/laigao/14982.html