基于NoSQL非關(guān)系數(shù)據(jù)庫數(shù)據(jù)存儲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
項(xiàng)目編號:無
一,環(huán)境介紹
語言環(huán)境:Java:? jdk1.8
數(shù)據(jù)庫:Mysql: mysql5.7
應(yīng)用服務(wù)器:Tomcat:? tomcat8.5.31
開發(fā)工具:IDEA或eclipse
二,項(xiàng)目簡介
NoSQL數(shù)據(jù)庫的產(chǎn)生是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題,包括超大規(guī)模數(shù)據(jù)的存儲。此次選擇基于MongoDB的文檔管理系統(tǒng),此系統(tǒng)旨在設(shè)計(jì)一個(gè)方便、快捷的文檔管理系統(tǒng)。本系統(tǒng)在進(jìn)行開發(fā)時(shí),系統(tǒng)的數(shù)據(jù)庫使用的是MongoDB數(shù)據(jù)庫,系統(tǒng)的前端主要使用的是HTML,系統(tǒng)的后端采用了Python語言的Django框架。系統(tǒng)設(shè)定只有當(dāng)用戶成功登陸后,才能進(jìn)入系統(tǒng)進(jìn)行相應(yīng)的操作,密碼通過哈希函數(shù)進(jìn)行加密,極大程度保證了密碼的安全性。所有用戶使用此系統(tǒng)可以上傳和下載文檔,監(jiān)察稽核員和系統(tǒng)管理員增加審批操作,此外管理員可以執(zhí)行對用戶的增刪改。最后經(jīng)過運(yùn)行測試本系統(tǒng)可平穩(wěn)運(yùn)行,系統(tǒng)界面簡潔,操作簡單,可優(yōu)化辦公效率,節(jié)約人力,符合系統(tǒng)開發(fā)的目的與要求,對推動文檔管理信息化具有重要意義。
使用計(jì)算機(jī)對文檔進(jìn)行操作不同于人工,隨著公司員工和文檔等數(shù)據(jù)的不斷增加,怎么將文檔最簡單的管理并且和用戶聯(lián)系起來是此次本課題研究的重要內(nèi)容,將計(jì)算機(jī)技術(shù)深度參與到文檔管理系統(tǒng)之中。如何將系統(tǒng)功能模塊與用戶聯(lián)系起來并且進(jìn)行權(quán)限分配是系統(tǒng)的重點(diǎn),以及功能模塊實(shí)現(xiàn)的邏輯關(guān)系與操作流程。本文檔管理系統(tǒng)是基于MongoDB數(shù)據(jù)庫進(jìn)行實(shí)現(xiàn)的項(xiàng)目[5]。課題主要內(nèi)容:
1.分析文檔管理系統(tǒng)的特征,確定模塊之間的關(guān)聯(lián);
2.確定非關(guān)系數(shù)據(jù)庫存儲方法;
3.實(shí)現(xiàn)登錄、用戶的增刪改等相關(guān)業(yè)務(wù)的邏輯關(guān)系;
4.對系統(tǒng)進(jìn)行需求分析,明確需要實(shí)現(xiàn)哪些功能及實(shí)現(xiàn)方式等[6];
5.進(jìn)行權(quán)限分配,系統(tǒng)管理員、監(jiān)察稽核員、普通用戶的權(quán)限設(shè)置,不同的權(quán)限可以執(zhí)行不同的功能。
1.文檔管理:基于非關(guān)系數(shù)據(jù)的文檔管理是系統(tǒng)設(shè)計(jì)的核心工作,身份不同的用戶對文檔的可操作權(quán)限不同。對普通用戶,可以上傳和下載文檔。對監(jiān)察稽核員和系統(tǒng)管理員,除了普通用戶具有的上傳和下載文檔功能外,還具有審批用戶上傳的文檔的權(quán)限。
2.登錄功能:系統(tǒng)的登錄功能是保障系統(tǒng)安全的必要環(huán)節(jié),登錄對象有三類,類別不同的對系統(tǒng)的操作權(quán)限也不同。三類登錄對象分別是:普通用戶、系統(tǒng)管理員、監(jiān)察稽核員。
3.用戶管理:根據(jù)不同類別的登錄用戶,分配不同的操作權(quán)限。管理員身份的權(quán)限包括對用戶的進(jìn)行添加、刪除、及修改管理員個(gè)人的密碼和其它用戶的相關(guān)信息的操作;監(jiān)察稽核員身份的權(quán)限包括上傳、下載文檔,查看文檔和文件信息的導(dǎo)出;普通用戶的權(quán)限就只能對用戶自己的密碼及個(gè)人信息進(jìn)行修改。
4.角色管理:角色管理功能主要是對登錄對象類型的管理,可以為對象分配不同的子角色。監(jiān)察稽核員可以對文檔進(jìn)行審批,根據(jù)子角色的不同分為一審和二審。系統(tǒng)管理員對文檔進(jìn)行終審,但不能對自身上傳的文件進(jìn)行終審。文件在一審和二審的過程中,一審員和二審員可以查看該文件的具體內(nèi)容。

