《數據庫與信息系統(tǒng)》系統(tǒng)開發(fā)使用技術-3_第1頁
《數據庫與信息系統(tǒng)》系統(tǒng)開發(fā)使用技術-3_第2頁
《數據庫與信息系統(tǒng)》系統(tǒng)開發(fā)使用技術-3_第3頁
《數據庫與信息系統(tǒng)》系統(tǒng)開發(fā)使用技術-3_第4頁
《數據庫與信息系統(tǒng)》系統(tǒng)開發(fā)使用技術-3_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、系統(tǒng)使用開發(fā)技術7目 錄視圖、存儲過程及事務應用7.1多頁面應用程序的實現(xiàn)7.2非關系型數據庫應用7.3NoSQL(Not Only SQL)數據庫概述NoSQL數據模型NoSQL數據庫并沒有統(tǒng)一的數據模型,各類產品的數據存儲方式不相同,適用場景也有差異。常見的4種數據模型數據模型特點適用場景數據庫舉例鍵值對存儲值可以是字符串、列表、集合等各種類型。數據緩存在內存中,周期性寫入磁盤。其優(yōu)勢在于簡單、易部署,但查詢或更新效率低 適用于圖像、基于鍵的文件系統(tǒng)和對象緩存,以及設計可擴展的系統(tǒng) Redis、MemCache等 列存儲應對分布式存儲的海量數據。鍵仍然存在,但是它們可指向多個列,形成稀疏矩

2、陣形式 適合存儲網絡爬蟲的結果大數據等 Cassandra、HBase等 文檔存儲直接存儲層次化的數據結構(如JSON),可存儲復雜數據類型,比采用鍵值對存儲方式的數據庫的查詢效率更高 適合高度變化的復雜數據類型、文檔搜索、互聯(lián)網內容管理等應用 MongoDB、CouchDB等 圖存儲使用靈活的圖形模型,并且能夠擴展到多個服務器上 適合關聯(lián)性要求高的問題,如社交網絡、欺詐偵察等應用 Neo4j、AllegroGraph等 NoSQL特點數據模型簡單、靈活。高可用性和伸縮性。特點NoSQL可用于海量數據處理和靈活多變的業(yè)務,但不適合需要高度數據一致性的系統(tǒng),因為它僅可保證數據最終一致性,無法保證

3、實時一致性。 MongoDB數據模型JSON(JavaScript Object Notation,JS對象標簽)數據交換格式用文本格式表示數據,獨立于編程語言層次結構簡潔清晰,易讀易寫JSON數據格式MongoDB是基于文檔的開源非關系型數據庫, JSON數據格式為基礎存儲數據 “鍵”必須是字符串,“值”可以是任何數據類型 【例】name:王紅 鍵值對 鍵:值將多個“鍵值對”用逗號分隔有序地寫在花括號中 【例】name:王紅,age:17 JSON對象提示:MongoDB以BSON(Binary-encoded JSON)格式存儲非結構化數據。BSON擴展了JSON來更好地支持數據操作。這里

4、只需要理解JSON。 MongoDB數據庫的基本概念對應一個JSON對象,MongoDB的最小存儲單位,相當于關系數據庫中的一行記錄JSON對象中的“鍵值對”是有序的 文檔多個文檔就構成了集合,類似于關系數據庫中的表集合是無模式的,不同模式的文檔可以放在一個集合中集合一個數據庫由多個集合組成集合可存放在不同的磁盤文件中,文件可分布式存儲在多個不同計算機中數據庫數據庫例子學生有關信息分別存放在4個表中:學生、地址、成績、課程。為加快針對學生信息的檢索,可以建立一個MongoDB數據庫,將這些信息進行層次化存儲。THANK YOU!MongoDB應用實例MongoDB的安裝與常用的調試命令show

5、 dbs:查看MongoDB服務器下的所有數據庫。 use 數據庫名:打開/建立數據庫,若存在,則打開數據庫;否則建立并打開。注意,要操作某個數據庫,需要先打開它。 db.集合名.insert(文檔):向當前數據庫的一個集合中插入文檔,若集合不存在,則先創(chuàng)建它。 db.集合名.find(key:value):查詢符合條件key:value的文檔,若無參數,則查詢所有文檔。 調試程序時常用的交互式命令下載后直接解壓安裝,下載地址/download-center#communityMongoDB自帶交互式JavaScript Shell,支持交互式操作和管理 【例7.11】交互式命令的使用用交互命

