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

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: 本文讨论了基于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的文档管理系统,虽然相比于其他类似的系统,在性能和扩展性上都展现出了一定的优越性,但是依然存现一些不足和局限性。希望在将来可以对课题进一步的研究, 将系统进行完善。

相关文章
|
13天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
21 2
|
21天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
23天前
|
安全 网络安全 数据库
数据安全之认识数据库漏洞扫描系统
数据库漏洞扫描系统是一种专业的数据库安全产品,它基于对数据库访问控制、数据库审计、资源管理、数据库加密以及数据库系统本身安全机制的深入分析,深入研究和发现数据库系统本身存在的BUG以及数据库管理、使用中存在的问题。
37 4
|
27天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL是关系型DB,依赖预定义的表格结构,适合结构化数据和复杂查询,但扩展性有限。NoSQL提供灵活的非结构化数据存储(如JSON),无统一查询语言,但能横向扩展,适用于大规模、高并发场景。选择取决于应用需求和扩展策略。
115 1
|
22天前
|
存储 NoSQL Java
Java数据库编程指南:实现高效数据存储与访问
【4月更文挑战第2天】Java开发者必须掌握数据库编程,尤其是JDBC,它是连接数据库的标准接口。使用Spring JDBC或JPA能简化操作。选择合适的JDBC驱动,如MySQL Connector/J,对性能至关重要。最佳实践包括事务管理、防SQL注入、优化索引和数据库设计。NoSQL数据库如MongoDB也日益重要,Java有对应的驱动支持。理解这些概念和技术是构建高效数据库应用的基础。
Java数据库编程指南:实现高效数据存储与访问
|
1月前
|
SQL 监控 安全
数据安全之认识数据库审计系统
随着企业业务数据量的不断增长和数据存储的集中化,数据库成为企业的核心资产之一。然而,数据库面临着各种安全威胁,如SQL注入、权限滥用、数据泄露等。为了保障数据库的安全性和完整性,企业需要采取有效的审计措施来监控和记录数据库的操作行为。本文让我们一起来认识数据库审计系统。
32 1
|
5天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
65 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
13天前
|
存储 NoSQL 安全
物流系统数据库的应该以及选择
物流系统数据库在信息化建设中扮演关键角色,用于数据存储、管理和共享,支持决策,并优化资源配置。选择数据库时要考虑类型(如关系型或NoSQL)、性能稳定性、成本易用性、安全性和未来发展需求。完善数据管理与安全措施,确保数据准确性和系统扩展性,是提升物流效率和企业竞争力的关键。
16 3
|
30天前
|
SQL 存储 安全
【软件设计师备考 专题 】数据库管理系统的功能和特征
【软件设计师备考 专题 】数据库管理系统的功能和特征
73 0
|
1月前
|
SQL 编解码 数据库
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
14 1
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行

热门文章

最新文章