版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、上海海事大學SHANGHAI MARITIME UNIVERSITY數(shù)據(jù)庫實現(xiàn)技術課程報告題 目:即時通訊聊天記錄數(shù)據(jù)庫設計 專 業(yè): 計算機技術 年 級: 2014 學 號: 201430310020 姓 名: 倪瑩瑩 信息工程學院 2015 年5 月30 日目錄1 選題31.1選題題目31.2 小組成員32 數(shù)據(jù)庫管理系統(tǒng)設計目標32.1應用范圍32.2需求分析33文件的組織結構(元數(shù)據(jù)的存儲)33.1 數(shù)據(jù)的存儲方式33.2 數(shù)據(jù)的存儲內(nèi)容43.3 存儲原理圖43.4 聊天記錄的存儲44查詢優(yōu)化54.1舉例54.2 查詢聊天記錄的過程54.3 優(yōu)化65多用戶設計65.1 事務65.2 鎖
2、75.3 多用戶并發(fā)控制76問題及體會86.1 問題86.2 體會91 選題1.1選題題目即時通訊聊天記錄數(shù)據(jù)庫設計1.2 小組成員學號姓名職責201430310020倪瑩瑩完成聊天記錄數(shù)據(jù)庫的整體設計2 數(shù)據(jù)庫管理系統(tǒng)設計目標2.1應用范圍本課題在結合行業(yè)自身的特點的同時,也充分考慮到設計者自身的條件與現(xiàn)有技術成熟度的基礎上做出了一款適合大多數(shù)人使用的數(shù)據(jù)庫,它可以作為公司內(nèi)部的聊天系統(tǒng)來使用,這樣安全高效。2.2需求分析文件分類:文本圖片文件聊天記錄數(shù)據(jù)庫主要包含兩大部分:存儲和查詢。存儲就包括文件的存儲方式和數(shù)據(jù)結構等。查詢聊天記錄這一塊要實現(xiàn)兩個功能:1.實現(xiàn)私聊和群聊的聊天記錄的查詢
3、;2.實現(xiàn)文本,圖片和文件的單獨查詢。具體的結構如下:存儲入口(索引)數(shù)據(jù)庫需求時間結構查詢對象3文件的組織結構(元數(shù)據(jù)的存儲)3.1 數(shù)據(jù)的存儲方式由于數(shù)據(jù)量龐大,所有數(shù)據(jù)的存儲采用順序存儲方式,按照日期每天在數(shù)據(jù)庫中新建一個表用來存儲這些信息。3.2 數(shù)據(jù)的存儲內(nèi)容聊天記錄包括發(fā)送人、接受人、發(fā)送時間以及發(fā)送內(nèi)容等字段。按照時間每天系統(tǒng)新建一個表格用來存放每天的聊天記錄。設計的表格如下:字段數(shù)據(jù)類型可空主鍵外鍵說明IdInt否是否信息記錄的唯一標識,自增SenderIdInt否否否用戶標識ReceiverIdInt否否是接受者標識(個人或者群組)GroupchatChar(1)否否否判斷是
4、否是群聊SendtimeDataTime否否否記錄時間ContentTypeVarchar(50)否 否是判斷文件的類型文件類型:字段數(shù)據(jù)類型可空主鍵外鍵說明ContentTypeInt否是否文件類型contentVarchar(50)是否否字符串其中文件類型一共有三類:001代表文本,002代表圖片,003代表文件群組集合:字段數(shù)據(jù)類型可空主鍵外鍵說明GroupIdInt否是否群組號GroupmemberVarchar(1000)否否否群組成員3.3 存儲原理圖數(shù)據(jù)庫客戶端A 客戶端B服務器 客戶端C3.4 聊天記錄的存儲聊天內(nèi)容一般是客戶端和服務器進行交互的??梢允潜镜刂苯哟嫒霐?shù)據(jù)庫,但是
5、如果把聊天記錄提交給服務器,然后通過服務器存入數(shù)據(jù)庫,這樣來講會相對安全一些。客戶端將聊天記錄提交給服務器的時候一般就已經(jīng)知道文件的格式,傳給服務器就兩種方式一種是txt,另外一種便是url,url又分為兩種,一種可能圖片,另一種可能是文件。具體的過程如下:如果客戶端傳給服務器的是文本形式,那么它的文件形式就是001,服務器存入數(shù)據(jù)庫中;如果客戶端傳給服務器的是圖片格式,傳給服務器的的是客戶端的文件的地址(本地地址),例如:F:filepicturea.jpg ,然后以流的方式將圖片以二進制文件的形式傳給服務器的某個路徑,例如:E:filepicture,上傳服務器的時候可以利用后綴名判斷是否
6、為圖片的格式,如果是文件形式標識為002,寫入數(shù)據(jù)庫的時候就直接寫服務器上的url;如果是文件的格式,標識為003,同樣以流的方式傳給服務器,假設傳到服務器上的E:filesoundandvideo下,然后將文件的全路徑寫入數(shù)據(jù)庫。查詢的時候通過路徑,到服務器的位置上直接查詢,讀取即可。4查詢優(yōu)化4.1舉例2015-5-29(每天一張表,時間是唯一的)IdSenderIdReceiverIdGroupchatSendtimeContentType11234567774515true13:14:150012123456778955false13:16:150033778955123456fals
7、e13:18:150034778955123456false13:19:15002其中文件類型一共有三類:001代表文本,002代表圖片,003代表文件文件類型ContentTypeContent001你好002E:programfilepicturea(url1)003E:programfilesoundandvideob(url2)群組群組號群組成員7774515123456 124562 4561428844544123545 125485 4564514.2 查詢聊天記錄的過程不論是單聊還是群聊都可以將接受者看成是一個對象,只是這個對象可能是看成是一對一的聊天,這樣就有一個接受者可一個
8、用戶,也可以是一個群組。首先利用groupchat判斷是否是群聊。如果不是,就是單聊一對一,查詢聊天記錄時只需要利用時間索引,進入查詢那天的表,然后在利用SenderId和ReceiverId以及具體時間查詢即可;如果是群聊,那么只要是群里面的成員都是可以查詢聊天記錄的,首先利用時間索引定位到某天,然后利用ReceiverId(群組)查詢,然后按照時間排序即可這樣聊天記錄就出現(xiàn)了,但是有個問題就是只有群里面的成員才有資格查詢,當查詢記錄的時候可以對查詢者進行驗證,群組成員以字符串的形式存儲,利用程序來判定查詢者是不是群組成員。這樣就能達到私聊和群聊聊天記錄的查詢。假設我要查詢2015-5-29
9、,發(fā)送著為123456的所有聊天記錄,只需要先定位到2015-5-29這張表,然后再定位到發(fā)送人,就能查詢出和所有人的聊天記錄,;如果要查詢?nèi)毫挠涗?,只要定位到接受?774515,或者沒有發(fā)送消息,只是查詢自己所在群的聊天記錄,首先只要判定是群聊,然后到群組表中匹配是否是群成員,如果是,查詢出聊天記錄即可。4.3 優(yōu)化數(shù)據(jù)庫在物理設備上的存儲結構與存取方法就是數(shù)據(jù)庫的物理結構,它依賴于選定的數(shù)據(jù)庫管理系統(tǒng)。為一個給定的邏輯數(shù)據(jù)模型選取一個最合適的應用環(huán)境的物理結構的過程,就是數(shù)據(jù)庫的物理設計。這一階段主要的任務是確定數(shù)據(jù)庫的物理結構,并不斷的進行優(yōu)化處理,主要建立索引。 以下是建立
10、的索引,其功能和運用如描述:名字描述Selete_on_ DateTime建立在每張表名上的索引UserId建立發(fā)送信息者的索引此外數(shù)據(jù)庫將聊天記錄分塊,查詢的時候設置一個時間段每10分鐘一個塊,當然還可以采用分頁的方式,這樣更加快捷,視覺效果也更好,聊天記錄塊的格式如下:發(fā)送者:接受者:發(fā)送時間:標識:文件類型內(nèi)容:5多用戶設計5.1 事務事務一般有兩種類型。一種是系統(tǒng)提供的事務,另一種是用戶定義的事務。系統(tǒng)提供的事務是指在執(zhí)行某些語句時,一條語句就是一個事務。例如:UPDATE STUDENT Set CLASS=700l,這條語句本身就構成一個事務。由于沒有條件限制,所以修改的就是表中的
11、全部數(shù)據(jù),要么全部修改成功,要么全部失畋。而對于另外一種事務用戶自定義的事務來說,使用它時就必須明確地使用事務調(diào)用語句米執(zhí)行事務。事務的叫確結束語句為:COMMIT語句和ROLLBACK語句。其中COMMIT語句是提交語句,表示將爭部完成的語句明確地提交到數(shù)據(jù)庫中。ROLLBACK語句足取肖語句該語句將事務的操作全部取消,即表示事務操作失敗。5.2 鎖鎖就是防止其他事務訪問指定資源的手段。鎖是實現(xiàn)并發(fā)控制的主要方法,是多個用戶能夠同時操縱同一個數(shù)據(jù)庫中的數(shù)據(jù)而小發(fā)生數(shù)據(jù)不一致現(xiàn)象的重要保證。通常說,使用鎖可以防止臟讀(Dirty Read),不可重復讀(Unrepeatable Read)和幻
12、覺讀(Phantom Read)。所以為了優(yōu)化系統(tǒng)的并發(fā)性,減少多個用戶同時操作系統(tǒng)帶來的問題,就應該根據(jù)事務的大小和系統(tǒng)活動的程度,鎖定小同的資源??梢枣i定數(shù)據(jù)表中單獨的一行,帶關鍵字的行(Key),頁對象(Page),通常8Kb的數(shù)據(jù)頁或者索引頁,以及連續(xù)的幾個8Kb的數(shù)據(jù)或索引頁(Extent),還可以鎖定整個數(shù)據(jù)表(Table)或者數(shù)據(jù)庫(DB)。當可以鎖定的對象封鎖粒度較小時,比如鎖定行或頁對象時,提高了發(fā)控制能力,但是在增加鎖的情況下,必定會增加系統(tǒng)的開銷。當可“鎖定的對象具有較大的封鎖粒度時,比如說鎖定整個表或肯鎖定整個數(shù)據(jù)庫時,降低了并發(fā)控制的能力,但是相對行鎖定和頁鎖定減少r
13、系統(tǒng)的開銷這樣可以管理較少的鎖對象。在實時數(shù)據(jù)的處理過程中,應該選擇適當?shù)姆怄i粒度,避免采用較小的封鎖的粒度增加系統(tǒng)的開銷使實時性能下降,也要避免采用較大的封鎖粒度時,沖突機會變大,影響實時性能。5.3 多用戶并發(fā)控制在聊天記錄數(shù)據(jù)庫系統(tǒng)的開發(fā)過程中,有時候需要將鎖機制與事務的使用結合起來才能更好保證系統(tǒng)在多用戶共同使用的情況下保持良好的并發(fā)性。每天的日期作為表的標識,保證信息表的唯一性。在實際的使用中是由多個群成員具有相同的使用權限,當某個群成員發(fā)送某條信息時,系統(tǒng)要根據(jù)固定的規(guī)則對該信息自動編號,信息編號的格式為:WX表一發(fā)送者一接受者一信息類型信息編號,其中關鍵是編號的生成。查詢規(guī)則是:
14、首先定位到某一天的那張表格,再查找文件類型,再根據(jù)時間,找到信息記錄。按照這樣的計算規(guī)則,如果是單用戶使用就是沒有問題,但是如果在多用戶使用的情況下,假如兩個人同時存儲時會產(chǎn)生同樣的編號,存儲時就有可能造成讀寫沖突突造成其中一個信息的寫入失敗。解決該問題時,作者曾設想:系統(tǒng)為最先接收信息的用戶的編輯工作啟動一個事務,設置它的隔離級別,讓這樣的事務隔離級別一直保持到事務的結束,再將其改回為Read Committed,也就是從一條信息的編輯錄入到最后存儲一直保持對表獨占狀態(tài)。但是因此會帶來一個負面的結果就是其他用廣的編輯工作不能被立即啟動,必須等待前一個用戶的編輯工作結束才能開始T作,而且,通常
15、一條信息錄入條日比較多,編輯錄入的時間可能會比較長。所以,如果按這樣解決的話,沖突確實沒有了,但系統(tǒng)的并發(fā)性就降低了這是我們不希望看到的。為此,必須引入鎖的使用。具體解決辦法如下所示:(1)事務并不在用戶編輯工作中啟動。這樣多個用戶的信息錄入編輯工作就只會在自己主機中進行,相互之間不存在沖突的問題;(2)在將編輯的結果寫回數(shù)據(jù)庫動作之前啟動事務全部寫回動作結束之后結束事務,發(fā)生異常時回滾事務;(3)在事務的執(zhí)行加入生成信息編號的算法;(4)在生成信息編號的過程中使用排它鎖方式鎖定信息表。其他用戶不能訪問該表。6問題及體會6.1 問題1. 如何對系統(tǒng)的查詢功能進行優(yōu)化?答:添加索引。2. 如何確
16、定數(shù)據(jù)存儲的內(nèi)容?答:通過已經(jīng)了解的即時聊天軟件,分析所需要用的數(shù)據(jù)以及數(shù)據(jù)類型,然后進行存儲。3.什么是索引?答:索引是對數(shù)據(jù)庫表中一個或多個列(例如,employee 表的姓氏 (lname) 列)的值進行排序的結構。4.增加索引有如此多的優(yōu)點,索引的創(chuàng)建是不是越多越好呢?答:增加索引也有許多不利的一個方面。(1)創(chuàng)建索引和維護索引要耗費時間,這種時間隨著數(shù)據(jù)量的增加而增加。 (2)索引需要占物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。 (3)當對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護
17、,這樣就降低了數(shù)據(jù)的維護速度。5.哪些列上可以創(chuàng)建索引?答:如下列上可以創(chuàng)建索引:(1)在經(jīng)常需要搜索的列上,可以加快搜索的速度;在作為主鍵的列上,強制該列的唯一性和組織表中數(shù)據(jù)的排列結構; (2)在經(jīng)常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度; (3)在經(jīng)常需要根據(jù)范圍進行搜索的列上創(chuàng)建索引,因為索引已經(jīng)排序,其指定的范圍是連續(xù)的; (4)在經(jīng)常需要排序的列上創(chuàng)建索引,因為索引已經(jīng)排序,這樣查詢可以利用索引的排序,加快排序查詢時間; (5)在經(jīng)常使用在WHERE子句中的列上面創(chuàng)建索引,加快條件的判斷速度。6.2 體會在設計階段遇到了許多的問題,比如所如何存儲數(shù)據(jù),如何查詢?nèi)绾蝺?yōu)化
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡安全投標售后保障
- 玩具店內(nèi)部裝修工裝施工合同
- 礦石材料標簽規(guī)范
- 車站監(jiān)控系統(tǒng)施工合同
- 農(nóng)業(yè)用肥料標簽管理辦法
- 鋁廠混凝土施工合同
- 咨詢公司財務規(guī)劃策略
- 環(huán)保技術開發(fā)招標辦法
- 酒類批發(fā)市場衛(wèi)生條例
- 溫泉公園施工合同
- 普外科醫(yī)療組長競聘演講
- 北京市朝陽區(qū)2022-2023學年三年級上學期英語期末試卷
- GB/T 9755-2024合成樹脂乳液墻面涂料
- 嗶哩嗶哩MATES人群資產(chǎn)經(jīng)營白皮書【嗶哩嗶哩】
- 【歷史】第一、二單元測試題2024~2025學年統(tǒng)編版七年級歷史上冊
- 【企業(yè)盈利能力探析的國內(nèi)外文獻綜述2400字】
- 全國職業(yè)院校技能大賽高職組(智慧物流賽項)備賽試題庫(含答案)
- 職業(yè)生涯規(guī)劃-體驗式學習智慧樹知到期末考試答案章節(jié)答案2024年華僑大學
- 醫(yī)學生創(chuàng)新創(chuàng)業(yè)基礎智慧樹知到期末考試答案2024年
- 大學生國家安全教育智慧樹知到期末考試答案2024年
- 同濟大學信紙
評論
0/150
提交評論