數(shù)據(jù)庫設(shè)計(jì) 倪瑩瑩 201430310020_第1頁
數(shù)據(jù)庫設(shè)計(jì) 倪瑩瑩 201430310020_第2頁
數(shù)據(jù)庫設(shè)計(jì) 倪瑩瑩 201430310020_第3頁
數(shù)據(jù)庫設(shè)計(jì) 倪瑩瑩 201430310020_第4頁
數(shù)據(jù)庫設(shè)計(jì) 倪瑩瑩 201430310020_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、上海海事大學(xué)SHANGHAI MARITIME UNIVERSITY數(shù)據(jù)庫實(shí)現(xiàn)技術(shù)課程報(bào)告題 目:即時(shí)通訊聊天記錄數(shù)據(jù)庫設(shè)計(jì) 專 業(yè): 計(jì)算機(jī)技術(shù) 年 級: 2014 學(xué) 號: 201430310020 姓 名: 倪瑩瑩 信息工程學(xué)院 2015 年5 月30 日目錄1 選題31.1選題題目31.2 小組成員32 數(shù)據(jù)庫管理系統(tǒng)設(shè)計(jì)目標(biāo)32.1應(yīng)用范圍32.2需求分析33文件的組織結(jié)構(gòu)(元數(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多用戶設(shè)計(jì)65.1 事務(wù)65.2 鎖

2、75.3 多用戶并發(fā)控制76問題及體會86.1 問題86.2 體會91 選題1.1選題題目即時(shí)通訊聊天記錄數(shù)據(jù)庫設(shè)計(jì)1.2 小組成員學(xué)號姓名職責(zé)201430310020倪瑩瑩完成聊天記錄數(shù)據(jù)庫的整體設(shè)計(jì)2 數(shù)據(jù)庫管理系統(tǒng)設(shè)計(jì)目標(biāo)2.1應(yīng)用范圍本課題在結(jié)合行業(yè)自身的特點(diǎn)的同時(shí),也充分考慮到設(shè)計(jì)者自身的條件與現(xiàn)有技術(shù)成熟度的基礎(chǔ)上做出了一款適合大多數(shù)人使用的數(shù)據(jù)庫,它可以作為公司內(nèi)部的聊天系統(tǒng)來使用,這樣安全高效。2.2需求分析文件分類:文本圖片文件聊天記錄數(shù)據(jù)庫主要包含兩大部分:存儲和查詢。存儲就包括文件的存儲方式和數(shù)據(jù)結(jié)構(gòu)等。查詢聊天記錄這一塊要實(shí)現(xiàn)兩個功能:1.實(shí)現(xiàn)私聊和群聊的聊天記錄的查詢

3、;2.實(shí)現(xiàn)文本,圖片和文件的單獨(dú)查詢。具體的結(jié)構(gòu)如下:存儲入口(索引)數(shù)據(jù)庫需求時(shí)間結(jié)構(gòu)查詢對象3文件的組織結(jié)構(gòu)(元數(shù)據(jù)的存儲)3.1 數(shù)據(jù)的存儲方式由于數(shù)據(jù)量龐大,所有數(shù)據(jù)的存儲采用順序存儲方式,按照日期每天在數(shù)據(jù)庫中新建一個表用來存儲這些信息。3.2 數(shù)據(jù)的存儲內(nèi)容聊天記錄包括發(fā)送人、接受人、發(fā)送時(shí)間以及發(fā)送內(nèi)容等字段。按照時(shí)間每天系統(tǒng)新建一個表格用來存放每天的聊天記錄。設(shè)計(jì)的表格如下:字段數(shù)據(jù)類型可空主鍵外鍵說明IdInt否是否信息記錄的唯一標(biāo)識,自增SenderIdInt否否否用戶標(biāo)識ReceiverIdInt否否是接受者標(biāo)識(個人或者群組)GroupchatChar(1)否否否判斷是

4、否是群聊SendtimeDataTime否否否記錄時(shí)間ContentTypeVarchar(50)否 否是判斷文件的類型文件類型:字段數(shù)據(jù)類型可空主鍵外鍵說明ContentTypeInt否是否文件類型contentVarchar(50)是否否字符串其中文件類型一共有三類:001代表文本,002代表圖片,003代表文件群組集合:字段數(shù)據(jù)類型可空主鍵外鍵說明GroupIdInt否是否群組號GroupmemberVarchar(1000)否否否群組成員3.3 存儲原理圖數(shù)據(jù)庫客戶端A 客戶端B服務(wù)器 客戶端C3.4 聊天記錄的存儲聊天內(nèi)容一般是客戶端和服務(wù)器進(jìn)行交互的??梢允潜镜刂苯哟嫒霐?shù)據(jù)庫,但是

5、如果把聊天記錄提交給服務(wù)器,然后通過服務(wù)器存入數(shù)據(jù)庫,這樣來講會相對安全一些??蛻舳藢⒘奶煊涗浱峤唤o服務(wù)器的時(shí)候一般就已經(jīng)知道文件的格式,傳給服務(wù)器就兩種方式一種是txt,另外一種便是url,url又分為兩種,一種可能圖片,另一種可能是文件。具體的過程如下:如果客戶端傳給服務(wù)器的是文本形式,那么它的文件形式就是001,服務(wù)器存入數(shù)據(jù)庫中;如果客戶端傳給服務(wù)器的是圖片格式,傳給服務(wù)器的的是客戶端的文件的地址(本地地址),例如:F:filepicturea.jpg ,然后以流的方式將圖片以二進(jìn)制文件的形式傳給服務(wù)器的某個路徑,例如:E:filepicture,上傳服務(wù)器的時(shí)候可以利用后綴名判斷是否

6、為圖片的格式,如果是文件形式標(biāo)識為002,寫入數(shù)據(jù)庫的時(shí)候就直接寫服務(wù)器上的url;如果是文件的格式,標(biāo)識為003,同樣以流的方式傳給服務(wù)器,假設(shè)傳到服務(wù)器上的E:filesoundandvideo下,然后將文件的全路徑寫入數(shù)據(jù)庫。查詢的時(shí)候通過路徑,到服務(wù)器的位置上直接查詢,讀取即可。4查詢優(yōu)化4.1舉例2015-5-29(每天一張表,時(shí)間是唯一的)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判斷是否是群聊。如果不是,就是單聊一對一,查詢聊天記錄時(shí)只需要利用時(shí)間索引,進(jìn)入查詢那天的表,然后在利用SenderId和ReceiverId以及具體時(shí)間查詢即可;如果是群聊,那么只要是群里面的成員都是可以查詢聊天記錄的,首先利用時(shí)間索引定位到某天,然后利用ReceiverId(群組)查詢,然后按照時(shí)間排序即可這樣聊天記錄就出現(xiàn)了,但是有個問題就是只有群里面的成員才有資格查詢,當(dāng)查詢記錄的時(shí)候可以對查詢者進(jìn)行驗(yàn)證,群組成員以字符串的形式存儲,利用程序來判定查詢者是不是群組成員。這樣就能達(dá)到私聊和群聊聊天記錄的查詢。假設(shè)我要查詢2015-5-29

9、,發(fā)送著為123456的所有聊天記錄,只需要先定位到2015-5-29這張表,然后再定位到發(fā)送人,就能查詢出和所有人的聊天記錄,;如果要查詢?nèi)毫挠涗?,只要定位到接受?774515,或者沒有發(fā)送消息,只是查詢自己所在群的聊天記錄,首先只要判定是群聊,然后到群組表中匹配是否是群成員,如果是,查詢出聊天記錄即可。4.3 優(yōu)化數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)與存取方法就是數(shù)據(jù)庫的物理結(jié)構(gòu),它依賴于選定的數(shù)據(jù)庫管理系統(tǒng)。為一個給定的邏輯數(shù)據(jù)模型選取一個最合適的應(yīng)用環(huán)境的物理結(jié)構(gòu)的過程,就是數(shù)據(jù)庫的物理設(shè)計(jì)。這一階段主要的任務(wù)是確定數(shù)據(jù)庫的物理結(jié)構(gòu),并不斷的進(jìn)行優(yōu)化處理,主要建立索引。 以下是建立

