国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

非關系型數(shù)據(jù)庫在企業(yè)社交網(wǎng)絡中的設計

2018-02-26 07:53石春菊孫麗霞
電子技術與軟件工程 2018年15期

石春菊 孫麗霞

摘要

隨著企業(yè)社交網(wǎng)越來越被企業(yè)所重視和應用,企業(yè)社交網(wǎng)絡平臺中涉及到的數(shù)據(jù)容量也越來越大、數(shù)據(jù)之間的關系也越來越復雜,關系型數(shù)據(jù)庫在處理這些大量數(shù)據(jù)和復雜數(shù)據(jù)時已經非常吃力,再加上Oralce數(shù)據(jù)庫擴展優(yōu)化所花費的費用越來越高.本文基于以上原因,提出設計企業(yè)社交網(wǎng)絡平臺時,采用非關系型數(shù)據(jù)庫圖數(shù)據(jù)庫和T級存儲容量的MongoDB數(shù)據(jù)庫存儲數(shù)據(jù)的方法。

【關鍵詞】企業(yè)社交網(wǎng)絡 Neo4j MongoDB

1 引言

近年來,在工業(yè)4.0的推動下,傳統(tǒng)制造企業(yè)轉向智能化智造,將互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、信息技術和智能智造互聯(lián)到一起,形成新的工業(yè)設計、生產、包裝、銷售、管理于一體的智能化企業(yè)。從制造業(yè)的分布圖上來看,企業(yè)分布區(qū)域較大,如何將企業(yè)互聯(lián)起來,實現(xiàn)企業(yè)協(xié)作、新機會挖掘、企業(yè)推薦、企業(yè)社交。在這個需求下,企業(yè)社交網(wǎng)絡如國外的Chatter、Yammer、Lotus Connections、Share Point和國內的金蝶云之家、微部落、用于人才管理的TITA以及操作簡單如微信的推事本等。這些企業(yè)社交網(wǎng)絡工具方便了員工間的交流和協(xié)同,提高了部門間的協(xié)作處理事物的速度,實現(xiàn)了資源共享,提高了辦公效率,同時也可以為企業(yè)挖掘新的客戶,成為企業(yè)營銷的新方式。由于企業(yè)社交中所用到的數(shù)據(jù)關系密切,如企業(yè)之間的供應關系、企業(yè)員工關系、產品、采購件和業(yè)務等,像這樣的數(shù)據(jù)若采用關系型數(shù)據(jù)庫的形式進行存儲,數(shù)據(jù)冗余將會變的很大,而且當查詢復雜企業(yè)供應關系時,即多表關聯(lián)查詢時極其不易查詢,隨著互聯(lián)網(wǎng)2.0的興起,網(wǎng)站設計均是采用動態(tài)頁面架構,需要實時生成動態(tài)頁面和提供動態(tài)信息,要求數(shù)據(jù)庫并發(fā)負載非常高,往往要達到每秒上萬次讀寫請求,關系型數(shù)據(jù)庫應付上萬次的查詢請求還勉強能應付,但要處理上萬次的寫數(shù)據(jù)請求,就無法承受了。關系型數(shù)據(jù)庫的擴展是采用縱向擴展方式,成本較高,數(shù)據(jù)模型的擴展不靈活,水平擴展能力較差。而基于Web架構的需求中,往往需要水平橫向擴展,通過增加服務器節(jié)點的方式實現(xiàn)數(shù)據(jù)的遷移。而且關系型數(shù)據(jù)庫在處理超大規(guī)模數(shù)據(jù)上的響應時間和數(shù)據(jù)處理速度都跟不上客戶需求。基于關系型數(shù)據(jù)庫的以上缺點,非關系型數(shù)據(jù)庫應運而生。非關系型數(shù)據(jù)庫是一種區(qū)別于關系型數(shù)據(jù)庫的一種數(shù)據(jù)庫管理方式,它采用的數(shù)據(jù)模型是類似于鍵/值、文檔、列簇的存儲模型,水平擴展靈活性高,并且支持海量數(shù)據(jù)存儲。具體的非關系型數(shù)據(jù)庫主要有以下四大類,一類是鍵值存儲數(shù)據(jù)庫,它主要使用哈希表的方式進行存儲,通過特定的鍵和指針指向數(shù)據(jù);一類是列存儲數(shù)據(jù)庫,通過鍵指向多列的方式存儲數(shù)據(jù);一類是文檔型數(shù)據(jù)庫,通過建立鍵值存儲模型存儲數(shù)據(jù),典型的文檔數(shù)據(jù)庫是MongoDB;一類是圖形數(shù)據(jù)庫,通過靈活的圖數(shù)據(jù)模型存儲復雜關系的數(shù)據(jù)。

