Mongo分库方案选型

Mongo分库方案选型 Mongo分库方案两种形式分析: 1. mongo sharding方式:1.1. 深翻页的问题举例:当mongo的分片是5片时,分页查询(如果按照创建时间倒叙查询)第一页,每页50条数据,则mongo sharding在每个分片上取50条数据,一共50*5条数据,然后进行汇总,计算出前50条正确数据作为返回结果。如果是翻页到1000页,那么mongo sharding需要从…

大家好,又见面了,我是你们的朋友全栈君。

 

Mongo分库方案两种形式分析:

 

1. mongo sharding方式:

1.1. 深翻页的问题

举例:当mongo的分片是5片时,分页查询(如果按照创建时间倒叙查询)第一页,每页50条数据,则mongo sharding在每个分片上取50条数据,一共50*5条数据,然后进行汇总,计算出前50条正确数据作为返回结果。如果是翻页到1000页,那么mongo sharding需要从5个分片上分别查询50*1000=5万条条数据,然后汇总成50*1000*5 = 25万条数据,然后计算第1000页的数据,这样系统会占用很大的系统资源,很容易造成系统异常。这个问题暂时没有什么可以解决的办法。

1.2. mongo sharding再平衡时,有可能查询数据出现重复的问题

当mongo sharding根据 sharding key,将数据存入mongo的5个片(1,2,3,4,5)时,一般会产生5个分片数据不均匀的问题,假如1,2的分片数据较多,3,4,5的分片数据量较少,那么mongo sharding再平衡策略会将1,2分片上的数据平衡到3,4,5分片上,如果此时数据正在进行平衡,那么查询1,2分片上的数据平衡到3,4,5的那部分的数据时,而且没有命中索引的情况时,有可能出现重复数据的现象。现有的解决方式是,在晚上调用量少的时候进行数据平衡,白天数据访问量大的时候关闭再数据平衡。

1.3. mongo分片扩展

分片不能够无限扩大,实际使用中一般分成个位数分片,很难做到无限扩展。

1.4. sharding的key不能变更

sharding key 一旦指定,不可更改。更改之后,访问数据的分片逻辑会变,导致服务不可用。
 

2. 采用物理分库方式:

2.1 分库要自己代码实现

需要自己代码中实现根据不同的context访问不同的数据库,即实现根据分库的key,路由到不同的物理库上。

2.2 不同的分库交叉访问问题

不能够像mongo sharding那样直接交叉访问库,如果要进行交叉访问库,只能在程序中自己实现。

2.3 负载均衡

mongo sharding内部实现了负载均衡,如果采用物理分成多个mongo库,实现负载均衡需要自己代码实现。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149535.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IDEA开发工具使用 git 创建项目、拉取分支、合并分支「建议收藏」

    IDEA开发工具使用 git 创建项目、拉取分支、合并分支「建议收藏」工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下:假设小组中有两个人,组长小张,组员小袁场景一:小张创建项目并提交到远程Git仓库场景二:小袁从远程Git仓库上获取项目源码场景三:小袁修改了部分源码,提交到远程仓库场景四:小张从远程仓库获取小袁的提交场景五:小袁接受了一个新功能的任务,创建了一个分支并在分支上开发场景六:小袁把分支提交到远程Git仓库场景七:小张获取小袁提交的分支场景八:…

    2022年6月18日
    102
  • intelli idea2021激活码【在线注册码/序列号/破解码】

    intelli idea2021激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    49
  • Java爬虫系列二:使用HttpClient抓取页面HTML

    爬虫要想爬取需要的信息,首先第一步就要抓取到页面html内容,然后对html进行分析,获取想要的内容。上一篇随笔《Java爬虫系列一:写在开始前》中提到了HttpClient可以抓取页面内容。今天就

    2022年2月16日
    39
  • 最长上升子序列nlogn算法

    最长上升子序列nlogn算法最长上升子序列nlogn算法题目描述:给定一个整型数组,求这个数组的最长严格递增子序列的长度。譬如序列12243的最长严格递增子序列为1,2,4或1,2,3.他们的长度为3。输入:输入可能包含多个测试案例。对于每个测试案例,输入的第一行为一个整数n(1输入的第二行包括n个整数,代表这个数组中的数字。整数均在int范围内。

    2022年6月2日
    42
  • 阶乘的累加和

    阶乘的累加和

    2021年9月27日
    74
  • mysql8.0.25安装配置教程(windows 64位)最详细

    目录1.官网下载MySQL2.配置初始化文件my.ini3.初始化MySQL4.安装mysql服务并启动+修改密码5.配置环境变量6.部分疑难杂病7.使用连接工具连接mysql1.官网下载MySQL下载Mysql点击下载mysql.下载完成后解压到某一个文件夹(记住这个路径,一会要用到)2.配置初始化文件my.ini在根目录下创建一个txt文件,名字叫my,文件后缀为ini之后复制下面这个代码放在文件下(新解压的文件没有my.ini文件,需自行创建)以下代码除安装目录和数据的存放目录需修

    2022年4月5日
    301

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号