6、令向school數據庫的student集合中插入兩個學生文檔,然后查詢。use school /打開school數據庫switched to db school/向student集合中插入一個學生文檔db.student.insert(stcode:1101,stname:Tom,age:18) WriteResult(nInserted:1)/向student中再插入一個學生文檔db.student.insert(stcode:1102,stname:Mary,score:98) WriteResult(“nInserted”:1)db.student.find() /查詢顯示所有學生文檔

7、“_id”:ObjectId(57c66700),“stcode:1101, stname:Tom,age:18 “_id”:ObjectId(57c667e5),“stcode:1102, stname:Mary, score: 98db.student.find(stname:Mary)/根據學生姓名查詢顯示該學生信息 “_id”:ObjectId(57c667e5),“stcode:1102, stname: Mary, score: 98 【例7.12】MongoDB應用實例 訪問MongoDB數據庫實現(xiàn)公告發(fā)布和瀏覽功能。單擊“發(fā)公告”按鈕,如左圖所示,輸入信息后單擊“發(fā)布”按鈕將信

8、息保存到數據庫中單擊“看公告”按鈕,如右圖所示,輸入時間后單擊“查詢”按鈕,可查出當天發(fā)布的最后一條記錄修改內容后單擊“修改”按鈕即可修改公告單擊“刪除”按鈕可從數據庫中刪除該公告(1)新建項目,添加Web窗體Notice,添加MongoDB的C#驅動程序引用 (2)頁面設計頁面頂端兩個按鈕“發(fā)公告”和“看公告”下部兩個Panel分別用兩個表格進行布局,其中Panel2的visible屬性初始值為false各編輯區(qū)域為文本框Textbox。 Panel1Panel2(3)程序主要代碼using MongoDB.Driver; /引用MongoDB驅動using MongoDB.Bson; /引

9、用BSON驅動程序引用定義數據庫變量和公告消息類型public partial class Notice : System.Web.UI.Pagepublic MongoServer server; /服務器變量 public MongoDatabase db; /數據庫變量 public MongoCollection col; /文檔集合變量/定義要插入的數據的模型類Messagepublic class Message /消息類Message定義 public ObjectId _id; /類屬性,對應 MongoDB.Bson.ObjectId public DateTime Publ

10、ishTime get; set; /類方法,獲得或設置PublishTime public string Publisher get; set; /類方法,獲得或設置Publisher public string Title get; set; /類方法,獲得或設置Title public string Content set; get; /類方法,獲得或設置Content;集合類比MySql中的表,文檔類比MySql中的一行記錄(3)程序主要代碼/頁面加載時創(chuàng)建數據庫連接,讀取或創(chuàng)建數據庫Notices中的文檔集合Msg protected void Page_Load(object se

11、nder, EventArgs e) /創(chuàng)建與Mongo數據庫服務器的連接 server = MongoDB.Driver.MongoServer.Create(mongodb:/:27017); db = server.GetDatabase(Notices); /獲取Notices并賦值給數據庫變量db,若沒有則新建一個 col = db.GetCollection(Msg); /從db中獲取Msg并賦值給變量col,若沒有則新建一個 頁面加載時創(chuàng)建數據庫連接根據“發(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ā)布”按鈕向數據庫的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ā)布公告,寫入數據庫 protected void ButtonCancel_Click(object

14、 sender, EventArgs e) /按“取消”按鈕清空各顯示文本框 TextBoxPublisher.Text = ; TextBoxContent.Text = ; TextBoxTitle.Text = ; 服務器發(fā)給客戶端瀏覽器的消息往集合中插入一個文檔查詢公告protected void ButtonSearch_Click(object sender, EventArgs e) /單擊“查詢”按鈕根據發(fā)布時間查找文檔 var query = new QueryDocument PublishTime, TextBoxTime. Text ; var result = col

15、.FindOneAs(query);/查詢指定條件的第一條數據 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 ; /修改內容說明 col.Update(query, update); /執(zhí)行更新操作 Response.Write(alert(消息已更新); 修改本條公告,寫入數據庫刪除本條公告,更新數據庫protected void ButtonDelete_Click(ob

溫馨提示

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

評論

0/150

提交評論