基于NoSQL非关系数据库数据存储系统的设计与实现

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 本文讨论了基于NoSQL非关系数据库数据存储系统的设计与实现,以海量文档的存储、管理为背景,提出了基于MongoDB的文档管理系统。根据登录对象的身份权限,可以进行文档上传、下载、审批等功能。作为非关系数据技术中的MongoDB数据存储系统,具备了NoSQL的高性能、高扩展性的显著特性,而作为最像关系型数据库的非关系数据库,使其具备了传统的SQL关系型数据库系统的一些特征。对于本文的所讨论的基于MongoDB的文档管理系统,具有最佳的适用性。

 

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

二,项目简介

NoSQL数据库的产生是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。此次选择基于MongoDB的文档管理系统,此系统旨在设计一个方便、快捷的文档管理系统。本系统在进行开发时,系统的数据库使用的是MongoDB数据库,系统的前端主要使用的是HTML,系统的后端采用了Python语言的Django框架。系统设定只有当用户成功登陆后,才能进入系统进行相应的操作,密码通过哈希函数进行加密,极大程度保证了密码的安全性。所有用户使用此系统可以上传和下载文档,监察稽核员和系统管理员增加审批操作,此外管理员可以执行对用户的增删改。最后经过运行测试本系统可平稳运行,系统界面简洁,操作简单,可优化办公效率,节约人力,符合系统开发的目的与要求,对推动文档管理信息化具有重要意义。

使用计算机对文档进行操作不同于人工,随着公司员工和文档等数据的不断增加,怎么将文档最简单的管理并且和用户联系起来是此次本课题研究的重要内容,将计算机技术深度参与到文档管理系统之中。如何将系统功能模块与用户联系起来并且进行权限分配是系统的重点,以及功能模块实现的逻辑关系与操作流程。本文档管理系统是基于MongoDB数据库进行实现的项目[5]。课题主要内容:

1.分析文档管理系统的特征,确定模块之间的关联;

2.确定非关系数据库存储方法;

3.实现登录、用户的增删改等相关业务的逻辑关系;

4.对系统进行需求分析,明确需要实现哪些功能及实现方式等[6]

5.进行权限分配,系统管理员、监察稽核员、普通用户的权限设置,不同的权限可以执行不同的功能。

1.文档管理:基于非关系数据的文档管理是系统设计的核心工作,身份不同的用户对文档的可操作权限不同。对普通用户,可以上传和下载文档。对监察稽核员和系统管理员,除了普通用户具有的上传和下载文档功能外,还具有审批用户上传的文档的权限。

2.登录功能:系统的登录功能是保障系统安全的必要环节,登录对象有三类,类别不同的对系统的操作权限也不同。三类登录对象分别是:普通用户、系统管理员、监察稽核员。

3.用户管理:根据不同类别的登录用户,分配不同的操作权限。管理员身份的权限包括对用户的进行添加、删除、及修改管理员个人的密码和其它用户的相关信息的操作;监察稽核员身份的权限包括上传、下载文档,查看文档和文件信息的导出;普通用户的权限就只能对用户自己的密码及个人信息进行修改。

4.角色管理:角色管理功能主要是对登录对象类型的管理,可以为对象分配不同的子角色。监察稽核员可以对文档进行审批,根据子角色的不同分为一审和二审。系统管理员对文档进行终审,但不能对自身上传的文件进行终审。文件在一审和二审的过程中,一审员和二审员可以查看该文件的具体内容。

image.gif编辑

(1)添加用户功能

添加用户功能是文档管理系统的基本功能之一,管理员进入网页管理页面后,点击添加人员,输入工号和姓名,点击保存后即完成新用户的创建;登录页面,要求用户输入自己的用户名和密码,密码初始都为123456,进入系统后可以自行修改。输入之后,系统将验证用户是否在数据库中存在,若存在则比对密码是否和数据库中的相同,如果相同则为验证通过,进入文档管理页面。否则,显示账号或密码错误。为了保证用户的安全性,在用户修改密码的时候,用户密码会经过哈希函数加密保存在数据库中,避免用户安全问题对系统造成危害。

