首页 > 百科 > 数码家电

数据盘点和数据目录构建方法研究 基于数据基因水平分库的存储架构方法

时间:2023-08-08来源:网络作者:小白

今天我们聊的是基于数据基因水平分库的存储架构方法,先看两个实际场景问题。

分库订单场景一:订单实体查询,通过订单ID查询订单实体。读过<怎么生成分布式ID>这篇文章的同学都知道在分布式服务中可以通过snowflake算法来生成全局唯一ID来当作订单ID,进行分库。那么直接通过订单ID就可以快速定位到库,高效的查出数据。

分库订单场景二:用户订单列表查询,通过buyer_uid分页查询用户古代订单列表。在满足场景一的同时,怎么来高效的实现场景二的查询呢?往下看 ^_^ ^_^ ^_^

背景

随着互联网的飞速进展,应用数据量及访问量快速增长,单台数据库服务器的资源通常难以支柱大量的数据量及大量的数据库操作请求。为了解决该问题,需要对数据库进行分库分表,一种是按业务分类进行垂直切分;另一种是按一定的规则 如数值范围、数值哈希进行水平切分,即把一个数据库水平切分成多个部分放到不同的数据库服务器上,从而有效解决亿万级数据存储问题及单台服务器资源的瓶颈问题。然而在水平分库分表之后,大表中的数据分散存储在各个数据库中。在进行查询时往往需要通过范围法或者哈希法找到对应的数据库进行查询,但这只能满足按照关键字来进行的查询。当业务中存在按照其他属性进行查询的需求时就无法满足了,此时需要遍历全部数据库,显然不可接受。

因此设计了一种基于数据基因水平切分数据库的存储架构方法,从而快速定位这条数据落在哪个库上。

现有技术方案

索引表法:索引表是用来维护其他属性与关键字的对应关系,当通过其他属性访问数据表时,先通过索引表找到该属性对应的关键字,在通过关键字按照范围法或者哈希法找到对应的数据库进行取数。

缺点:多一次数据库查询,性能下降一倍;数据冗余。

缓存映射法:是将映射的结果存储在缓存中,属性与关键字的映射关系很少会发生变化,一旦放入缓存无需淘汰,缓存命中率超高。如果数据量过大,可以根据属性自动进行cache的水平切分。

缺点:多一次Cache查询 。

路由表法:路由表的策略是它单独维护一张路由表,根据用户的某一属性来查找路由表决定使用哪个数据库,这种方式是一种更加通用的方案。查询请求先通过属性查找路由表,找到该条数据所在的数据库,再进行查询。

缺点:单独维护一张路由表,多一次数据库查询

基因分库存储架构方法

它是通过基于数据基因水平切分数据库的存储架构方法不但能满足按照关键字来进行的查询,而且能够满足按照其他属性进行快速查询,大大提高了其它属性的查询效率。

原理:基因水平切分数据库的存储架构方法是指:在水平分库的场景下,需要按照唯一字段将数据进行分库。为保证表中需要查询的其它字段能快速定位到目标数据库,那么需要将查询字段当作分库基因融入到唯一字段上。从而保证用户通过唯一字段和其它字段查询时均能快速定位到数据库,提高查询速度。

水平分库效果示意图:

数据盘点和数据目录构建方法研究 基于数据基因水平分库的存储架构方法 1

说明:如上图是将 Order表按照oid取余水平切分到四个库中DB0、DB1、DB2、DB3,并满足两个查询需求 区别按照oid和 buyer_id查询数据的存储架构设计。

1. 思路

Order订单表中 oid 为唯一字段,buyer_id为其它字段,按照数据基因水平分库的原理,即需要把其它字段 buyer_id的数据基因,融入到oid中。

2.数据基因融入过程

buyer_id数据基因融入oid的过程。

2.1 确定分库数据基因

