mac mongodb搭建记录

275 阅读3分钟

1.背景

最近在公司server上手动搭建了一次mongodb,存储当前业务中的广告打点(埋点)数据,记录了各种类型用户行为信息,将原来以截图、Charles导出文件、Postman导出文件形式的请求数据,统一存储到mongodb上,可直观查看,可高效管理,可追溯历史。

2.打点数据

  • 打点本质:记录用户行为一份数据
  • 打点实现:绑定用户行为,记录行为信息,发出请求,产生数据 手头业务中存在着各种类型的打点,覆盖了多个维度的信息
    • 用户行为(展现 点击 下载 播放 调起等等)
    • 广告位(列表页 详情页 小视频等等)
    • 广告物料(视频、图文、下载等等)

示例请求

包含打点时间 行为信息 广告信息 流量信息 设备信息等等

{
  "os_type": "2",
  "os_version": "10",
  "app_version": "7.12.0.0",
  "model": "JAD-AL50",
  "device_id": "C44E532CC9F862E915D129D3CC00022D|VQFTLF3LH",
  "net_type": 1,
  "ad": {
      "origin_time": "1659714002785",
      "behavior_type": "用户行为类型",
      "behavior_page": "行为发生页面",
      "behavior_ext1": "行为扩展1",
      "behavior_ext2": "行为扩展2",
      "ext": "广告加密信息"
   },
  "date": "2022-08-05 15:40:03"
}

示例日志

将json层级结构打平(字段众多),便于存储hive数仓(大宽表形式)

os_type,os_version,app_version,model,device_id,net_type,origin_time,behavior_type,behavior_page,behavior_ext1,behavior_ext2,date

3.数据库选型

考虑到广告打点日志持续迭代(字段逐渐增多),数据结构灵活(字段层级可能扩展),mysql二维表管理的数据不能很好的满足诉求,决定使用mongodb mysql对比mongodb 简析两类数据库的优缺点

类型优点缺点
mysql管理字段固定的二维关系比较方便不适合存储和查询层级式数据(存储需要打平到二维,查询json形式效率低)
mongodb文档形式的数据结构,存储和查询比较方便暂时不支持事务

4.安装

笔者使用mac环境举例,采用brew进行安装,其他环境参考 www.mongodb.com/docs/manual…

方法1: brew安装(不支持macOS高版本, mac用户请绕行)

  1. xcode-select --install (brew环境准备)
  2. brew brew tap mongodb/brew (用于mongodb安装的定制化brew)
  3. brew update (更新brew相关包)
  4. brew install mongodb-community@6.0 (安装社区版mongodb@6) monogodb-high-macos-version-fail.png

方法2: 官网压缩包安装

  1. 下载对应的操作系统的tar包 tar包地址
  2. 解压文件
tar -zxvf mongodb-macos-x86_64-6.0.tgz
  1. mongodb bin添加到环境变量中
sudo cp /Users/bobo/Downloads/mongodb-macos-x86_64-6.0.0/bin/* /usr/local/bin/

5.启动

启动前准备

启动mongodb之前需要创建日志目录、数据目录

也可以将日志和数据存储到/usr/local下面,我为了便于管理采用了config设置目录地址,集中到特点目录统一管理

➜  .mongodb pwd
/Users/bobo/.mongodb
➜  .mongodb ll
total 16
drwxr-xr-x   20 bobo  staff   640  8  6 18:48 data/
drwxr-xr-x    3 bobo  staff    96  8  6 18:47 log/
-rw-rw-r--    1 bobo  staff   418  8  6 18:48 mongod.conf
-rw-rw-r--    1 bobo  staff   153  5 29 11:16 reload.sh

# cat mongod.conf
port=8513 # mongodb占用的端口
fork=true # 以创建子进程的方式运行
dbpath=/Users/bobo/.mongodb/data #日志输出方式数据库路径
logappend=true #日志输出方式,日志append而不是overwrite
logpath=/Users/bobo/.mongodb/log/mongo.log #日志路径
auth=true

启动服务

## 直接启动(采用service服务启动 待补充)
mongod --config mongod.conf
mongodb gui软件 connect mongodb://localhost:8513

mongod服务已经启动成功,log日志显示正常 image.png image.png

image.png

那么mongodb服务就正常启动了

6.参考资料