哈希码托管从想法到产品

之前我们公司做放贷产品的时候,都缺少一个合适的协议托管平台,用来证明我们公司对于当时签订的条款和利率,没有修改过。有人提到过比特币用的区块链协议,在网上看了一眼,这种协议貌似比较慢,主要是分布式的,需要修改多个数据库。可是从实用的角度出发,1.公司的数据要保存到多个服务器上,至少要和每一家都要谈妥,2.涉及企业核心数据外泄的风险,3.据说比较慢,4.当然没有怎么研究过这个东西,学习成本也是一个考虑。总之觉得不是一个方便快捷的解决方案。如果用类似安存的产品,每个标的都要至少1~2块钱太贵了。
其实有一个很简单的方法就可以解决这个问题,就是我们需要一个平台,他可以保存hashcode,这样一旦客户提出质疑,就可以将协议MD5 hash一下,用得到的hashcode和当时保存的hashcode比较,如果一致,就可以证明我们没有修改过利率等关键的数据,但是没有这样的平台。我觉得实现这个超简单,很快就搞定了,就开始弄这个产品了。
产品虽然简单,但是我们要解决的主要是数据量的问题。当数据量达到10亿,100亿,1000亿的时候,我们的数据库能不能支撑下来,最终采用的是mongodb做主数据库。
mongodb数据库主要有3个表,一个公司表,记录公司的基本信息和数据表信息list(每条数据记录数据主键id,表中数据数量,更新时间)。数据表,记录每个公司的具体数据,每条记录里面存20000条数据,大概3~4M的文件。索引表,记录递增索引。
增加数据的时候,首先看公司表的数据表信息list,看list里面有没有数据量没有达到数据量上限的数据表。如果有,则写入这个表,同时更新公司表的数据表信息list。如果没有,则新插入一条数据列表,同时将数据列表信息添加到公司表的数据表信息list。当然对于上传的主键每家公司都不允许重复的,这个是直接调用mongodb来帮我做检验的,就是在公司下的所有数据列表中,都不能有这次上传的多个主键,这个也是mongodb强大的地方,一个指令就可以了。
系统支持批量上传,单笔查询。数据上传的时候需要对字符串进行检验,防止因为网络传输错误,导致记录的数据有问题。数据检验这里一开始想对批量数据进行检验,但是我们上传的是一个list类型,json解析后,顺序是不确定的,不太方便像微信支付一样对字符串按照字母顺序排序后算校验码,那就浪费一点网络带宽,每个key-value组合后面都加一个校验码,计算方法为将key-value连接成一个字符串后MD5做运算。
做好了保存数据的代码后,需要做一个数据备份。采用mysql数据库做数据备份,建立两个表,一个公司表存储公司信息,一个数据表存储数据信息。数据表里面备份数据的字段为长字符串类型,直接备份mongodb数据库里面的数据表的json字符串。这样即使数据量很大,数据条数也不会很多,不会很快达到mysql的单表数据列上限的。数据每天晚上备份一次,将更新时间小于一天的数据做全量备份,由于每家公司实际上当天写入的数据也就1~2条数据集合(2~4万条数据)。因此备份的数据量并不大。
后来,其他同事提出来,我们的系统存在一个问题,就是如果其他公司存心作弊,一开始上传的就不是真实数据的MD5校验码,而是修改的数据,那我们实际上只能证明修改后的数据没有被改过。不能证明和用户签署的协议没有改过。怎么完善这个证据链是个问题。后来领导说,网易付费邮箱就能证明邮箱的数据没有被改过。这样,当公司和客户发生交易的时候,只要向客户发一封邮件,就可以证明当时签署的协议是没有被修改过,同时也保护了公司的商业机密。
这样看来我做的这个产品暂时没有用途,但是从技术的角度讲,这是个mongodb数据库的经典设计

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值