通过buyer_uid分库,假设分为4个库,采纳buyer_uid%4的方式来进行数据库路由,所谓的模4,其本质是buyer_uid的最终2个bit决定这行数据落在哪个库上,这2个bit,就是分库数据基因。

2.2 根据数据基因分库

在订单数据oid生成时,oid末端加入分库数据基因,让同一个buyer_uid下的所有订单都含有相同基因,落在同一个分库上。

2.3 数据基因融入过程示意图

数据盘点和数据目录构建方法研究 基于数据基因水平分库的存储架构方法 2

示意图详细说明:如上图所示,buyer_uid=1的用户下了一个订单:

使用buyer_uid%4分库,决定这行数据要插入到哪个库中

分库基因是buyer_uid的最终2个bit,即01

在生成订单标识oid时,先使用一种分布式服务全局ID生成算法生成前62bit 上图中绿色部分

将分库基因加入到oid的最终2个bit 上图中粉色部分,拼装成最后64bit的订单oid 上图中蓝色部分

3. 效果

通过这种方法保证,同一个用户下的所有订单oid,都落在同一个库上,oid的最终2个bit都相同,于是:

通过buyer_uid%4能够定位到库

通过oid%4也能定位到库

小结

本文重点怎么来设计确定数据基因及数据基因怎么融入到分库ID。

基于数据基于水平分库的存储方法,在水平分库的场景下提高了按照其它属性查询数据的性能。

基于数据基因水平分库的存储方法,提升了系统的稳定性和负载能力。

名词解释

水平切分:分为库内分表和分库分表,是根据表内数据内在的逻辑关系,将同一个表按不同的条件分散到多个数据库或多个表中,每个表中只包含一部分数据,从而使得单个表的数据量变小,达到分布式的效果。

分布式服务全局ID:在不分表的情况下,数据的唯一ID,可以通过数据库自增ID来生成,不需要业务中进行实现。但如果由于数据量不断的增大,会对数据进行分库,分表。这样原本的数据库自增ID就用不上了。所以在这种情况下,需要一个服务全局ID,即分布式服务全局ID。如:twitter开源的snowflake算法。

属兔人翻身的真相,不是玄学,是你迟到的价值回报

最近朋友圈疯传的“属兔人2025年要翻身”,其实是一场精心设计的心理游戏。 你有没有发现,每次刷手机,总能看到“属兔人注意!”“2025年立冬后运势大爆发”这类标题? 点进去一看,描述得煞有介事——什么“多年隐忍终得回报”“财运暴涨贵人相助”,甚至精确到月份,让人忍不住对号入座。 可仔细想想,这些说法真的靠谱吗? 1. 为什么“属兔人翻身”能火?因为它太懂中年人的焦虑了 35岁到55岁这个阶段,谁没经历过职场瓶颈、家庭压力、自我怀疑? 房贷、孩子教育、父母养老,哪一样不是压在肩上的担子? 《中国国民心理健康发展报告》早就指出,这个年龄段的人心理压力最大。 而“属兔人翻身”的预言,恰好给了这群人一个盼头——“再坚持一下,2025年就好了!”这种心理暗示,比任何鸡汤都管用。 它让人相信,现在的辛苦不是白费,未来一定会有转机。 2. 心理学揭秘:为什么你会信? 你有没有做过那种星座测试? 明明描述得很笼统,比如“你外表坚强,内心敏感”“你渴望被理解,但很少表达”,却觉得特别准? 这就是著名的“巴纳姆效应”——人总喜欢把模糊的描述往自己身上套。 “属兔人翻身”的套路一模一样。 它不会说“你下个月会中彩票”,而是用“多年的付出终有回报”“家庭事业迎来转机”这种万能模板。 谁听了不觉得是在说自己? 3. 真正的翻身,从来不是靠运气 那些所谓的“财运暴涨”“贵人相助”,其实是你过去十年积累的结果。 比如75年出生的属兔人,如果一直在某个行业深耕,2025年正好是经验、人脉、资源爆发的时候。 这不是玄学,是市场规律——你的价值,迟早会被看见。 而那些等着“运势”改变却不行动的人,就算到了2025年,照样不会翻身。 4. 为什么“2025年立冬”这个时间点这么重要? 因为它是一个心理锚点。 人需要希望,更需要一个具体的期限。 比如减肥的人会说“三个月后我要瘦十斤”,备考的人会想“再坚持半年就解放了”。 “2025年立冬”就是这个期限,它让人有了坚持下去的动力。 科学研究早就证明,积极的心理暗示能降低压力激素水平,改善情绪和健康。 所以,不是2025年有什么魔力,而是你相信“我能翻身”的那一刻,就已经在改变未来了。 5. 别等“运势”,去做那个“贵人” 最讽刺的是,那些真正在2025年迎来转机的人,往往根本不信什么“属兔人翻身”。 他们可能每天早起学习新技能,可能默默优化工作流程,可能坚持锻炼保持精力……这些小事,才是翻身的真正筹码。 所以,别把希望寄托在虚无的预言上。你需要的不是等待,而是行动。 最后说一句: 命运从不偏袒某个生肖,它只偏爱那些从不放弃的人。

