《非关系型数据库原理及应用实验报告》
一、实验目的
本次实验旨在深入理解非关系型数据库(NoSQL)的原理,掌握其在实际应用中的部署、数据操作和性能特点,通过具体的实验操作,对比关系型数据库与非关系型数据库的差异,了解非关系型数据库在大数据、高并发等场景下的优势。
二、实验环境
1、硬件环境
图片来源于网络,如有侵权联系删除
- 实验使用的计算机具有足够的内存(8GB以上)和存储空间(500GB以上),以确保数据库的正常运行和数据存储。
2、软件环境
- 选择了MongoDB作为非关系型数据库进行实验,安装了MongoDB的社区版本,操作系统为Windows 10,为了方便数据操作和管理,安装了MongoDB Compass作为可视化管理工具。
三、实验内容
1、MongoDB的安装与配置
- 从MongoDB官方网站下载适合Windows系统的安装包,按照安装向导进行安装,在安装过程中,需要注意设置数据存储路径和日志文件路径,安装完成后,启动MongoDB服务。
- 配置MongoDB的环境变量,以便在命令行中方便地访问MongoDB的命令,通过修改系统的环境变量,将MongoDB的bin目录添加到PATH变量中。
2、数据库与集合的创建
- 使用MongoDB的命令行工具或者MongoDB Compass创建数据库,创建一个名为“testdb”的数据库,在创建好的数据库中创建集合,如创建一个名为“users”的集合,用于存储用户信息。
- 在“users”集合中插入一些示例数据,数据采用JSON格式,如:
```
{
"name": "John",
"age": 25,
"email": "john@example.com"
}
```
3、数据查询操作
- 使用MongoDB的查询语句对“users”集合中的数据进行查询,查询年龄大于20岁的用户:
图片来源于网络,如有侵权联系删除
```
db.users.find({age: {$gt: 20}})
```
- 还可以进行复杂的查询,如查询名字中包含“o”并且年龄小于30岁的用户:
```
db.users.find({name: /o/, age: {$lt: 30}})
```
4、数据更新与删除操作
- 更新操作:将名为“John”的用户年龄更新为26岁。
```
db.users.update({name: "John"}, {$set: {age: 26}})
```
- 删除操作:删除年龄为20岁的用户。
```
db.users.remove({age: 20})
```
5、索引创建与性能测试
- 在“users”集合上创建索引,如为“email”字段创建索引:
```
图片来源于网络,如有侵权联系删除
db.users.createIndex({email: 1})
```
- 通过插入大量数据(例如10000条用户数据),然后分别在创建索引前后进行查询操作,对比查询性能,使用命令行的时间统计功能,记录查询操作所花费的时间。
四、实验结果
1、安装与配置结果
- MongoDB成功安装并启动服务,环境变量配置正确,可以在命令行中方便地执行MongoDB的各种命令。
2、数据操作结果
- 数据库和集合创建成功,数据插入、查询、更新和删除操作均按照预期执行,查询操作能够准确地返回符合条件的结果,更新操作正确地修改了指定的数据,删除操作也成功删除了目标数据。
3、索引性能结果
- 在创建索引前,查询10000条数据中特定条件(如根据email查询)的用户数据平均耗时约500毫秒,创建索引后,相同查询平均耗时约50毫秒,性能提升了约10倍,这表明索引在提高查询效率方面具有显著作用。
五、实验总结
1、非关系型数据库原理理解
- 通过实验,深入理解了MongoDB这种非关系型数据库的文档型数据存储模式,与关系型数据库的表格结构不同,MongoDB以文档(类似JSON对象)为基本存储单元,这种结构更加灵活,适合处理半结构化和非结构化数据。
2、应用场景体会
- 在大数据和高并发场景下,非关系型数据库的优势明显,在处理海量的用户日志数据时,不需要预先定义严格的表结构,可以快速地插入和查询数据,而且MongoDB的水平扩展能力强,可以方便地通过添加节点来扩展数据库的存储和处理能力。
3、实验过程中的问题与解决
- 在实验过程中,遇到了一些问题,如MongoDB服务启动失败,经过排查,发现是端口被占用的原因,通过修改MongoDB的配置文件,将其监听端口修改为未被占用的端口后,服务成功启动,在数据查询操作中,一些复杂的正则表达式查询结果不符合预期,通过仔细检查正则表达式的语法并参考官方文档,最终得到了正确的结果。
本次实验对非关系型数据库的原理和应用有了全面的认识,为今后在实际项目中应用非关系型数据库奠定了坚实的基础。
评论列表