[mongo]应用场景及选型
应用场景及选型
MongoDB 数据库定位
- OLTP 数据库
- 横向扩展能力,数据量或并发量增加时候架构可以自动扩展
- 灵活模型,适合迭代开发,数据模型多变场景
- JSON 数据结构,适合微服务/REST API
- 基于功能选择 MongoDB
-
关系型数据库迁移
从基于关系型数据库应用迁移到 MongoDB 的理由
- 高并发需求 (数千 – 数十万 ops) ,关系型数据库不容易扩展
- 快速迭代 – 关系型模式太严谨
- 灵活的 JSON 模式
- 大数据量需求
- 地理位置查询
- 多数据中心跨地域部署
应用迁移难度
- 关系型到关系型 – 相对简单
- 关系型到文档型 – 相对复杂
- 需要考虑
- 总体架构 (从单体式到分布式)
- 模式设计(从关系模型到文档模型)
- SQL 语句 / 存储过程 / JDBC / ORM
- 数据迁移 (如何处理已有数据?)
总体架构
模式设计
- 针对已有关系模型,考虑如何用文档模型进行设计
-
数据迁移
- 数据库导出+导入
- 批量迁移工具
- 实时同步工具
- 应用主导迁移
数据迁移方式及工具
数据迁移
数据库导出导入
- 停止现有的基于 RDBMS 的应用
- 使用 RDBMS 的数据库导出工具,将数据库表导出到 CSV 或者 JSON(如 mysqldump)
- 使用 mongoimport 将 CSV 或者 JSON 文件导入 MongoDB 数据库
- 启动新的 MongoDB 应用
- 数据库导出导入: mysql - mongo
- mysqldump inventory -hxxxx -uroot -p -T mysql-files
批量同步
- 安装同步工具(如 Kettle / Talend) - 创建输入源(关系型数据库)
- 创建输出源(MongoDB) - 编辑数据同步任务
- 执行
- 适用批量同步,定期更新, 特别是每晚跑批的场景
- 支持基于时间戳的增量同步,需要源表有合适的时间戳支持
- 对源库有较明显的性能影响,不宜频繁查询
- 不支持实时同步
实时同步
- 安装实时同步工具(如Informatica / Tapdata) - 创建输入源(关系型数据库)
- 创建输出源(MongoDB) - 编辑实时数据同步任务
- 执行
- 基于源库的日志文件解析机制,可以实现秒级数据的同步
- 对源库性能影响较小
- 可以支持应用的无缝迁移
应用主导迁移
- 升级已有应用支持 MongoDB
- 数据插入请求直接进入 MongoDB
- 数据查询和更新请求首先定向到 MongoDB
- 如果记录不存在,从 RDBMS 读出来并写入到 MongoDB
- 重复步骤3
- 当步骤4在限定时间段(一星期、一个月)没有被调用,认为迁移完成
- 需要研发团队配合 ,有一定开发和测试量
- 为保证不遗漏数据,仍然先要执行一次批量同步
应用迁移比较
相关文章:
[mongo]应用场景及选型
应用场景及选型 MongoDB 数据库定位 OLTP 数据库横向扩展能力,数据量或并发量增加时候架构可以自动扩展灵活模型,适合迭代开发,数据模型多变场景JSON 数据结构,适合微服务/REST API基于功能选择 MongoDB 关系型数据库迁移 从基…...
linux c語言之crc16错误检测的使用
一、是什么? CRC16是循环冗余校验的一种,是一种根据数据产生校验码的方法。它是一种比较常用的校验算法,可以用于错误检测和纠正等方面。CRC16是16位的校验码,可以检测出32位以内的错误。在通信协议、网络传输等领域中,CRC16被广泛应用. 二、使用步骤 1.引入库 代码如…...
搭建本地开发服务器
搭建本地开发服务器 :::warning 注意 在上一个案例的基础上添加本地开发服务器,请保留上个案例的代码。如需要请查看 Webpack 使用。 ::: 搭建本地开发服务器这一个环节是非常有必要的,我们不可能每次修改源代码就重新打包一次。这样的操作是不是太繁琐…...
linux脚本
程序后台运行: nohup java -jar xxx.jar &>hello.log & 后台运行java-jar命令,并且将日志输出到hello.log文件 防火墙: 开启防火墙:systemctl start firewalld 开放指定端口:firewall-cmd --zonepublic --…...
企升编辑器word编写插件
面向用户群体招投标人员,用统一的模板来编写标书,并最终合并标书。项目经理,编写项目开发计划书,项目验收文档等。开发人员,编写项目需求规格说明书、设计说明书、技术总结等文档。其他文档编写工作量较多的岗位人员。…...
怎么在JMeter中的实现关联
我们一直用的phpwind这个系统做为演示系统, 如果没有配置好的同学, 请快速配置之后接着往下看哦. phpwind发贴时由于随着登陆用户的改变, verifycode是动态变化的, 因此需要用到关联. LoadRunner的关联函数是reg_save_param, Jmeter的关联则是利用后置处理器来完成. 在需要查…...
算法通关村第六关——如何使用中序和后序来恢复一颗二叉树
1 树的基础知识 1.1 树的定义 树(Tree):表现得是一种层次关系,为 n ( n ≥ 0 ) n(n≥0) n(n≥0)个节点构成的有限集合,当n0时,称为空树,对于任一…...
leetcode算法题--判断是否能拆分数组
原题链接:https://leetcode.cn/problems/check-if-it-is-possible-to-split-array/ 一开始思路想错了。。导致浪费很多时间 其实只要能找到存在一个子数组,子数组长度为2,这个子数组符合条件就一定能拆分。。 func canSplitArray(nums []i…...
基于Flask的模型部署
基于Flask的模型部署 一、背景 Flask:一个使用Python编写的轻量级Web应用程序框架; 首先需要明确模型部署的两种方式:在线和离线; 在线:就是将模型部署到类似于服务器上,调用需要通过网络传输数据&…...
【资料分享】全志科技T507-H开发板规格书
1 评估板简介 创龙科技TLT507-EVM是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53国产工业评估板,主频高达1.416GHz,由核心板和评估底板组成。核心板CPU、ROM、RAM、电源、晶振等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产…...
2023华数杯数学建模C题思路 - 母亲身心健康对婴儿成长的影响
# 1 赛题 C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一,她不仅为婴儿提供营养物质和身体保护, 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况,如抑郁、焦虑、 压力等,可能会对婴儿的认知、情…...
【Kaggle】Identify Contrails to Reduce Global Warming 比赛数据集的可视化(含源代码)
一、数据简单解读 卫星图像最初来自: https://www.goes-r.gov/spacesegment/abi.html高级基线成像仪是GOES-R系列中用于对地球天气、海洋和环境进行成像的主要仪器。ABI用16个不同的光谱波段观察地球(上一代GOES只有<>个),…...
Spring(12) BeanFactory 和 ApplicationContext 区别
目录 一、BeanFactory 和 ApplicationContext 区别?二、既然 Spring Boot 中使用的是 ApplicationContext 进行应用程序的启动和管理,那么 Spring Boot 会用到 BeanFactory 吗? 一、BeanFactory 和 ApplicationContext 区别? Bea…...
git的日常使用
加入忽略列表:在.gitignore中加入忽略的文件,build/ 表示build文件夹下,*.jar 表示以jar结尾的,用换行符隔开将另一个分支合并到当前分支:git merge xxx冲突出现,可以看看这里:详解Git合并冲突—…...
【Spring Boot】请求参数传json对象,后端采用(pojo)CRUD案例(102)
请求参数传json对象,后端采用(pojo)接收的前提条件: 1.pom.xml文件加入坐标依赖:jackson-databind 2.Spring Boot 的启动类加注解:EnableWebMvc 3.Spring Boot 的Controller接受参数采用:Reque…...
layui之layer弹出层的icon数字及效果展示
layer的icon样式 icon如果在信息提示弹出层值(type为0)可以传入0-6,icon与图标对应关系如下: 如果是加载层(type为3)可以传入0-2,icon与图标对应关系如下:...
Python selenium对应的浏览器chromedriver版本不一致
1、chrome和chromedriver版本不一致导致的,我们只需要升级下chromedriver的版本即可 浏览器版本查看 //打开google浏览器直接访问,查看浏览器版本 chrome://version/ 查看chromedriver的版本 //查看驱动版本 chromedriver chromedriver下载 可看到浏…...
Redis的安装方法与基本操作
目录 前言 一、REDIS概述 二、REDIS安装 1、编译安装 2.yum安装 三、Redis的目录结构 四、基础命令解析 五、在一台服务器上启动多个redis 六、数据库的基本操作 (一)登录数据库 (二)基础命令 七、Redis持久化 (一&…...
选读SQL经典实例笔记20_Oracle语法示例
1. 计算一年有多少天 1.1. sql select Days in 2005: ||to_char(add_months(trunc(sysdate,y),12)-1,DDD)as reportfrom dualunion allselect Days in 2004: ||to_char(add_months(trunc(to_date(01-SEP-2004),y),12)-1,DDD)from dual REPORT ----------------- Days in 200…...
JAVA细节/小技巧
一、 Callable类可以实现返回结果的多线程。实现Callable类,然后实例化一个对象传递给FutureTask,然后把FutureTask对象传递给Thread对象,执行start即可开始多线程。FutureTask对象执行get函数可以获得Callable类中call函数的返回值…...
从MSP430到MSPM0L1306:嵌入式工程迁移实战与SDK应用指南
1. 项目概述:从零理解MSPM0L1306的工程迁移最近在帮一个朋友处理一个老项目升级,核心需求是把一个基于TI老款MSP430系列MCU的温控器,迁移到TI新推出的MSPM0L1306这颗芯片上。朋友的原话是:“老芯片快买不到了,新出的MS…...
CANN ops-transformer 的 FlashAttention:把大模型的记忆从 32GB 压到 8GB,怎么做到的
刚接触昇腾CANN那会,我以为 ops-transformer 就是个普通的算子仓库,和 ops-math、ops-nn 没什么区别。后来跑一个 70B 模型的推理任务,显存直接爆了,才发现大模型的注意力计算才是真正的吞显存怪兽——而 ops-transformer 里那个 …...
56、CAN总线RC低通滤波器截止频率计算与实战
CAN总线RC低通滤波器截止频率计算与实战 一、一个让我熬夜三天的CAN通信故障 去年做某车载ECU项目,CAN总线在电机启动瞬间频繁丢帧。示波器抓波形,CAN_H对地毛刺高达8V,持续时间约200ns。团队里有人提议“加磁珠”,有人喊“上共模扼流圈”。我翻出TI的AN-2298应用笔记,发…...
抖音内容采集系统架构设计与工程实践
抖音内容采集系统架构设计与工程实践 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具&#x…...
Wave Terminal:集成 AI 功能的强大终端,助你高效工作!
Wave Terminal:集成 AI 功能的强大终端应用,高效工作新选择!Wave Terminal 是一款功能强大的终端应用程序,它将多种工具集于一身,还集成了 AI 功能,支持 Linux、MacOS 和 Windows 系统。使用 Linux 终端数十…...
如何用Python自动化脚本提升大麦网抢票成功率:完整配置指南
如何用Python自动化脚本提升大麦网抢票成功率:完整配置指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为抢不到周杰伦、五月天演唱会门票而烦恼吗?大麦网抢票脚本…...
理光MP C2500扫描到共享文件夹保姆级教程(附Windows 10/11权限避坑指南)
理光MP C2500扫描到共享文件夹全流程解决方案与Windows权限深度优化 办公室里那台老当益壮的理光MP C2500复合机,至今仍是许多中小企业的生产力主力。但当IT管理员尝试配置"扫描到共享文件夹"功能时,往往会遭遇浏览网络空白、权限拒绝等"…...
华硕笔记本性能管家G-Helper:告别臃肿控制中心,重获系统掌控权
华硕笔记本性能管家G-Helper:告别臃肿控制中心,重获系统掌控权 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vi…...
手把手调试:用ADC0804读取PT100变送器信号,51单片机程序里的那些‘坑’怎么避?
51单片机实战:PT100温度检测系统避坑指南与ADC0804深度调试 当我们需要在工业控制或高精度测量场景中实现温度监控时,PT100铂电阻因其出色的线性度和稳定性成为首选传感器。然而,将PT100与51单片机结合使用时,从信号采集到温度显示…...
从图形界面到命令行:Win11文件管理效率提升指南,用CMD批量删除旧项目文件夹实战
从图形界面到命令行:Win11文件管理效率提升指南,用CMD批量删除旧项目文件夹实战 在数字时代,文件管理效率直接影响工作流程的顺畅程度。对于开发者、设计师和数据分析师这类经常需要处理大量项目文件的专业人士来说,如何快速清理不…...
