【巨杉数据库】银行流水查询系统设计
可以使用以下经典(三副本二分组一实例)的方式部署巨杉数据库。部署的过程可以参考官方的链接
图片里面说明了各个docker容器对应ip地址和端口号,调用的方式为ip:端口号,但一般只直接使用协调节点。
在查询系统中,由于流水号是均匀分布的,因此通过建立唯一值索引,通过特定字段的值快速定位到匹配的记录,精确查询的效率将会大大提升,我们可以获得良好的查询效率。但由于小于需要优先返回与当前时间较近的记录,因此我们设置为倒序。
而个人账号字段拥有一定规模的重复数据,并不适合通过索引来提高查询效率,但我们可以考虑通过使用hash分区的方式让所有的个人账号均匀地分布到不同的物理机,充分有效地利用、发挥所有的物理机性能,这样可以提高多线程查询、并行计算的能力,使得基于流水号(tx_id)字段的查询具有更高,更稳定的效率。
最后综合两种查询场景,我们尝试分析其他类型的分区方式。我们需要规避范围分区(range),流水号的字段具有自增的特性,因此如果基于流水号字段使用范围分区,则会导致我们的数据分布不均匀,从而影响到我们的查询效率;而基于个人账号使用范围分区则无法克服部分高频交易账户导致分布不均,因此我们不需要考虑使用范围分区(range)。而枚举值分区分区方式(list)只适合离散的数据,对于具有海量的交易数据,流水号字段与个人账号字段均可以视为连续型字段,因此我们也不需要考虑枚举值分区方式与复合分区。
综上考虑,我们可以使用流水号字段(tx_id)建立唯一值索引,使用个人账户(account_id)进行hash分区。两种场景不同的查询效率要求是由两种字段的取值分布决定,但我们可以采取适当的方式提高我们的查询效率。
**但由于分区键必须是所有唯一索引和主键索引的共同子集,因此我们需要建立外键约束来保证流水号字段的全局唯一性。**如下图所示,其中test表是子表,other表是父表。其中,other表的主键为tx_id和account_id,并且tx_id有全局唯一性。同时,test表中tx_id和account_id即是主键,又是外键,因此与父表的tx_id,account_id组合是一一对应的关系。
这里,我们基于Tomcat作为服务器,在Eclipse创建web工程,使用web界面对查询结果进行展示。下图是我们的web系统框架图。
我们先插入1400多万条数,然后对查询效果进行展示,首先,设置两种实验,检验查询的稳定性
- 第一组:设置10组多线程并发查询,每组100个线程,每次间隔500ms,共进行3次,计算平均值,检验其查询效率
- 第二组:设置100组多线程,每组100个线程,每次间隔500ms,检验其稳定性
第一种测试中,每1000条查询中平均有6.7条响应时间超过100ms,每条平均响应时间为43.2ms
在第2种测试中,10000条数据中270条超过100ms,每条平均响应时间为48.33ms
我们可以看到效果还非常理想的,基本上可以保证在50ms内返回查询数据。
总结: - 如想提高查询的效率,可以考虑从建立索引,分区上考虑,但同时需要考虑数据本身的分布特性。
- 可以使用explain + sql查询语句,查看是否使用了索引,如果没有适应索引,一般来说,结果都会非常慢的
【巨杉数据库】银行流水查询系统设计相关推荐
- 基于巨杉数据库的银行流水查询系统
背景: 银行流水账单俗称银行卡存取款交易对账单,也称银行账户交易对账单.指的是客户在一段时间内与银行发生的存取款业务交易清单.一般而言,在申请贷款或者信用卡时,银行或其他金融机构会要求借款人提供申请者 ...
- vue开发银行流水查询系统--基于巨杉数据库
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.安装vue环境,并新建Vue项目 二.界面开发 1.登陆界面开发 2.后台查询界面开发 3.查询功能实现 3.1查 ...
- 巨杉数据库linux,【巨杉数据库SequoiaDB】巨杉Tech |巨杉数据库的HTAP场景实践
01 背景 由于业务形式的发展,越来越多的需求需要对交易数据进行实时分析,例如推荐.决策.监控等,传统的处理办法是使用ETL的方式把OLTP业务产生的数据同步到OLAP的数据数据库,导致了数据需要在不 ...
- 【巨杉数据库SequoiaDB】巨杉Tech |巨杉数据库的HTAP场景实践
01 背景 由于业务形式的发展,越来越多的需求需要对交易数据进行实时分析,例如推荐.决策.监控等,传统的处理办法是使用ETL的方式把OLTP业务产生的数据同步到OLAP的数据数据库,导致了数据需要在不 ...
- 巨杉数据库中标东莞农商银行非结构化内容管理平台项目
2019独角兽企业重金招聘Python工程师标准>>> 近期,巨杉数据库中标东莞农村商业银行非结构化内容管理平台项目,通过新一代分布式数据库技术,助力东莞农商银行智慧化转型. 本次合 ...
- 【回顾】巨杉数据库中标东莞农商银行非结构化内容管理平台项目
2018年,巨杉数据库中标东莞农村商业银行 "非结构化内容管理平台项目" ,通过新一代分布式数据库技术,助力东莞农商银行智慧化转型. 本次合作,巨杉数据库将帮助东莞农商银行接轨最前 ...
- 银行业用户井喷式发展——解密巨杉数据库为何收获银行用户青睐
金融级分布式关系型数据库 SequoiaDB 巨杉数据库,近期连续中标多家银行客户,包括股份制银行.农信农商银行和城市商业银行等客户在内,目前银行客户已经超过50家.银行业已形成全维度的市场矩阵,覆盖 ...
- 巨杉数据库中标张家口银行、保定银行,华北地区布局再升级
近期,巨杉数据库中标张家口银行,保定银行项目,应用业务场景包括联机业务.数据中台等,这标志这巨杉数据库银行业布局再进一步. 城商行是目前我国具有重要意义的一类银行,近年来随着市场的变化,城商行的机遇更 ...
- 独家丨专访雅捷信息董事长、NVIDIA全球副总裁,看“非主流”的GPU数据库如何升级银行数据查询与加工...
2012 年,正在哈佛大学写硕士论文的 Todd Mostak 需要查询大量的论文参考资料,他发现使用以 CPU 为处理核心的数据库系统做资料查询速度非常缓慢.而且很多时候,Todd Mostak 在 ...
最新文章
- java导出多个excel并打成zip包
- 我理解的javascript事件循环(一)
- 协同推荐算法没有这么复杂,真的
- 2021年中总结汇报PPT
- java---面试题 丑数
- 吴恩达机器学习作业(4):正则化逻辑回归
- Flask爱家租房--发布新房源(总结)
- 满二叉树及完全二叉树的相关性质证明
- 2款在线FM音乐聚合播放PHP源码 带搜索
- Python入门-散点图绘制
- Docker教程:使用docker配置python开发环境
- 问题3:filesystem:不是std的成员,filesystem:该名称的命名空间或类不存在
- 高精度轻量级实时语义分割网络:2K视频分割可达24.3GFLOPS和36.5FPS
- 南澳大学计算机科学专业学费,澳洲南澳大学生活费
- 无线局域服务器架设方法,技巧:如何实现局域网架设BT服务器
- python抢票脚本github_GitHub标星超12K,抢票神器大更新,支持候补!
- HPRT HLP106S-UE 驱动
- tkMapper插件的详细讲解
- WPF中任务栏只显示主窗口
- kafka实践(十五): 滴滴开源Kafka管控平台 Logi-KafkaManager研究