企業(yè)社交網(wǎng)絡不僅打破了傳統(tǒng)的企業(yè)之間的交流方式,同時突破了企業(yè)員工之間的信息交互方式,企業(yè)間、企業(yè)與員工的信息交互不僅包括了文字之間的交互,同時包括產品信息的推廣、關聯(lián)、圖片、附件及實時信息的更新等。目前關系型數(shù)據(jù)庫雖為主流,但因其在網(wǎng)站規(guī)模發(fā)展中遇到的瓶頸越來越多,如事務一致性、讀寫實時性、復雜多表查詢等,使得眾多開發(fā)者轉向了非關系型數(shù)據(jù)庫的使用。

在企業(yè)社交網(wǎng)絡中存儲的數(shù)據(jù)主要有2大部分,一部分是以企業(yè)為中心的自我網(wǎng)絡中數(shù)據(jù)的存儲,如企業(yè)供應商關系、業(yè)務量、業(yè)務類型、產品緊密度、產品與員工的責任制關系等。在設計中這一部分數(shù)據(jù)要求可擴展性及更新效率較高,采用圖數(shù)據(jù)庫進行存儲。另一部分數(shù)據(jù)就是企業(yè)郵箱中數(shù)據(jù)的存儲,由于郵箱中的數(shù)據(jù)的大小、內容不是固定單一的,為方便管理存儲采用面向文檔式的數(shù)據(jù)庫存儲方式。

2 非關系型數(shù)據(jù)庫

2.1 圖數(shù)據(jù)庫

圖數(shù)據(jù)庫是利用圖結構進行存儲和查詢數(shù)據(jù)的一種非關系型數(shù)據(jù)庫,典型的圖數(shù)據(jù)庫是Neo4j數(shù)據(jù)庫,它是基于圖論算法的數(shù)據(jù)庫,是由節(jié)點和關系組成的,節(jié)點是以key-value的形式存儲的,它的處理完全是事務性的。關系連接相應的節(jié)點,表示節(jié)點之間的某種聯(lián)系。節(jié)點關系是一個簡單的有向無環(huán)圖。如在制造業(yè)中,我們要表示螺絲是企業(yè)的某位員工生產的,并供給某些企業(yè)用于生產某些產品。可用圖1表示:從這個圖中可以看出圖數(shù)據(jù)庫是是節(jié)點和關系的集合,是以圖做為數(shù)據(jù)模型的。在節(jié)點和關系上都有相應屬性值,屬性值是可以任意多個的,它的存儲是采用的json格式。

Neo4j數(shù)據(jù)庫是一個完全兼容增刪改查、基于圖論算法的圖形數(shù)據(jù)庫。Noe4j數(shù)據(jù)庫的圖形結構導致其數(shù)據(jù)結構是可有可無的,它在數(shù)據(jù)建模方面常常用于針對復雜領域的數(shù)據(jù)集,因此常常被用于社交網(wǎng)絡、深度推薦算法等領域的數(shù)據(jù)建模。Neo4j數(shù)據(jù)庫的規(guī)模是自適應的,其讀取性能與節(jié)點的個數(shù)無關,即圖的大小不能影響其讀取性能,neo4j數(shù)據(jù)庫的讀性能可以達到每毫秒遍歷2000多節(jié)點關系。圖數(shù)據(jù)庫的查詢語言是Cypher語言。應用程序的編程接口則是通過REST API接口進行訪問的,采用的語句是面向對象的Java語言。

企業(yè)社交網(wǎng)絡中的圖數(shù)據(jù)庫的節(jié)點標簽和關系總圖如圖2所示。

每一節(jié)點標簽下,可以包含若干多個節(jié)點。創(chuàng)建用戶和企業(yè)標簽節(jié)點的語句,例如

