理性讨论异常黑卡回收问题

2019/12/06128 浏览综合
有点累,写篇文放松放松。
跳着看的话可以看看分界线周围的。
首先为什么有人认为黑卡无法回收呢?
主要依据其一大概是认为游戏数据不是实时写入数据库的。
其二数据有保存时限,但对一个刚开服的游戏来说,这条理由不用考虑。
先说一下咱们玩游戏的时候,大部分数据都是在缓存里跑的热数据,并不是实时写入数据库持久化保存的冷数据,根据数据的重要程度不同,写入间隔是不一样的。
举个例子:做一道比较长的口算题,在脑袋里可能跑了很多步骤(跑缓存),但是用笔记录到纸上的可能只有几个中间数字和答案(写入数据库)。
这也就是为啥有些游戏回档是按节点回的,半小时前,一个小时前,一个半小时前这样。
但是这个不绝对,根据具体游戏类型(MMO这种重玩家交互的和半单机游戏数据量就不一样)不同也有隔几秒十几秒将缓存写入数据库的。
为什么不是实时写入是因为数据库的读写太慢了(相对而言)
然而这条理由不合理。
有句玩笑话:整个游戏里做得最好的就是充值系统。这句话有一定合理性。
对于黑卡这种和现实货币相关联的重要数据都是会在数量变化的时候试试刷新的,常规来说,氪金货币和消费记录都是独立出来(分区),不和背包道具人物数据这些混合的,是实时保存的(数据量小)换句话说,就算游戏里啥都回档了,氪金记录,氪金货币也是不可能消失的(处于保护消费者权益角度考虑)
------------
其次就是为什么把数据揪出来需要比较长的时间。
数据库就像一本字典,查过字典的朋友们都知道,想要查询某个字,我们必须知道字的读音或者是偏旁部首,最起码也要知道笔:画顺序。然后根据这个字的特征在字典索引里边找到字对应的页码,这样就可以很方便地查到那个字了。
对于数据库来说,同样存在一个类似上边提到的索引,也就是目录一样的东西。
游戏的目录里是肯定不存在“多领了1w黑卡”这么简单直接(太多条件太复杂)的搜索条件,也就是说得把这些领了1w黑卡的玩家数据从数据海里捞出来,不会像我们日常使用的搜索引擎方便快捷。
理想化简单化考虑这个问题:
直接把所有点击过异常邮箱领取按键的用户数据过滤出来,然后-1w。
当然这个是非常非常理想的情况,只是便于理解。
毕竟没有特殊需求是不会刻意设置“点击异常邮箱领取按键”这样的索引的。就像普通字典的索引表里不会用成语做索引一样。
换个思路:
1:把零氪党的数据筛选出来(分离)
2:从筛选出来的(零氪)玩家数据里把黑卡>1w的全部-1w
3:人工对照消费记录和黑卡数量,差1w的-1w
当然这也是个理想化的情况,实际操作起来情况肯定更多,之所以要多出12两个步骤也是为了节约时间。
可能有人提出问题,为啥要把零氪氪金分开,这里不一定这么操作,只是为了好理解,12步就是一个机器操作减少数据量的方法。只是为了说明纯粹靠人工校对不现实,如果不靠机器快速筛掉一部分,全靠人工校对充值记录怕不是要查到猴年马月去(把字典带拼音抄一遍)
*************
概括一下,上面这个例子主要说明:
要把异常黑卡全部回收需要人为设定异常数据的筛选条件+机器花时间把异常数据找出来+机器处理异常数据(-1w)+意外情况靠人力校对
这里面人工肯定是最慢的,其次机器处理虽然比纯人工快也快不到哪里去。因为数据库读写速度相对慢(特别是数据量大的时候),就算只是简单的筛选条件把数据分开都需要大量时间,而且一拖玩家数据就需要拖一串出来。(不会分那么细,一本字典几百页目录也很烦的)
如果真的纯靠机器设置定时任务自动校对消费记录和黑卡数目,可能耗时会上几十上百个小时。
而且对数据库进行这些操作需要停止和它关联的服务器。(停服一停十几个小时肯定是难以接受的)
这也就是为什么有些游戏会出现集中封号的情况,新活动或大版本更新前停机维护的时候,正好花几个小时集中处理。
-------------
那么有没有可能异常黑卡回不来呢?
我们就讨论最极端状况:字典的目录给撕干净了。
而且这本字典是乱序的,没有按照abcd顺序来排字,完全就是混乱的,但是只要想查的字仍然在字典里,就不存在查不到的问题,遍历一边总能找到。
只要(数据库)字典仍然是完整的,存放字的部分(黑卡数据,消费记录)没有缺页少页,就没有一张异常黑卡能跑掉。它就在那里,查不查得到只是时间问题。
上边的只是简单的讨论,因为个人水平有限而且也不清楚具体情况,只是泛泛的讨论,难免存在错误。大家就随便看看,有错误也提前感谢大佬们指正。
写这个的目的也是希望大家能理性看待这次黑卡事件。多点包容支持和理解吧。
2
2