版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、系统使用开发技术7目 录视图、存储过程及事务应用7.1多页面应用程序的实现7.2非关系型数据库应用7.3NoSQL(Not Only SQL)数据库概述NoSQL数据模型NoSQL数据库并没有统一的数据模型,各类产品的数据存储方式不相同,适用场景也有差异。常见的4种数据模型数据模型特点适用场景数据库举例键值对存储值可以是字符串、列表、集合等各种类型。数据缓存在内存中,周期性写入磁盘。其优势在于简单、易部署,但查询或更新效率低 适用于图像、基于键的文件系统和对象缓存,以及设计可扩展的系统 Redis、MemCache等 列存储应对分布式存储的海量数据。键仍然存在,但是它们可指向多个列,形成稀疏矩
2、阵形式 适合存储网络爬虫的结果大数据等 Cassandra、HBase等 文档存储直接存储层次化的数据结构(如JSON),可存储复杂数据类型,比采用键值对存储方式的数据库的查询效率更高 适合高度变化的复杂数据类型、文档搜索、互联网内容管理等应用 MongoDB、CouchDB等 图存储使用灵活的图形模型,并且能够扩展到多个服务器上 适合关联性要求高的问题,如社交网络、欺诈侦察等应用 Neo4j、AllegroGraph等 NoSQL特点数据模型简单、灵活。高可用性和伸缩性。特点NoSQL可用于海量数据处理和灵活多变的业务,但不适合需要高度数据一致性的系统,因为它仅可保证数据最终一致性,无法保证
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(文档):向当前数据库的一个集合中插入文档,若集合不存在,则先创建它。 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数据库实现公告发布和浏览功能。单击“发公告”按钮,如左图所示,输入信息后单击“发布”按钮将信
8、息保存到数据库中单击“看公告”按钮,如右图所示,输入时间后单击“查询”按钮,可查出当天发布的最后一条记录修改内容后单击“修改”按钮即可修改公告单击“删除”按钮可从数据库中删除该公告(1)新建项目,添加Web窗体Notice,添加MongoDB的C#驱动程序引用 (2)页面设计页面顶端两个按钮“发公告”和“看公告”下部两个Panel分别用两个表格进行布局,其中Panel2的visible属性初始值为false各编辑区域为文本框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)程序主要代码/页面加载时创建数据库连接,读取或创建数据库Notices中的文档集合Msg protected void Page_Load(object se
11、nder, EventArgs e) /创建与Mongo数据库服务器的连接 server = MongoDB.Driver.MongoServer.Create(mongodb:/:27017); db = server.GetDatabase(Notices); /获取Notices并赋值给数据库变量db,若没有则新建一个 col = db.GetCollection(Msg); /从db中获取Msg并赋值给变量col,若没有则新建一个 页面加载时创建数据库连接根据“发公告”或“看公告”按钮切换页面显示protected void ButtonPublish_Click(object sen
12、der, EventArgs e)/单击“发公告”按钮显示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) /单击“发布”按钮向数据库的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(消息已成功发布); /提示 TextBoxContent.Text = ; TextBoxTitle.Text = ;发布公告,写入数据库 protected void ButtonCancel_Click(object
14、 sender, EventArgs e) /按“取消”按钮清空各显示文本框 TextBoxPublisher.Text = ; TextBoxContent.Text = ; TextBoxTitle.Text = ; 服务器发给客户端浏览器的消息往集合中插入一个文档查询公告protected void ButtonSearch_Click(object sender, EventArgs e) /单击“查询”按钮根据发布时间查找文档 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); /执行更新操作 Response.Write(alert(消息已更新); 修改本条公告,写入数据库删除本条公告,更新数据库protected void ButtonDelete_Click(ob
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024土地承包经营权流转与技术支持服务合同3篇
- 2025早餐店店铺转让合同协议
- 2024年热力管网建筑工程劳务合同深度剖析
- 2024年标准爆破作业技术服务合同版B版
- 婚礼现场墙体壁画施工合同
- 2024年医院住院医师规范化培训劳动合同3篇
- 商业管理租赁合同模板
- 2024外墙漆购销及施工工程安全责任合同3篇
- 2024年度宝鸡市金融科技解决方案合同
- 电子制造业的经济合同管理办法
- 2024年制鞋工专业知识考试(重点)题库(含答案)
- 2023-2024学年广州大附属中学中考一模物理试题含解析
- 绿化养护工作日记录表
- 2024美的在线测评题库答案
- 2024版高考数学二轮复习:解析几何问题的方法技巧
- 舆情监测服务方案
- 北京市海淀区2023-2024学年八年级上学期期末英语试卷
- 果品类原料的烹调应用课件
- 地弹簧行业分析
- 如何发挥采购在公司高质量发展中作用
- 民事纠纷及其解决机制课件
评论
0/150
提交评论