首页 / 科技百科

数据盘点和数据目录构建方法研究

2025-05-03 08:35科技百科

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

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

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

背景

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

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

现有技术方案

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

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

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

缺点:多一次Cache查询 。

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

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

基因分库存储架构方法

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

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

水平分库效果示意图:

说明:如上图是将 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 数据基因融入过程示意图

示意图详细说明:如上图所示,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-06-23
  • 世界之最

    世界足坛最伟大的10号球员盘点,贝利 梅西 马拉多纳在列

    绿茵场上的10号,如同一面光辉熠熠的旗帜,代表着球队的荣耀与辉煌。这一传奇号码的荣耀,最初由那位闪耀的球王贝利所铸就。他身披10号球衣,驰骋在绿茵场上,用他精湛的技艺和超凡的领导力,为球队带来一次又一次的胜利。他的身影,如同一座丰碑,屹立在足球史册的巅峰。10号的传奇并未因贝利的退役而黯淡。新一代球王马拉..

    2025-06-22
  • 中国工程院院士吴玉章:创新免疫学研究,提升人体“抗风雨”能力

    近日,国际免疫学在陆军军医大学新桥医院翻开了新一页:全球首个免疫专病医学中心——新桥医院免疫专病医学中心正式成立。这一平台由中国工程院院士吴玉章领衔打造,改变了传统免疫诊疗模式,构建了从实验室到病床的完整创新链条。在吴玉章团队独创的“评估—干预—重建”技术体系支撑下,该中心瞄准免疫医学三大世界性难题..

    2025-06-22
  • 旅游百科

    钱德拉X射线天文台研究附近的活动星系NGC 5728

    NGC 5728:全波段发射0.3-7.0千电子伏。Credit: Falcao et al, 2023神奇的地球uux.cn据美国物理学家组织网by Tomasz Nowakowski , Phys.org:利用NASA的钱德拉X射线天文台,天文学家对附近一个名为NGC 5728的活动宇宙岛及其活动宇宙岛核AGN进行了深度X射线观测。观测活动的结果于3月1日发表在预印服务器arXiv上,提供了关于..

    2025-06-22
  • 旅游百科

    研究发现以前被认为是最古老的苔藓虫化石实际上是绿藻

    来自小石坝物种群的原生物种化石,彩奇网,显示了这种藻类附着在腕足类外壳上。Credit: Zhang Xiguang(神奇的地球uux.cn)据美国物理学家组织网(by Durham University):一项新的研究显示,一群史前海洋物种并不像我们想象的那么古老——它们最早的化石实际上是海藻。英国杜伦大学、中国云南大学和贵州大学的专家进行的..

    2025-06-22
  • 世界奇闻

    天体物理学家发现新的引力波探测方法 探索宇宙最深处的奥秘

    研究人员发现了一种创新的引力波探测方法,利用天文望远镜将引力波转化为行星磁层内的电磁信号,从而促进对宇宙早期阶段和宇宙现象的研究。科学家们提出了一种突破性的探测高频引力波(HFGWs)的方法。科大物理系刘教授团队提出的突破性概念,可让地球磁层中的单个天文望远镜成为全球变暖信号的探测器。资料来源:香港科技..

    2025-06-21
  • 明星秘密

    娱乐圈5大明星公众露丑事件盘点,他的行为让人三观尽毁?

    动不动就在大庭广众之下做出一些令人尴尬的事情,真的是没谁了!先说说咱们的"国民闺女"关晓彤吧。前段时间,她和鹿晗一起参加活动,结果在台上居然直接伸手摸鹿晗的脸,还一脸享受的样子,完全忘记了台下还有那么多观众和媒体呢!这一幕被拍下来后,瞬间引爆了网络,网友们纷纷表示:小姑娘,注意影响啊!人家鹿晗好歹也..

    2025-06-20
  • 排行榜

    国产八大汽水盘点,童年中的老品牌们如何迸发新生?

    随着近年来国货崛起、国风回潮的步调,不少原本风雨飘摇的国产老字号汽水也支楞了起来。天津山海关汽水厂、沈阳八王寺汽水厂、武汉饮料二厂、北京北冰洋食品厂、广州亚洲汽水厂、崂山汽水公司、重庆天府可乐集团公司和上海正广和汽水厂被并称为当时的“汽水八大厂”。这些国产老字号汽水品牌曾于90年代集体陷落,一度消失于..

    2025-06-20

微信分享

微信分享二维码

扫描二维码分享到微信或朋友圈

链接已复制