详细数据:大数据量的存储分表常见算法

优采云 发布时间: 2022-10-08 17:14

  详细数据:大数据量的存储分表常见算法

  当一个应用有大量数据时,我们使用单表单库进行存储,会严重影响运行速度,比如mysql的myisam存储。我们测试过,当数据在200w以下的时候,mysql的访问速度是很快的,但是如果数据超过200w,他的访问速度就会急剧下降,这会影响我们webapp的访问速度,如果数据太大,如果存储在单表中,系统会相当不稳定,mysql服务很容易挂掉。. 所以当数据量超过200w时,建议系统工程师考虑分表。

  以下是几种常见的分表算法。

  1.按自然时间划分表/库;

  如果一个应用的数据一年后会达到200w左右,那么我们可以考虑将一年的数据作为表或者库来存储,比如表名是app,那么2010年的数据就是app_2010,app_2011;如果一个月的数据量达到200w左右,那么我们可以用月份来划分,app_2010_01,app_2010_02。

  2.根据数字类型hash对表/库进行划分;

  如果我们要存储用户信息,我们应用的注册量很大,单表无法满足存储需求,那么可以使用用户编号进行哈希。通常使用余数运算。如果我们要分30张表来存储用户信息,那么用户1%30=1,用户ID为1,那么我们将其存储在user_01表中,如果用户ID为500,那么500%30=20,那么我们将使用此用户信息存储在 user_20 表中。

  3.根据md5值划分表/库;

  我们假设我们要存储用户上传的文件。如果上传量大,也会带来系统的瓶颈问题。我们做过实验。如果一个文件夹中的文件超过200个,文件的浏览效率就会降低。当然,这不属于我们本文讨论的范围,这个区块也需要进行哈希处理。我们可以用文件的用户名来md5,也可以用文件的md5校验值来做,可以用md5的前5位做hash,这样最多可以得到5^5=3125张表,而我们每次存储一个文件,我们可以使用文件名的md5值的前5位来确定文件应该存储哪个表。

  4. 例子:微博的url加密算法和存储策略猜想。

  

  现在很多微博都是用这个url来访问的,如果他们的域名是,那么你发一条微博,你会发现你发的url变成了/Mx4ja1,在这种形式下,他们是怎么做到的呢?这种转换呢?我猜是使用我们上面提到的md5存储和搜索规则,使用你发送的url执行md5,得到md5值后,和我们的例子一样,前6位将用于分类表面。

  5、分表引起的问题。

  分表还会带来一系列问题,比如分页的实现,统计的实现。如果要对所有数据进行分页,那么就得遍历每张表,这样访问效率会很低。之前II尝试用mysql代理实现,最后用tcsql实现。

  6、分表算法的选择。

  首先,分表适用于没有大列表的应用。否则,这部分会做很多额外的工作。如果你的应用中数据量不是特别大,最好不要使用分表。哈哈,我们做项目的时候,项目经理让我们设计一个千万级的分表算法,应用的pv不会超过100,总感觉像炮打蚊子,而且因为分表-tables,整个项目被分割。工期耽误了不少,得不偿失。当一个应用有大量数据时,我们使用单表单库进行存储,会严重影响运行速度,比如mysql的myisam存储。我们测试过,当数据低于200w时,mysql的访问速度是很快的,但是如果数据超过200w,他的访问速度就会急剧下降,这会影响我们webapp的访问速度,而且如果数据量太大,如果存储在一个单表,系统会很不稳定,mysql服务很容易挂掉。. 所以当数据量超过200w时,建议系统工程师考虑分表。

  以下是几种常见的分表算法。

  1.按自然时间划分表/库;

  如果一个应用的数据一年后会达到200w左右,那么我们可以考虑将一年的数据作为表或者库来存储,比如表名是app,那么2010年的数据就是app_2010,app_2011;如果一个月的数据量达到200w左右,那么我们可以用月份来划分,app_2010_01,app_2010_02。

  2.根据数字类型hash对表/库进行划分;

  

  如果我们要存储用户信息,我们应用的注册量很大,单表无法满足存储需求,那么可以使用用户编号进行哈希。通常使用余数运算。如果我们要分30张表来存储用户信息,那么用户1%30=1,用户ID为1,那么我们将其存储在user_01表中,如果用户ID为500,那么500%30=20,那么我们将使用此用户信息存储在 user_20 表中。

  3.根据md5值划分表/库;

  我们假设我们要存储用户上传的文件。如果上传量大,也会带来系统的瓶颈问题。我们做过实验。如果一个文件夹中的文件超过200个,文件的浏览效率就会降低。当然,这不属于我们本文讨论的范围,这个区块也需要进行哈希处理。我们可以用文件的用户名来md5,也可以用文件的md5校验值来做,可以用md5的前5位做hash,这样最多可以得到5^5=3125张表,而我们每次存储一个文件,我们可以使用文件名的md5值的前5位来确定文件应该存储哪个表。

  4. 例子:微博的url加密算法和存储策略猜想。

  现在很多微博都是用这个url来访问的,如果他们的域名是,那么你发一条微博,你会发现你发的url变成了/Mx4ja1,在这种形式下,他们是怎么做到的呢?这种转换呢?我猜是使用我们上面提到的md5存储和搜索规则,使用你发送的url执行md5,得到md5值后,和我们的例子一样,前6位将用于分类表面。

  5、分表引起的问题。

  分表还会带来一系列问题,比如分页的实现,统计的实现。如果要对所有数据进行分页,那么就得遍历每张表,这样访问效率会很低。之前II尝试用mysql代理实现,最后用tcsql实现。

  6、分表算法的选择。

  首先,分表适用于没有大列表的应用。否则,这部分会做很多额外的工作。如果你的应用中数据量不是特别大,最好不要使用分表。哈哈,我们做项目的时候,项目经理让我们设计一个千万级的分表算法,应用的pv不会超过100,总感觉像炮打蚊子,而且因为分表-tables,整个项目被分割。工期耽误了不少,得不偿失。

  解决方案:企业网站如何做长尾关键词排名(附:地区+关键词排名方案)

  最近开始测试相关区域的排名+关键词。经过两天的测试,结果非常好,查询量也很大。这里有几个小案例供你先看看。

  上图是我两天测试的部分关键词,可以看到现场直接会有排名,而且这种词很有价值。了解这个行业的人都知道,公司注册这类业务,有区域限制是很严重的,所以区域优化也很重要。你是怎么做到的?

  网站的基本优化

  

  这里主要是三个方面,站长平台工具的使用,代码的基本规划,以及站长平台算法的规避。做到这三点,做一个四五权重的优质网站完全没有问题。

  站长平台工具使用:主要包括提交工具、站点地图工具、https工具、移动登陆页面检测(必须检测)、爬取频率(与收录有比较大的关系)、爬取诊断(检查是否有any 屏蔽搜索引擎)、爬取异常(主要是判断服务器的稳定性)、站点属性(填写信息可以提高网站权限)、移动适配(基本没用,因为搜索引擎有自动适配的能力) )。

  代码的基本规划:不用说,懂html的人都需要规划代码的编写,但是很多人在做html的时候比较懒,写的不好。例如:CSS压缩、绝对路径等。

  站长平台算法:自行阅读理解站长信息平台,技术含量非常大,尤其是看完这几点,做一个与搜索引擎匹配的网站绝对没问题,包括广告优化。、代码规划、结构化数据等。

  高品质原创效果>高品质>原创>伪原创采集

  上面的公式,无论是用户还是搜索引擎都会这么认为,首先优质的原创内容最容易排名,这是毋庸置疑的,其次才是优质的,即使你不是原创,高质量也比原创更有价值,无论是用户还是搜索引擎,他更关心内容的质量,与作者是谁无关。最后还有伪原创和采集,其实都是低质量的内容。伪原创 大部分是同义词替换,会导致句子不流畅。老实说,最好不要做伪原创,而采集,问题会更多。那么如何创建高质量的 原创 内容呢?请参阅下面的 文章。

  当网站的基础达到一定程度后,我们就可以操作城市+学科的排名了,也就是上面截图的部分,如何操作。

  从上图可以很清楚的分析出这个词的需求包括:流程、程序、代理记账、分析需求后做什么,标题中写下你分析的需求。这可以参考上图中的案例。

  

  分析需求,从内容上满足以上需求。例如,可以使用文本来满足该过程。所以不同的关键词,需要提供的内容肯定是不一样的,毕竟需求不一样。

  那么第四点的优化确实对网站的排名有一定的影响,但是如果没有这样的时间和精力,不建议在这里浪费时间。有哪些?

  外链的推广:虽然外链的价值不是很大,但我可以肯定的告诉你,搜索引擎是用综合因素来决定排名的,外链也有影响,但影响不大。您可以适当购买一些外部链接。链,让这个区域+主题页收录。

  内链推广:内链推广比外链更有价值。一方面可以增加网站的PV,另一方面可以增加城市+关键词的页面权重,但是需要控制相关性。如果控制不好,最好不要做,以免过度优化。

  品牌推广:中小企业真的没有那么多钱做品牌推广,因为他们投资1块钱,说不定还想赚回2块钱,不然就很难发工资了,不过还是有的一些免费的品牌推广方式,如自媒体,是品牌推广的渠道之一。

  结论:这里几乎是一样的。毕竟城市+地区这个词的搜索量不是很大,竞争也比较小,所以要看你的行​​业是否适合。如果不合适,不建议浪费时间,代理记账公司确实很合适。

  如果你需要学习SEO优化,可以加我微信(394062665),我会教你从快0到权重7的优化方法。下面是一些案例。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线