版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、系統(tǒng)使用開發(fā)技術(shù)7目 錄視圖、存儲過程及事務(wù)應(yīng)用7.1多頁面應(yīng)用程序的實現(xiàn)7.2非關(guān)系型數(shù)據(jù)庫應(yīng)用7.3NoSQL(Not Only SQL)數(shù)據(jù)庫概述NoSQL數(shù)據(jù)模型NoSQL數(shù)據(jù)庫并沒有統(tǒng)一的數(shù)據(jù)模型,各類產(chǎn)品的數(shù)據(jù)存儲方式不相同,適用場景也有差異。常見的4種數(shù)據(jù)模型數(shù)據(jù)模型特點適用場景數(shù)據(jù)庫舉例鍵值對存儲值可以是字符串、列表、集合等各種類型。數(shù)據(jù)緩存在內(nèi)存中,周期性寫入磁盤。其優(yōu)勢在于簡單、易部署,但查詢或更新效率低 適用于圖像、基于鍵的文件系統(tǒng)和對象緩存,以及設(shè)計可擴(kuò)展的系統(tǒng) Redis、MemCache等 列存儲應(yīng)對分布式存儲的海量數(shù)據(jù)。鍵仍然存在,但是它們可指向多個列,形成稀疏矩
2、陣形式 適合存儲網(wǎng)絡(luò)爬蟲的結(jié)果大數(shù)據(jù)等 Cassandra、HBase等 文檔存儲直接存儲層次化的數(shù)據(jù)結(jié)構(gòu)(如JSON),可存儲復(fù)雜數(shù)據(jù)類型,比采用鍵值對存儲方式的數(shù)據(jù)庫的查詢效率更高 適合高度變化的復(fù)雜數(shù)據(jù)類型、文檔搜索、互聯(lián)網(wǎng)內(nèi)容管理等應(yīng)用 MongoDB、CouchDB等 圖存儲使用靈活的圖形模型,并且能夠擴(kuò)展到多個服務(wù)器上 適合關(guān)聯(lián)性要求高的問題,如社交網(wǎng)絡(luò)、欺詐偵察等應(yīng)用 Neo4j、AllegroGraph等 NoSQL特點數(shù)據(jù)模型簡單、靈活。高可用性和伸縮性。特點NoSQL可用于海量數(shù)據(jù)處理和靈活多變的業(yè)務(wù),但不適合需要高度數(shù)據(jù)一致性的系統(tǒng),因為它僅可保證數(shù)據(jù)最終一致性,無法保證
3、實時一致性。 MongoDB數(shù)據(jù)模型JSON(JavaScript Object Notation,JS對象標(biāo)簽)數(shù)據(jù)交換格式用文本格式表示數(shù)據(jù),獨立于編程語言層次結(jié)構(gòu)簡潔清晰,易讀易寫JSON數(shù)據(jù)格式MongoDB是基于文檔的開源非關(guān)系型數(shù)據(jù)庫, JSON數(shù)據(jù)格式為基礎(chǔ)存儲數(shù)據(jù) “鍵”必須是字符串,“值”可以是任何數(shù)據(jù)類型 【例】name:王紅 鍵值對 鍵:值將多個“鍵值對”用逗號分隔有序地寫在花括號中 【例】name:王紅,age:17 JSON對象提示:MongoDB以BSON(Binary-encoded JSON)格式存儲非結(jié)構(gòu)化數(shù)據(jù)。BSON擴(kuò)展了JSON來更好地支持?jǐn)?shù)據(jù)操作。這里
4、只需要理解JSON。 MongoDB數(shù)據(jù)庫的基本概念對應(yīng)一個JSON對象,MongoDB的最小存儲單位,相當(dāng)于關(guān)系數(shù)據(jù)庫中的一行記錄JSON對象中的“鍵值對”是有序的 文檔多個文檔就構(gòu)成了集合,類似于關(guān)系數(shù)據(jù)庫中的表集合是無模式的,不同模式的文檔可以放在一個集合中集合一個數(shù)據(jù)庫由多個集合組成集合可存放在不同的磁盤文件中,文件可分布式存儲在多個不同計算機(jī)中數(shù)據(jù)庫數(shù)據(jù)庫例子學(xué)生有關(guān)信息分別存放在4個表中:學(xué)生、地址、成績、課程。為加快針對學(xué)生信息的檢索,可以建立一個MongoDB數(shù)據(jù)庫,將這些信息進(jìn)行層次化存儲。THANK YOU!MongoDB應(yīng)用實例MongoDB的安裝與常用的調(diào)試命令show
5、 dbs:查看MongoDB服務(wù)器下的所有數(shù)據(jù)庫。 use 數(shù)據(jù)庫名:打開/建立數(shù)據(jù)庫,若存在,則打開數(shù)據(jù)庫;否則建立并打開。注意,要操作某個數(shù)據(jù)庫,需要先打開它。 db.集合名.insert(文檔):向當(dāng)前數(shù)據(jù)庫的一個集合中插入文檔,若集合不存在,則先創(chuàng)建它。 db.集合名.find(key:value):查詢符合條件key:value的文檔,若無參數(shù),則查詢所有文檔。 調(diào)試程序時常用的交互式命令下載后直接解壓安裝,下載地址/download-center#communityMongoDB自帶交互式JavaScript Shell,支持交互式操作和管理 【例7.11】交互式命令的使用用交互命
6、令向school數(shù)據(jù)庫的student集合中插入兩個學(xué)生文檔,然后查詢。use school /打開school數(shù)據(jù)庫switched to db school/向student集合中插入一個學(xué)生文檔db.student.insert(stcode:1101,stname:Tom,age:18) WriteResult(nInserted:1)/向student中再插入一個學(xué)生文檔db.student.insert(stcode:1102,stname:Mary,score:98) WriteResult(“nInserted”:1)db.student.find() /查詢顯示所有學(xué)生文檔
7、“_id”:ObjectId(57c66700),“stcode:1101, stname:Tom,age:18 “_id”:ObjectId(57c667e5),“stcode:1102, stname:Mary, score: 98db.student.find(stname:Mary)/根據(jù)學(xué)生姓名查詢顯示該學(xué)生信息 “_id”:ObjectId(57c667e5),“stcode:1102, stname: Mary, score: 98 【例7.12】MongoDB應(yīng)用實例 訪問MongoDB數(shù)據(jù)庫實現(xiàn)公告發(fā)布和瀏覽功能。單擊“發(fā)公告”按鈕,如左圖所示,輸入信息后單擊“發(fā)布”按鈕將信
8、息保存到數(shù)據(jù)庫中單擊“看公告”按鈕,如右圖所示,輸入時間后單擊“查詢”按鈕,可查出當(dāng)天發(fā)布的最后一條記錄修改內(nèi)容后單擊“修改”按鈕即可修改公告單擊“刪除”按鈕可從數(shù)據(jù)庫中刪除該公告(1)新建項目,添加Web窗體Notice,添加MongoDB的C#驅(qū)動程序引用 (2)頁面設(shè)計頁面頂端兩個按鈕“發(fā)公告”和“看公告”下部兩個Panel分別用兩個表格進(jìn)行布局,其中Panel2的visible屬性初始值為false各編輯區(qū)域為文本框Textbox。 Panel1Panel2(3)程序主要代碼using MongoDB.Driver; /引用MongoDB驅(qū)動using MongoDB.Bson; /引
9、用BSON驅(qū)動程序引用定義數(shù)據(jù)庫變量和公告消息類型public partial class Notice : System.Web.UI.Pagepublic MongoServer server; /服務(wù)器變量 public MongoDatabase db; /數(shù)據(jù)庫變量 public MongoCollection col; /文檔集合變量/定義要插入的數(shù)據(jù)的模型類Messagepublic class Message /消息類Message定義 public ObjectId _id; /類屬性,對應(yīng) MongoDB.Bson.ObjectId public DateTime Publ
10、ishTime get; set; /類方法,獲得或設(shè)置PublishTime public string Publisher get; set; /類方法,獲得或設(shè)置Publisher public string Title get; set; /類方法,獲得或設(shè)置Title public string Content set; get; /類方法,獲得或設(shè)置Content;集合類比MySql中的表,文檔類比MySql中的一行記錄(3)程序主要代碼/頁面加載時創(chuàng)建數(shù)據(jù)庫連接,讀取或創(chuàng)建數(shù)據(jù)庫Notices中的文檔集合Msg protected void Page_Load(object se
11、nder, EventArgs e) /創(chuàng)建與Mongo數(shù)據(jù)庫服務(wù)器的連接 server = MongoDB.Driver.MongoServer.Create(mongodb:/:27017); db = server.GetDatabase(Notices); /獲取Notices并賦值給數(shù)據(jù)庫變量db,若沒有則新建一個 col = db.GetCollection(Msg); /從db中獲取Msg并賦值給變量col,若沒有則新建一個 頁面加載時創(chuàng)建數(shù)據(jù)庫連接根據(jù)“發(fā)公告”或“看公告”按鈕切換頁面顯示protected void ButtonPublish_Click(object sen
12、der, EventArgs e)/單擊“發(fā)公告”按鈕顯示Panel1 Panel1.Visible=true; Panel2.Visible = false; protected void ButtonCheck_Click(object sender, EventArgs e)/單擊“看公告”按鈕顯示Panel2 Panel1.Visible = false; Panel2.Visible = true; protected void ButtonAdd_Click(object sender, EventArgs e) /單擊“發(fā)布”按鈕向數(shù)據(jù)庫的Msg中添加文檔 var msg1 =
13、new PublishTime = DateTime.Now.ToString(yyyy-MM-dd), Publisher = TextBoxPublisher.Text, Title = TextBoxTitle.Text, Content=TextBoxContent.Text ; col.Insert(msg1); /插入文檔 Response.Write(alert(消息已成功發(fā)布); /提示 TextBoxContent.Text = ; TextBoxTitle.Text = ;發(fā)布公告,寫入數(shù)據(jù)庫 protected void ButtonCancel_Click(object
14、 sender, EventArgs e) /按“取消”按鈕清空各顯示文本框 TextBoxPublisher.Text = ; TextBoxContent.Text = ; TextBoxTitle.Text = ; 服務(wù)器發(fā)給客戶端瀏覽器的消息往集合中插入一個文檔查詢公告protected void ButtonSearch_Click(object sender, EventArgs e) /單擊“查詢”按鈕根據(jù)發(fā)布時間查找文檔 var query = new QueryDocument PublishTime, TextBoxTime. Text ; var result = col
15、.FindOneAs(query);/查詢指定條件的第一條數(shù)據(jù) if (result != null) /取出整條記錄值,顯示各項 TextBoxTitle1.Text = result.Title; TextBoxContent1.Text = result.Content; TextBoxPublisher1.Text = result.Publisher; else /清空各項 TextBoxTitle1.Text = ; TextBoxContent1.Text = ; TextBoxPublisher1.Text = ; protected void ButtonUpdate_Cli
16、ck(object sender, EventArgs e) var query = new QueryDocument “Title”, TextBoxTitle.Text ; /查詢條件 var update = new UpdateDocument $set, new QueryDocument Content, TextBoxContent1.Text ; /修改內(nèi)容說明 col.Update(query, update); /執(zhí)行更新操作 Response.Write(alert(消息已更新); 修改本條公告,寫入數(shù)據(jù)庫刪除本條公告,更新數(shù)據(jù)庫protected void ButtonDelete_Click(ob
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教科版二年級上冊科學(xué)期末測試卷(名校卷)
- 普通話朗讀范文50篇拼音版
- 人工智能在學(xué)科知識體系構(gòu)建中的應(yīng)用
- 從管理角度分析如何增強(qiáng)嵌人式系統(tǒng)的網(wǎng)絡(luò)安全
- 從全球視角看工業(yè)互聯(lián)網(wǎng)與智能制造的發(fā)展趨勢
- 圍手術(shù)期的糖尿病
- 傳統(tǒng)圖案在家用紡織品設(shè)計中的創(chuàng)新應(yīng)用案例分析
- 企業(yè)決策支持系統(tǒng)的智能化改造升級
- 2025安裝工程合同模板
- 創(chuàng)新教學(xué)方法在小學(xué)數(shù)學(xué)課堂中的應(yīng)用
- MOOC 線性代數(shù)-同濟(jì)大學(xué) 中國大學(xué)慕課答案
- 橋式起重機(jī)定期檢查記錄表
- MOOC 警察禮儀-江蘇警官學(xué)院 中國大學(xué)慕課答案
- 2023-2024學(xué)年度九上圓與無刻度直尺作圖專題研究(劉培松)
- 2024年廣東省2024屆高三二模英語試卷(含標(biāo)準(zhǔn)答案)
- 2023年-2024年醫(yī)療器械知識測試題與答案(含A.B卷)
- 2023年度四川公需科目:數(shù)字經(jīng)濟(jì)與驅(qū)動發(fā)展
- 汽車制造業(yè)的柔性生產(chǎn)與敏捷制造
- 2024年制鞋工專業(yè)知識考試(重點)題庫(含答案)
- 2023年政府采購評審專家入庫考試模擬真題一套(含正確答案)
- 2023-2024學(xué)年廣州大附屬中學(xué)中考一模物理試題含解析
評論
0/150
提交評論