(2)查看信息

普通用户可查看自己上传的文档,以及所有文档信息;管理员和稽核员可以查看所有用户和所有上传文档的全部信息。

(3)用户信息

此操作由管理员实现,管理员在添加用户页面可以创建、删除、修改用户并进行权限分配,同时可以将用户分配到不用的部门。

文档管理系统的用户根据登录对象的权限不同分为三种,分别为普通用户、监察稽核员、系统管理员。

普通用户仅有上传、下载文档和修改个人密码的功能。

监察稽核员除了可以上传、下载文档和修改个人密码外,还可以查看用户上传的文档内容,并且对文档进行一审和二审,以及将所有文档信息当初至exlce中。

系统管理员除了普通用户所具有的功能外,还可以添加、修改用户,而且可以对文档进行终审、并选择将文档退回。具体流程图如图7所示:

image.gif编辑

图7 系统流程图

三,系统展示

4.1 用户登录

此文档管理系统的登录页面,根据登录对象的身份权限,进入系统后的可执行功能也不同。登录页面需要用户输入用户名和密码,其中超级用户,即管理员是在终端已被创建过的,普通用户则是管理员在站点添加的,二者信息都保存在表里。点击登录按钮后,系统首先在数据库表中查找该用户名是否存在,以及密码是否正确,验证成功后则进入下一页面,管理员登录后进入站点管理页面,普通用户登录后进入文档管理页面。登录页面如图8所示:

image.gif编辑

图8 登录页面

系统用户在登录模块时,用户填写的元素是以表单的形式传输到后端的,由后端进行处理判断。若用户输入错误,则返回账号或密码输入错误;若正确,则跳转到主页面,进行下一步操作;若账号被设置为离职,将返回账号已锁,请联系管理员。后端登录的主要代码如下:

image.gif编辑

image.gif编辑

4.2 用户修改密码  

用户登录系统主页面后,在右上角可以进行修改密码的操作,点击修改密码后,进入修改密码操作,需要输入两次新密码,点击保存,数据库就会将在经过加密后的密码进行保存。修改密码界面如下图9所示:

image.gif编辑

图9 修改密码界面

用户修改密码,需输入两次新密码,如果不一样,将返回两次密码不一致;如果不输入,则返回密码不能为空。后端修改密码的主要代码如下:

image.gif编辑

4.3 用户信息管理

管理员可以对所有用户进行统一的管理,如添加新用户、查看所有用户信息、修改用户信息、删除用户、对用户进行权限分配、为用户分配部门等。在实现用户信息管理系统时选择使用了Django框架自带的系统模块,并在此基础上对系统进行重写、功能的扩展等,实现了用户信息管理的功能。在管理员查看用户信息的时候,用户信息管理系统会提供一个所有用户信息的表格,界面简单明了,用户信息清晰可见,同时在页面顶端设计了搜索框,当在用户信息非常多的时候,需要找到某一用户将会变得容易。页面效果如图10所示:

image.gif编辑

图10 用户管理效果展示界面

后端用户管理的主要代码如下:

image.gif编辑

4.3.1添加用户

管理员拥有创建新用户的权限,在用户管理页面点击添加人员按钮,用户管理页面将会跳转到添加用户界面,管理员可以输入用户的基本信息,工号、姓名等。用户名即为姓名,密码初始都为123456,用户可以在第一次登录后自行修改。然后可以为用户设置部门,分配角色,最后提交,即可创建成功。(*为必填信息,其他选填。)添加用户和权限分配如图11所示:

image.gif编辑

图11 添加用户界面

4.3.2修改用户