属兔人注意!老天暗送“两大福运”,接住就能逆风翻盘,富贵临门

属兔的兄弟姊妹看过来!咱天生心思灵巧、待人温和,做事细致又有分寸,从不争强好胜,却总在默默积攒实力。今天要跟你说个天大的好消息:别再低调等机会了,老天爷已经悄悄为你备下“两大福运”,接住了,往后就能告别平淡日子,逆风翻盘赚大钱,富贵挡都挡不住! 先跟你说句掏心窝的:咱属兔的人不缺智慧,缺的是主动把握机会的勇气。日子是靠用心经营出来的,不是等出来的。平时你待人真诚、处事周全,早就攒下了好人缘,这些都是你命中的“隐形财富”。别总觉得“顺其自然就好”,该出手时就出手,好运才会主动找上门。 第一大福运:“智德吉星”高照,事业财运双丰收!接下来这段时间,你的智慧和才华终于要被看见啦!工作上,领导会发现你细致靠谱的特质,把能出彩的关键任务交给你——比如需要精准把控细节的项目、协调各方关系的合作,这些都是你擅长的领域,正好能大展拳脚,说不定还能升职加薪、奖金翻倍。财运上更是顺风顺水,正财稳扎稳打,副业还可能迎来意外惊喜,比如之前投入的小项目有了回报,或是靠人脉牵线拿到赚钱机会,钱袋子越鼓越满! 第二大福运:“厚积薄发”终有时,38岁是人生黄金转折点!咱属兔的人向来不急于求成,默默沉淀自己,而38岁就是你收获的关键期。之前你积累的经验、攒下的人脉,都会在这个阶段集中发力,让你迎来事业的高峰期。不管是创业的想扩大规模,还是上班的想突破瓶颈,都能得到贵人相助——可能是赏识你才华的前辈,或是志同道合的合作伙伴,他们会在关键时刻拉你一把,让你少走弯路,直奔成功。 最近这段时间一定要留心:贵人已经在向你靠近了,可能是一次偶然的饭局,或是工作中的一次合作,对方会一眼看中你的能力和人品,给你带来意想不到的好机会。而且“三合”吉星助力,不管是谈合作、签合同,还是拓展人脉,都能顺顺利利、事半功倍。感情上也可能传来好消息,单身的有望遇到心意相通的人,已婚的夫妻感情更和睦,家庭美满也是富贵的根基! 咱属兔的人向来实在,这两大福运不是空谈,都是你多年来待人真诚、做事踏实攒下的福报。别再低调内敛了,主动一点、勇敢一点,接住老天爷送的福气,往后的日子必然顺风顺水、富贵临门,再也不用为钱发愁!
标签:
>推荐阅读 >特别推荐 >火热推荐