翼度科技»论坛 编程开发 python 查看内容

Python工具箱系列(二十九)

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
MongoDB号称文档数据库,是目前发展迅速的NoSQL数据库。它由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
主要功能特性有:

◆面向集合存储,易存储对象类型的数据。
◆模式自由。
◆支持动态查询。
◆支持完全索引,包含内部对象。
◆支持查询。
◆支持复制和故障恢复。
◆使用高效的二进制数据存储,包括大型对象(如视频等)。
◆自动处理碎片,以支持云计算层次的扩展性。
◆支持Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
◆文件存储格式为BSON(一种JSON的扩展)。
◆可通过网络访问。
其主要场景如下:

◆实时数据处理。它非常适合实时的插入、更新与查询,并具备实时数据存储所需的复制及高度伸缩性。
◆缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。
◆高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,已经包含了对MapReduce引擎的内置支持。
不适用的场景如下:

◆要求高度事务性的系统。
◆传统的商业智能应用。
◆复杂的跨文档(表)级联查询。
MongoDB服务端可运行在Linux、Windows或mac os x平台,支持32位和64位应用,默认端口为27017。推荐运行在64位非Windows平台上。笔者最喜欢的特性之一就是MongoDB具备的灵活的分片机制,配置好的分片机制不仅能够达到负载均衡的目标,而且还能够冗余备份。
一、Ubuntu bionic下安装
直接使用官网提供的deb文件安装即可。
 
  1. # server
  2. wget https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-arm64/mongodb-org-server_4.4.15_arm64.deb
  3. # mongos,分片服务器
  4. wget https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/4.4/multiverse/binary-amd64/mongodb-org-mongos_4.4.15_amd64.deb
  5. # setup server
  6. dpkg -i mongodb-org-server_5.0.9_amd64.deb
  7. # 检查相关状态
  8. systemctl status mongod
  9. # 自动启动
  10. systemctl enable mongod
  11. # 使用命令行操作mongodb
  12. mongo
复制代码
 
对配置文件/etc/mongod.conf进行修改,以获得远程访问的能力。
  1. cat /etc/mongod.conf |grep bind
  2. sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mongod.conf
  3. cat /etc/mongod.conf |grep bind
  4. systemctl restart mongod
  5. systemctl status mongod
复制代码
MongoDB提供了丰富的命令,专家可以全面操控数据库以及数据,但对于初学者不太友好。为此推荐使用MongoDB官方提供的MongoDBCompass,在windows下载安装即可,随后连接远程MongoDB数据库,使用效果如下图所示:

从图中可以看出,服务器在远程,并且通过这个GUI界面,也能够输入命令来操作MongoDB数据库。
二、Python连接使用MongoDB

用Python操作MongoDB非常方便,无需定义表结构就可以直接将数据插入,使用pymongo模块,可以实现MongoDB与Python的交互。安装命令如下:
  1. pip install pymongo
复制代码
下述代码示例了创建/使用定制的数据库,并且插入三条记录,并且查询的过程。
 
  1. import pymongo
  2. client = pymongo.MongoClient("mongodb://192.168.0.66:27017")
  3. print(client.list_database_names())
  4. db = client['raindrop']
  5. collection = db['pm25']
  6. # 增加一条
  7. stu1 = {'id': '001', 'area': 'office', 'pm25': 8}
  8. result = collection.insert_one(stu1)
  9. # 增加多条
  10. stu2 = {'id': '002', 'area': 'field01', 'pm25': 15, "temp": 10.5}
  11. stu3 = {'id': '003', 'monitor': 'wangwu', 'area': 'field02', 'age': 20}
  12. result = collection.insert_many([stu2, stu3])
  13. # 查询记录
  14. ret = collection.find_one({'area': 'office'})
  15. print(ret)
复制代码
通过MongoDB Compass可以看到数据库保存了三个文档。

由于MongoDB无模式特点,使用起来非常方便,尤其对于半结构化的数据存储特别有利。
[code][/code] 

来源:https://www.cnblogs.com/shanxihualu/p/17247970.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具