当管理员想要修改用户的信息时,需要在用户管理界面点击想要修改的用户的姓名,页面就会跳转到该用户的信息界面,管理员可以对工号、姓名、所属部门等信息进行修改,权限也可以重新分配,点击保存后新的用户信息将会在数据库表中进行更新并保存,如果用户的密码忘记可以通过管理员重置密码,密码将重置为123456。效果如图12所示:

     修改用户如果修改了用户名,判断是否该用户名与其他用户冲突,主要代码如下:

image.gif编辑

图12 修改用户信息界面

4.3.3删除用户

此文档管理系统删除用户的方法为,在系统进行修改用户信息时,角色分配中设置了离职员工,如果员工离职,则修改为离职员工,那么此账号将无法登录,显示账号已锁。页面效果展示如图13所示:

image.gif编辑

图13 离职员工展示图

4.4 文档管理

4.4.1文档上传

文档管理为文档管理系统最核心的部分,根据用户登录时的不同的身份,用户拥有不同的操作权限。首先对于所有用户,都可以进行文档上传、下载,文档在一审和二审的过程中,一审员和二审员可以查看该文件的具体内容。上传文档页面效果展示如图14所示:

image.gif编辑

图14 上传文档

4.4.2 文档审批

其中对于监察稽核员,又分为一审员和二审员两种子角色身份,对文件进行审批,根据子角色的不同文档审批分为一审和二审,且审批过程中能查看所有人的文档内容;对于系统管理员,可以对文件进行终审,也可以选择将文档退回但不能对自身上传的文件进行终审。页面效果展示如图15所示:

image.gif编辑

图15 文档审核

4.4.3文档信息导出

监察稽核员能将所有用户上传文档信息(包括文档编号、文件名、文件路径、上传用户、上传时间)导出至excle中,页面效果如图16所示:

image.gif编辑

图16文档信息导出至excle

五,项目总结

本文讨论了基于NoSQL非关系数据库数据存储系统的设计与实现,以海量文档的存储、管理为背景,提出了基于MongoDB的文档管理系统。根据登录对象的身份权限,可以进行文档上传、下载、审批等功能。作为非关系数据技术中的MongoDB数据存储系统,具备了NoSQL的高性能、高扩展性的显著特性,而作为最像关系型数据库的非关系数据库,使其具备了传统的SQL关系型数据库系统的一些特征。对于本文的所讨论的基于MongoDB的文档管理系统,具有最佳的适用性。

对新技术的探索和研究总是坎坷的,从零开始学习MongoDB数据库,借阅的书籍,搜索的资料,都见证着我的努力。基于MongoDB的文档管理系统,虽然相比于其他类似的系统,在性能和扩展性上都展现出了一定的优越性,但是依然存现一些不足和局限性。希望在将来可以对课题进一步的研究, 将系统进行完善。

相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
18天前
|
消息中间件 关系型数据库 Kafka
一种小资源情况下RDS数据实时同步StarRocks方案
使用一台4C8 G服务器轻松实现2个MySQL实例中通过负责分库分表规则之后的5000多张表的数据实时同步到StarRocks
146 67
|
24天前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
26 1
|
1月前
|
存储 缓存 NoSQL
常见的 NoSQL 数据库有哪些?
常见的 NoSQL 数据库有哪些?
38 2
|
1月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
102 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
31 1
|
2月前
|
存储 SQL JSON
介绍一下RDBMS和NoSQL数据库之间的区别
【10月更文挑战第21天】介绍一下RDBMS和NoSQL数据库之间的区别
91 2
|
2月前
|
存储 SQL NoSQL
数据库技术深度探索:从关系型到NoSQL的演变
【10月更文挑战第21天】数据库技术深度探索:从关系型到NoSQL的演变
66 1
|
2月前
|
存储 NoSQL 搜索推荐
nosql
【10月更文挑战第14天】nosql
28 2
|
2月前
|
SQL 存储 关系型数据库
数据储存数据库管理系统(DBMS)
【10月更文挑战第11天】
130 3
|
2月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
40 2

热门文章

最新文章