本文主要以Ubuntu系统为例,记录安装部署MongoDB社区版,并进行批量数据写入。
安装部署主要依据MongoDB官网指引,数据写入脚本为个人编写,如有需要可以直接使用。
1.导入包管理系统使用的公钥。
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
*如果你收到一个提示没有安装gnupg的错误,你可以:
sudo apt-get install gnupg
2.为MongoDB创建一个列表文件
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
3.重新加载本地包数据库
sudo apt-get update
4.安装MongoDB软件包
apt-get install -y mongodb-org
5.启动MongoDB服务
systemctl start mongod
6.运行mongosh
mongosh
如果一切正常,则可看到以下结果:
Current Mongosh Log ID: 61a843b54977e10489a10bcf
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000
Using MongoDB: 5.0.4
Using Mongosh: 1.1.5
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.
------
The server generated these startup warnings when booting:
2021-12-02T11:54:18.350+08:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
2021-12-02T11:54:18.763+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
------
test>
下面附上我自用的MongoDB写入脚本,编程语言为Python。
该脚本用于向MongoDB中连续写入2000w条数据,一共包含了15列(不算ID),其中ts为时间列,类型为date,t1~t10列的类型为string,nu列为[0,1000]区间随机取值的double型,ni列为[0,1000]区间随机取值的int型,ns1和ns2列为string型
import pymongo
import random
import datetime
# create database
MyClient = pymongo.MongoClient('mongodb://192.168.1.84:27017/')
mydb = MyClient["performancetest"]
mycol = mydb["site3"]
ts = datetime.datetime(2020, 1, 1, 0, 0, 0)
for i in range(1, 20000001):
nu = random.uniform(0, 1000)
ni = random.randint(0,1000)
ns1 = str("taosdata")
ns2 = str("t2702")
mydict = {"ts": ts, "t1": "taos", "t2":"beijing","t3":"asdf","t4":"123","t5":"abc","t6":"china","t7":"chaoyang","t8":"baoli","t9":"wangjing",
"t10":"t1","nu": nu,"ni":ni,"ns1":ns1,"ns2":ns2}
mycol.insert_one(mydict)
print(i)
ts += datetime.timedelta(seconds=1)