(1)添加用戶功能
添加用戶功能是文檔管理系統(tǒng)的基本功能之一,管理員進(jìn)入網(wǎng)頁管理頁面后,點(diǎn)擊添加人員,輸入工號和姓名,點(diǎn)擊保存后即完成新用戶的創(chuàng)建;登錄頁面,要求用戶輸入自己的用戶名和密碼,密碼初始都為123456,進(jìn)入系統(tǒng)后可以自行修改。輸入之后,系統(tǒng)將驗(yàn)證用戶是否在數(shù)據(jù)庫中存在,若存在則比對密碼是否和數(shù)據(jù)庫中的相同,如果相同則為驗(yàn)證通過,進(jìn)入文檔管理頁面。否則,顯示賬號或密碼錯(cuò)誤。為了保證用戶的安全性,在用戶修改密碼的時(shí)候,用戶密碼會經(jīng)過哈希函數(shù)加密保存在數(shù)據(jù)庫中,避免用戶安全問題對系統(tǒng)造成危害。
(2)查看信息
普通用戶可查看自己上傳的文檔,以及所有文檔信息;管理員和稽核員可以查看所有用戶和所有上傳文檔的全部信息。
(3)用戶信息
此操作由管理員實(shí)現(xiàn),管理員在添加用戶頁面可以創(chuàng)建、刪除、修改用戶并進(jìn)行權(quán)限分配,同時(shí)可以將用戶分配到不用的部門。
文檔管理系統(tǒng)的用戶根據(jù)登錄對象的權(quán)限不同分為三種,分別為普通用戶、監(jiān)察稽核員、系統(tǒng)管理員。
普通用戶僅有上傳、下載文檔和修改個(gè)人密碼的功能。
?監(jiān)察稽核員除了可以上傳、下載文檔和修改個(gè)人密碼外,還可以查看用戶上傳的文檔內(nèi)容,并且對文檔進(jìn)行一審和二審,以及將所有文檔信息當(dāng)初至exlce中。
系統(tǒng)管理員除了普通用戶所具有的功能外,還可以添加、修改用戶,而且可以對文檔進(jìn)行終審、并選擇將文檔退回。具體流程圖如圖7所示:

圖7 系統(tǒng)流程圖
三,系統(tǒng)展示
?4.1 用戶登錄
此文檔管理系統(tǒng)的登錄頁面,根據(jù)登錄對象的身份權(quán)限,進(jìn)入系統(tǒng)后的可執(zhí)行功能也不同。登錄頁面需要用戶輸入用戶名和密碼,其中超級用戶,即管理員是在終端已被創(chuàng)建過的,普通用戶則是管理員在站點(diǎn)添加的,二者信息都保存在表里。點(diǎn)擊登錄按鈕后,系統(tǒng)首先在數(shù)據(jù)庫表中查找該用戶名是否存在,以及密碼是否正確,驗(yàn)證成功后則進(jìn)入下一頁面,管理員登錄后進(jìn)入站點(diǎn)管理頁面,普通用戶登錄后進(jìn)入文檔管理頁面。登錄頁面如圖8所示:

圖8 登錄頁面
系統(tǒng)用戶在登錄模塊時(shí),用戶填寫的元素是以表單的形式傳輸?shù)胶蠖说?,由后端進(jìn)行處理判斷。若用戶輸入錯(cuò)誤,則返回賬號或密碼輸入錯(cuò)誤;若正確,則跳轉(zhuǎn)到主頁面,進(jìn)行下一步操作;若賬號被設(shè)置為離職,將返回賬號已鎖,請聯(lián)系管理員。后端登錄的主要代碼如下:

?

4.2 用戶修改密碼??
用戶登錄系統(tǒng)主頁面后,在右上角可以進(jìn)行修改密碼的操作,點(diǎn)擊修改密碼后,進(jìn)入修改密碼操作,需要輸入兩次新密碼,點(diǎn)擊保存,數(shù)據(jù)庫就會將在經(jīng)過加密后的密碼進(jìn)行保存。修改密碼界面如下圖9所示:

圖9 修改密碼界面
用戶修改密碼,需輸入兩次新密碼,如果不一樣,將返回兩次密碼不一致;如果不輸入,則返回密碼不能為空。后端修改密碼的主要代碼如下:

4.3 用戶信息管理
管理員可以對所有用戶進(jìn)行統(tǒng)一的管理,如添加新用戶、查看所有用戶信息、修改用戶信息、刪除用戶、對用戶進(jìn)行權(quán)限分配、為用戶分配部門等。在實(shí)現(xiàn)用戶信息管理系統(tǒng)時(shí)選擇使用了Django框架自帶的系統(tǒng)模塊,并在此基礎(chǔ)上對系統(tǒng)進(jìn)行重寫、功能的擴(kuò)展等,實(shí)現(xiàn)了用戶信息管理的功能。在管理員查看用戶信息的時(shí)候,用戶信息管理系統(tǒng)會提供一個(gè)所有用戶信息的表格,界面簡單明了,用戶信息清晰可見,同時(shí)在頁面頂端設(shè)計(jì)了搜索框,當(dāng)在用戶信息非常多的時(shí)候,需要找到某一用戶將會變得容易。頁面效果如圖10所示:

圖10 用戶管理效果展示界面
后端用戶管理的主要代碼如下:

4.3.1添加用戶
管理員擁有創(chuàng)建新用戶的權(quán)限,在用戶管理頁面點(diǎn)擊添加人員按鈕,用戶管理頁面將會跳轉(zhuǎn)到添加用戶界面,管理員可以輸入用戶的基本信息,工號、姓名等。用戶名即為姓名,密碼初始都為123456,用戶可以在第一次登錄后自行修改。然后可以為用戶設(shè)置部門,分配角色,最后提交,即可創(chuàng)建成功。(*為必填信息,其他選填。)添加用戶和權(quán)限分配如圖11所示:

圖11 添加用戶界面
4.3.2修改用戶
當(dāng)管理員想要修改用戶的信息時(shí),需要在用戶管理界面點(diǎn)擊想要修改的用戶的姓名,頁面就會跳轉(zhuǎn)到該用戶的信息界面,管理員可以對工號、姓名、所屬部門等信息進(jìn)行修改,權(quán)限也可以重新分配,點(diǎn)擊保存后新的用戶信息將會在數(shù)據(jù)庫表中進(jìn)行更新并保存,如果用戶的密碼忘記可以通過管理員重置密碼,密碼將重置為123456。效果如圖12所示:
????? 修改用戶如果修改了用戶名,判斷是否該用戶名與其他用戶沖突,主要代碼如下:

圖12 修改用戶信息界面
4.3.3刪除用戶
此文檔管理系統(tǒng)刪除用戶的方法為,在系統(tǒng)進(jìn)行修改用戶信息時(shí),角色分配中設(shè)置了離職員工,如果員工離職,則修改為離職員工,那么此賬號將無法登錄,顯示賬號已鎖。頁面效果展示如圖13所示:

圖13 離職員工展示圖
4.4 文檔管理
4.4.1文檔上傳
文檔管理為文檔管理系統(tǒng)最核心的部分,根據(jù)用戶登錄時(shí)的不同的身份,用戶擁有不同的操作權(quán)限。首先對于所有用戶,都可以進(jìn)行文檔上傳、下載,文檔在一審和二審的過程中,一審員和二審員可以查看該文件的具體內(nèi)容。上傳文檔頁面效果展示如圖14所示:

圖14 上傳文檔
4.4.2 文檔審批
其中對于監(jiān)察稽核員,又分為一審員和二審員兩種子角色身份,對文件進(jìn)行審批,根據(jù)子角色的不同文檔審批分為一審和二審,且審批過程中能查看所有人的文檔內(nèi)容;對于系統(tǒng)管理員,可以對文件進(jìn)行終審,也可以選擇將文檔退回但不能對自身上傳的文件進(jìn)行終審。頁面效果展示如圖15所示:

圖15 文檔審核
4.4.3文檔信息導(dǎo)出
監(jiān)察稽核員能將所有用戶上傳文檔信息(包括文檔編號、文件名、文件路徑、上傳用戶、上傳時(shí)間)導(dǎo)出至excle中,頁面效果如圖16所示:

圖16文檔信息導(dǎo)出至excle
五,項(xiàng)目總結(jié)
本文討論了基于NoSQL非關(guān)系數(shù)據(jù)庫數(shù)據(jù)存儲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),以海量文檔的存儲、管理為背景,提出了基于MongoDB的文檔管理系統(tǒng)。根據(jù)登錄對象的身份權(quán)限,可以進(jìn)行文檔上傳、下載、審批等功能。作為非關(guān)系數(shù)據(jù)技術(shù)中的MongoDB數(shù)據(jù)存儲系統(tǒng),具備了NoSQL的高性能、高擴(kuò)展性的顯著特性,而作為最像關(guān)系型數(shù)據(jù)庫的非關(guān)系數(shù)據(jù)庫,使其具備了傳統(tǒng)的SQL關(guān)系型數(shù)據(jù)庫系統(tǒng)的一些特征。對于本文的所討論的基于MongoDB的文檔管理系統(tǒng),具有最佳的適用性。
對新技術(shù)的探索和研究總是坎坷的,從零開始學(xué)習(xí)MongoDB數(shù)據(jù)庫,借閱的書籍,搜索的資料,都見證著我的努力?;贛ongoDB的文檔管理系統(tǒng),雖然相比于其他類似的系統(tǒng),在性能和擴(kuò)展性上都展現(xiàn)出了一定的優(yōu)越性,但是依然存現(xiàn)一些不足和局限性。希望在將來可以對課題進(jìn)一步的研究, 將系統(tǒng)進(jìn)行完善。