10、的索引,其功能和運(yùn)用如描述:名字描述Selete_on_ DateTime建立在每張表名上的索引UserId建立發(fā)送信息者的索引此外數(shù)據(jù)庫將聊天記錄分塊,查詢的時(shí)候設(shè)置一個時(shí)間段每10分鐘一個塊,當(dāng)然還可以采用分頁的方式,這樣更加快捷,視覺效果也更好,聊天記錄塊的格式如下:發(fā)送者:接受者:發(fā)送時(shí)間:標(biāo)識:文件類型內(nèi)容:5多用戶設(shè)計(jì)5.1 事務(wù)事務(wù)一般有兩種類型。一種是系統(tǒng)提供的事務(wù),另一種是用戶定義的事務(wù)。系統(tǒng)提供的事務(wù)是指在執(zhí)行某些語句時(shí),一條語句就是一個事務(wù)。例如:UPDATE STUDENT Set CLASS=700l,這條語句本身就構(gòu)成一個事務(wù)。由于沒有條件限制,所以修改的就是表中的

11、全部數(shù)據(jù),要么全部修改成功,要么全部失畋。而對于另外一種事務(wù)用戶自定義的事務(wù)來說,使用它時(shí)就必須明確地使用事務(wù)調(diào)用語句米執(zhí)行事務(wù)。事務(wù)的叫確結(jié)束語句為:COMMIT語句和ROLLBACK語句。其中COMMIT語句是提交語句,表示將爭部完成的語句明確地提交到數(shù)據(jù)庫中。ROLLBACK語句足取肖語句該語句將事務(wù)的操作全部取消,即表示事務(wù)操作失敗。5.2 鎖鎖就是防止其他事務(wù)訪問指定資源的手段。鎖是實(shí)現(xiàn)并發(fā)控制的主要方法,是多個用戶能夠同時(shí)操縱同一個數(shù)據(jù)庫中的數(shù)據(jù)而小發(fā)生數(shù)據(jù)不一致現(xiàn)象的重要保證。通常說,使用鎖可以防止臟讀(Dirty Read),不可重復(fù)讀(Unrepeatable Read)和幻

