倍市得数据层——数据存储类型介绍

倍市得简介

倍市得按照模块划分了多个子系统(subsystem,有时与 system 混用),这些系统之间是独立的。
倍市得使用 CodeFactory 代码生成工具从思维导图生成每个模块的以下这些文件。

1
2
3
4
5
├── model_enums.py
├── model_handlers.py
├── model_utils.py
├── model_utils_test.py
└── models.py

生成的主要数据模型基本遵循数据库设计三大范式,因此从数据模型的角度既可以使用关系型数据库也可以使用非关系型数据库。
其他数据文件类型和地址也存在主要的数据模型中。

数据存储类型

主数据库 mongoDB

当前版本(2020-07-16)使用 mongo 作为主要的数据库。mongoDB 是目前市场占有率最高的 noSQL 数据库。
使用 mongoDB 版本为 v4.0.8,官方文档 https://docs.mongodb.com/

官方提供的数据工具 https://docs.mongodb.com/v4.0/reference/program/
mongodump 和 mongorestore :
优点是输出格式为二进制,较为节省空间
缺点是 oplog 不适用于部分导出的场景
重点参数:
–query 对每个表的数据进行选择性导出

mongoimport 和 mongoexport :
优点是输出的文件人类可识别,缺点是占用空间大

Redis

当前版本 redis-cli 4.0.10。官方文档 https://redis.io/

用途包括:

  1. 用作缓存,这部分数据随意删除
  2. 用作 celery 的 broker backend
  3. 用作 mq 的消息队列
  4. 用作分布式 id 生成工具,如 seq
  5. 其他需要持久化的数据(暂不明确)

部分数据备份和恢复方式暂不明确。

OS filesystem

使用操作系统自带的文件系统进行存储

用途包括:

  1. 后端生成用由 nginx 直接代理的静态文件
  2. BI 数据文件,这部分数据有从数据库导出的也有用户上传的
  3. BI 缓存,这部分数据随意删除
  4. 其他(暂不明确)

OSS

当前默认使用的对象存储是阿里云的 OSS,其他云平台的对象存储有不同的名字。
对象存储,也称为基于对象的存储,是一种扁平结构,其中的文件被拆分成多个部分并散布在多个硬件间。
对象存储的优点是有分布式系统的可靠性和效率,集成 CDN,但按需付费,性价比高,缺点是写入文件无法修改,适用于不经常变化的文件。 常见的存储内容包括网站静态文件、历史日志等。

备份方式:
可以直接下载文件,恢复时再上传

也可以使用复制方法,等到恢复数据时直接从原始 OSS 处拷贝过来 https://help.aliyun.com/document_detail/31979.html?spm=a2c4g.11186623.2.10.7d3a4bb2VlcJfc#reference-mvx-xxc-5db

坚持原创技术分享,您的支持将鼓励我继续创作!