CREATE(t1:T{name:”Employee”)

CREATE(t2:T{name:”Enterprise”)

創(chuàng)建企業(yè)員工節(jié)點N,

CREATE(n:Employee(name:'小明,address:,status:NORMAL,createTime:,IastModifyTime:,.mail:xiaoming@126.com' ,phone:' 8985424'}),節(jié)點p中的屬性包括:adress、status、createTime、lastModifyTime、name、email、phone。

創(chuàng)建企業(yè)節(jié)點E,

CREATE(e:Enterprise{mc:魯銀集團禹城粉未治金制品有限公司,address:山東省,business:粉未治金件,biaozhun: ,source:WEB,status:NORMAL,createTime:,lastModifyTime:,email:,phone:,fax:,miaoshu:})

創(chuàng)建員工、企業(yè)之間關系,用戶隸屬于企業(yè)

CREATE(n)-[:Has employee]->(e)

上面的語句僅僅是創(chuàng)建一個用戶、企業(yè),并建立關系。節(jié)點的創(chuàng)建和關系的建立本系統(tǒng)中均是利用java方法批量創(chuàng)建的。

2.2 MongoDB

MongoDB是一個面向文檔的數(shù)據(jù)庫,介于關系和非關系型數(shù)據(jù)庫之間的一種數(shù)據(jù)庫,它采用的數(shù)據(jù)存儲方式是接近于JSON的BJSON格式存儲的。MongoDB可以存儲T級數(shù)據(jù)庫,它采用的是橫向擴展數(shù)據(jù)庫的存儲方式,通過分區(qū)的方式將數(shù)據(jù)分散到更多機器上,就是將數(shù)據(jù)添加到集群中即可,橫向擴展的優(yōu)點是即便宜又易于擴展。MongoDB的數(shù)據(jù)庫擴展方式對于用戶來說是透明的,用戶只需將精力放在編寫應用程序上即可。MongodDB中的主鍵均由客戶端的驅動程序自動創(chuàng)建。

MongoDB也是采用key-value的形式進行存儲,多個key-value組成文檔,一組文檔組成集合,文檔相當于關系數(shù)據(jù)庫中的一行,集合相當于一個表,集合是動態(tài)模式的。集合中的文檔可以是各式各樣的。多個集合組成數(shù)據(jù)庫,一般常將類型相同的文檔存于同一個集合里,可提高查詢速度。MongoDB的語法格式同sq1格式類似,主要有以下命令show dbs查看數(shù)據(jù)庫;show collections查看集合;createcollection創(chuàng)建一個集合;insert插入數(shù)據(jù);find查找數(shù)據(jù);update修改數(shù)據(jù);remove刪除數(shù)據(jù)。

企業(yè)社交網(wǎng)絡中的有一重要的數(shù)據(jù)管理就是郵件的管理,由于郵件管理部分中有附件,收發(fā)郵件中的附件的大小不確定,有時幾k,有時幾M甚至有幾G的附件存在,若采用關系型數(shù)據(jù)庫進行存儲的話,一般的方式是在在關系型數(shù)據(jù)庫中存儲附件名,通過附件名再查找服務器中的附件實現(xiàn)下載,這種方式使的查詢和下載的時間和空間復雜度均有所增加。因此在企業(yè)社交網(wǎng)絡中附件存儲采用的是文檔數(shù)據(jù)庫的存儲方式。MongoDB中單個文檔限制為4MB,但組成集合的文檔的數(shù)量是沒有限制。因為存儲的文件的大小理論上講也是沒有限制的,MongoDB自帶分片機制,在存儲大文件時會自動將大文件分片存儲。本系統(tǒng)中的附件集合如圖3所示。

附件集合主要存儲系統(tǒng)中的附件資源,附件資源的類型有文本文檔、聲音、圖片、視頻及其它類型的文件,filename是附件的名稱,length附件的長度,uploadDate是附件的上傳日期。

3 小結

企業(yè)社交網(wǎng)絡中所涉及到的這兩種非關系型數(shù)據(jù)庫,主要的目的是為了能充分利用Neo4j數(shù)據(jù)庫和MongoDB數(shù)據(jù)庫的優(yōu)點,在企業(yè)社交網(wǎng)絡平臺中數(shù)據(jù)之間的關系較多,而且在數(shù)據(jù)處理過程中會建立或解除關系,如職工歸屬關系、企業(yè)供應關系等。Neo4j提供了直觀的可視化界面,以圖論為基礎、鍵值對的數(shù)據(jù)存儲方式、水平擴展靈活,對于數(shù)據(jù)的增刪改查可通過REST服務實現(xiàn)。MongoDB文檔數(shù)據(jù)庫則以文檔作為最小的單位進行存儲,通過鍵定位一個文檔,同屬于鍵值數(shù)據(jù)庫的存儲方式。關系型數(shù)據(jù)庫與非關系型數(shù)據(jù)庫形成了一種互補式的關系,大部分系統(tǒng)中兩者都會用到,并且無法取代,而對于企業(yè)來講,高性能的數(shù)據(jù)庫的存儲方式、方便系統(tǒng)擴展才是設計人員所追求的,選取合適的數(shù)據(jù)庫存儲方式不僅可以提升系統(tǒng)性能,更能保證系統(tǒng)的高安全性和高可用性。直觀的數(shù)據(jù)存儲方式同時也便于系統(tǒng)的擴展。

參考文獻

[1]張文盛,鄭漢華.基于MongoDB構建高性能網(wǎng)站技術研究[J].吉林師范大學學報(自然科學版),2013(01):123-127.

[2]王余藍.圖形數(shù)據(jù)庫NE04J與關系數(shù)據(jù)庫的比較研究[J].現(xiàn)代電子技術,2012(20).

[3]王慧孜.范煒.WANG HuiZi.FAN Wei圖數(shù)據(jù)庫在標簽系統(tǒng)中的應用研究[C].數(shù)字圖書館論壇,2015(04).

[4]王光磊.MongoDB數(shù)據(jù)庫的應用研究和方案優(yōu)化[J].中國科技信息,2011(20):93-94.

罗源县| 承德市| 丰顺县| 江安县| 德钦县| 渭南市| 滨州市| 通化县| 芷江| 江安县| 文登市| 屏东市| 武城县| 石河子市| 福安市| 文山县| 裕民县| 邢台县| 辽中县| 海门市| 新建县| 信阳市| 博兴县| 古田县| 寿阳县| 石林| 三原县| 绿春县| 山东省| 金门县| 深水埗区| 遵义市| 和龙市| 浑源县| 湟中县| 监利县| 历史| 龙岩市| 西峡县| 玛曲县| 克拉玛依市|