12、覺讀(Phantom Read)。所以為了優(yōu)化系統(tǒng)的并發(fā)性,減少多個用戶同時(shí)操作系統(tǒng)帶來的問題,就應(yīng)該根據(jù)事務(wù)的大小和系統(tǒng)活動的程度,鎖定小同的資源??梢枣i定數(shù)據(jù)表中單獨(dú)的一行,帶關(guān)鍵字的行(Key),頁對象(Page),通常8Kb的數(shù)據(jù)頁或者索引頁,以及連續(xù)的幾個8Kb的數(shù)據(jù)或索引頁(Extent),還可以鎖定整個數(shù)據(jù)表(Table)或者數(shù)據(jù)庫(DB)。當(dāng)可以鎖定的對象封鎖粒度較小時(shí),比如鎖定行或頁對象時(shí),提高了發(fā)控制能力,但是在增加鎖的情況下,必定會增加系統(tǒng)的開銷。當(dāng)可“鎖定的對象具有較大的封鎖粒度時(shí),比如說鎖定整個表或肯鎖定整個數(shù)據(jù)庫時(shí),降低了并發(fā)控制的能力,但是相對行鎖定和頁鎖定減少r

13、系統(tǒng)的開銷這樣可以管理較少的鎖對象。在實(shí)時(shí)數(shù)據(jù)的處理過程中,應(yīng)該選擇適當(dāng)?shù)姆怄i粒度,避免采用較小的封鎖的粒度增加系統(tǒng)的開銷使實(shí)時(shí)性能下降,也要避免采用較大的封鎖粒度時(shí),沖突機(jī)會變大,影響實(shí)時(shí)性能。5.3 多用戶并發(fā)控制在聊天記錄數(shù)據(jù)庫系統(tǒng)的開發(fā)過程中,有時(shí)候需要將鎖機(jī)制與事務(wù)的使用結(jié)合起來才能更好保證系統(tǒng)在多用戶共同使用的情況下保持良好的并發(fā)性。每天的日期作為表的標(biāo)識,保證信息表的唯一性。在實(shí)際的使用中是由多個群成員具有相同的使用權(quán)限,當(dāng)某個群成員發(fā)送某條信息時(shí),系統(tǒng)要根據(jù)固定的規(guī)則對該信息自動編號,信息編號的格式為:WX表一發(fā)送者一接受者一信息類型信息編號,其中關(guān)鍵是編號的生成。查詢規(guī)則是:

14、首先定位到某一天的那張表格,再查找文件類型,再根據(jù)時(shí)間,找到信息記錄。按照這樣的計(jì)算規(guī)則,如果是單用戶使用就是沒有問題,但是如果在多用戶使用的情況下,假如兩個人同時(shí)存儲時(shí)會產(chǎn)生同樣的編號,存儲時(shí)就有可能造成讀寫沖突突造成其中一個信息的寫入失敗。解決該問題時(shí),作者曾設(shè)想:系統(tǒng)為最先接收信息的用戶的編輯工作啟動一個事務(wù),設(shè)置它的隔離級別,讓這樣的事務(wù)隔離級別一直保持到事務(wù)的結(jié)束,再將其改回為Read Committed,也就是從一條信息的編輯錄入到最后存儲一直保持對表獨(dú)占狀態(tài)。但是因此會帶來一個負(fù)面的結(jié)果就是其他用廣的編輯工作不能被立即啟動,必須等待前一個用戶的編輯工作結(jié)束才能開始T作,而且,通常

15、一條信息錄入條日比較多,編輯錄入的時(shí)間可能會比較長。所以,如果按這樣解決的話,沖突確實(shí)沒有了,但系統(tǒng)的并發(fā)性就降低了這是我們不希望看到的。為此,必須引入鎖的使用。具體解決辦法如下所示:(1)事務(wù)并不在用戶編輯工作中啟動。這樣多個用戶的信息錄入編輯工作就只會在自己主機(jī)中進(jìn)行,相互之間不存在沖突的問題;(2)在將編輯的結(jié)果寫回?cái)?shù)據(jù)庫動作之前啟動事務(wù)全部寫回動作結(jié)束之后結(jié)束事務(wù),發(fā)生異常時(shí)回滾事務(wù);(3)在事務(wù)的執(zhí)行加入生成信息編號的算法;(4)在生成信息編號的過程中使用排它鎖方式鎖定信息表。其他用戶不能訪問該表。6問題及體會6.1 問題1. 如何對系統(tǒng)的查詢功能進(jìn)行優(yōu)化?答:添加索引。2. 如何確

16、定數(shù)據(jù)存儲的內(nèi)容?答:通過已經(jīng)了解的即時(shí)聊天軟件,分析所需要用的數(shù)據(jù)以及數(shù)據(jù)類型,然后進(jìn)行存儲。3.什么是索引?答:索引是對數(shù)據(jù)庫表中一個或多個列(例如,employee 表的姓氏 (lname) 列)的值進(jìn)行排序的結(jié)構(gòu)。4.增加索引有如此多的優(yōu)點(diǎn),索引的創(chuàng)建是不是越多越好呢?答:增加索引也有許多不利的一個方面。(1)創(chuàng)建索引和維護(hù)索引要耗費(fèi)時(shí)間,這種時(shí)間隨著數(shù)據(jù)量的增加而增加。 (2)索引需要占物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。 (3)當(dāng)對表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時(shí)候,索引也要動態(tài)的維護(hù)

17、,這樣就降低了數(shù)據(jù)的維護(hù)速度。5.哪些列上可以創(chuàng)建索引?答:如下列上可以創(chuàng)建索引:(1)在經(jīng)常需要搜索的列上,可以加快搜索的速度;在作為主鍵的列上,強(qiáng)制該列的唯一性和組織表中數(shù)據(jù)的排列結(jié)構(gòu); (2)在經(jīng)常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度; (3)在經(jīng)常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,其指定的范圍是連續(xù)的; (4)在經(jīng)常需要排序的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,這樣查詢可以利用索引的排序,加快排序查詢時(shí)間; (5)在經(jīng)常使用在WHERE子句中的列上面創(chuàng)建索引,加快條件的判斷速度。6.2 體會在設(shè)計(jì)階段遇到了許多的問題,比如所如何存儲數(shù)據(jù),如何查詢?nèi)绾蝺?yōu)化

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論