|
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文件安装即可。
- # server
- wget https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-arm64/mongodb-org-server_4.4.15_arm64.deb
- # mongos,分片服务器
- wget https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/4.4/multiverse/binary-amd64/mongodb-org-mongos_4.4.15_amd64.deb
- # setup server
- dpkg -i mongodb-org-server_5.0.9_amd64.deb
- # 检查相关状态
- systemctl status mongod
- # 自动启动
- systemctl enable mongod
- # 使用命令行操作mongodb
- mongo
复制代码
对配置文件/etc/mongod.conf进行修改,以获得远程访问的能力。- cat /etc/mongod.conf |grep bind
- sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mongod.conf
- cat /etc/mongod.conf |grep bind
- systemctl restart mongod
- systemctl status mongod
复制代码 MongoDB提供了丰富的命令,专家可以全面操控数据库以及数据,但对于初学者不太友好。为此推荐使用MongoDB官方提供的MongoDBCompass,在windows下载安装即可,随后连接远程MongoDB数据库,使用效果如下图所示:
从图中可以看出,服务器在远程,并且通过这个GUI界面,也能够输入命令来操作MongoDB数据库。
二、Python连接使用MongoDB
用Python操作MongoDB非常方便,无需定义表结构就可以直接将数据插入,使用pymongo模块,可以实现MongoDB与Python的交互。安装命令如下:下述代码示例了创建/使用定制的数据库,并且插入三条记录,并且查询的过程。
- import pymongo
- client = pymongo.MongoClient("mongodb://192.168.0.66:27017")
- print(client.list_database_names())
- db = client['raindrop']
- collection = db['pm25']
- # 增加一条
- stu1 = {'id': '001', 'area': 'office', 'pm25': 8}
- result = collection.insert_one(stu1)
- # 增加多条
- stu2 = {'id': '002', 'area': 'field01', 'pm25': 15, "temp": 10.5}
- stu3 = {'id': '003', 'monitor': 'wangwu', 'area': 'field02', 'age': 20}
- result = collection.insert_many([stu2, stu3])
- # 查询记录
- ret = collection.find_one({'area': 'office'})
- print(ret)
复制代码 通过MongoDB Compass可以看到数据库保存了三个文档。
由于MongoDB无模式特点,使用起来非常方便,尤其对于半结构化的数据存储特别有利。
[code][/code]
来源:https://www.cnblogs.com/shanxihualu/p/17247970.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|