故事背景:

本人有幸,经老友( 现为x知名快递公司技术总监 ) 推荐进入中国前三大民营快递公司之一工作,在此非常感谢他,在此也非常感谢我在第一家公司帮助我进步的兄弟(我在时的项目经理,现为 x  知名自动识别行业企业部门高级经理)。

下面介绍6年后和6年前的我的职业生涯中的两个单表大数据故事。

(1) 6年后 单表大数据 之故事(一)

来之前老友告之现在核心运营系统 Oracle数据库中单表数据半年过10亿了,使用传统T-Sql不论如何优化,查询客户信息速度也提升不上去。

需要使用企业级搜索引擎(Solr)来解决本部门其余两大辅助业务系统去查询客户信息。如果我过去的话,先把这块带肉的骨头啃了。

当时一听很开心,不就10亿数据吗?不就单表吗?6年前就遇到过类似的情况了。这还是使用成熟企业级的开源软件(Solr),这有何难啊,老友说项目开发周期大概2个月,最长尽量不要超过3个半月,我自信满满的说没问题。

(2) 6年前 单表大数据 之故事(二)

还记得大概5年半前的一个项目,确切的说现在应该是成熟产品了。上次听那兄弟(当时为项目经理,现在已经为该公司的系统集成部的部门高级经理,近十年工作经验。)说:该系统全国大概已经400多家企业级用户了,不乏跨国大企业用户(美国,日本),不乏上市公司。当时遇见的那个问题应该是今天这个问题的缩微版了,那是个单表数据每天100w的量,SqlServer2005下。

当时的情景是这样的:笔者当时正在山西一家企业做软件项目的实施,突然接到上海总部公司电话,让赶紧处理完就奔赴河南一家企业处理系统瘫痪的问题。当时也没多想,实施完了就赶紧买张去河南焦作的汽车票。还没下车,就不断接到客户公司老总的电话,询问车已经到何地了。已经备好了车,老总带着专职司机奔着高速收费站那边等着我了(那一刻,我才深深知道自己的价值,才觉着自己对于这个社会还是可以做些贡献的。)。

客户公司老总也没多说,就简单告知系统瘫痪了,整个生产车间已经不能正常运转了,停了一个星期了。大量药品都堆在生产车间中了,另外在药品生产车间的通道上也都堆满了整箱整箱准备生产的药品。一路上,我们飞奔,路上我简单的吃了口烩面,然后我们就直奔厂区的生产车间。

去了以后发现有个单表数据量已经堆积几千万(具体的记不清楚了),当时看完就懵了。堆积了这么多数据,系统查询怎么会不慢呢,生产不停下来那才怪呢?当时客户方老总以为抓住了我问题马上就能解决,我在他们车间里待多久他就陪多久,每天还点了不少好菜。中间我有打电话求助过总部项目经理,在客户现场Google,百度了N篇解决方案的稿子,索引删了重建,CPU 2核升级到4核(也是他们当时就近能够买到的最好的CPU了),内存单条8g?,又升级到16g?( 这个需要跟我那个高级经理的兄弟核实一下,时间久了当时反正内存不低了,本来是分享的经历的,免得又弄成了口水战,尊重事实,行文要严谨,要严格要求自己。),系统在重启的那几十分钟,速度飞快,但是过不了多久,系统又现之前的死相。前前后后总共折腾了3天2夜,期间睡眠时间严重不足,终于在第三天的下午,我也崩溃了。

紧接着我就给总部老板打电话,向他报告了这边的惨状,以及我所遇见的困境,让他赶紧派项目经理过去。那时我的项目经理采取了一套救急的方案:

(i) 将该上传到国家机构的数据全部上传。

(ii) 将现有的生产任务结束,并上传相应的数据到国家机构。

(iii) 重新创建新的生产库,将未生产的未使用的原生产库数据全部导入新生产库,并重建索引。

(iv) 将原来的生产库全部分离备份。

(V) 将生产系统切换到新的生产库上。

问题才得以解决。

前前后后我们又花去了2天一夜,掐指一算这前后已经让客户公司停产了2个周。

那时才知道一个好的企业级应用的产品的系统架构是有多么重要。

这忙完后我在宾馆睡了10多个小时才缓过气来。

这就是我这几年职业生涯中遇见的两组大数据案例。欲知后事如何且听下回分解。

下回预告:

1. 6年前,我和我的项目经理回到上海总部后对系统升级改进解决方案。

2. 6年后,我遇见比当年更为庞大的数据,我的大数据解决方案。

3. 对于产品级别系统和企业内部系统我的大数据解决方案心得。

4. 大数据应用我们还有哪些杀手锏。

下一篇: MongoDb企业应用实战(一) 写在MongoDb应用介绍之前(ii)

MongoDb企业应用实战(一) 写在MongoDb应用介绍之前(i)的更多相关文章

  1. MongoDb企业应用实战(一) 写在MongoDB应用介绍之前(ii)

    上一篇: MongoDb企业应用实战(一) 写在MongoDB应用介绍之前(i) 有段时间没跟大家去分享和探讨过一些问题,分享过一些经验了(失败过的,痛苦过的才最有看点啊,不知道各位同仁们怎么去看这个 ...

  2. 轻量级Java EE企业应用实战:Struts2+Spring5+Hibernate5/JPA2

    轻量级Java EE企业应用实战(第5版)——Struts 2+Spring 5+Hibernate 5/JPA 2整合开发是<轻量级Java EE企业应用实战>的第5版,这一版保持了前几 ...

  3. MongoDB实战指南(四):MongoDB的Journaling日志功能

    mongoDB的Journaling日志功能与常见的log日志是不一样的,mongoDB也有log日志,它只是简单记录了数据库在服务器上的启动信息.慢查询记录.数据库异常信息.客户端与数据库服务器连接 ...

  4. 跟我一步一步写出MongoDB Web 可视化工具(一)

    前言 距离上一次写博客,已经不记得大概有多长时间了, 是时候继续前行了... MongoStudio 是一个Web的 MongoDB可视化操作工具, 一年半前已经写好, 但是总觉得不足, 现从头开始. ...

  5. python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战

    python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...

  6. Mongodb 集群实战

    该实战过程完全跟着官网一步一步实现 ,官网教程:https://docs.mongodb.com/manual/tutorial/atlas-free-tier-setup/ 使用Mongo Shel ...

  7. MongoDB Spark Connector 实战指南

    Why Spark with MongoDB? 高性能,官方号称 100x faster,因为可以全内存运行,性能提升肯定是很明显的 简单易用,支持 Java.Python.Scala.SQL 等多种 ...

  8. Spring Batch 读 10 万条记录,写到 MongoDB

    实践内容 从 MariaDB 一张表内读 10 万条记录,经处理后写到 MongoDB . 具体实现 1.新建 Spring Boot 应用,依赖如下: <!-- Web 应用 --> & ...

  9. 《Node+MongoDB+React 项目实战开发》已出版

    前言 从深圳回长沙已经快4个月了,除了把车开熟练了外,并没有什么值得一提的,长沙这边要么就是连续下一个月雨,要么就是连续一个月高温暴晒,上班更是没啥子意思,长沙这边的公司和深圳落差挺大的,薪资也是断崖 ...

随机推荐

  1. ubuntu18.04 VirtualBox 开启虚拟机出错 Kernel driver not installed (rc=-1908)

    写的很明白了 提示缺少GCC PERL MAKE,安装 重试..... 重启VM 搞定....

  2. Linux入门进阶第五天——用户管理(帐号管理 )上

    一.帐号与群组 关于使用者帐号: 用户的ID与帐号信息所在位置是 /etc/passwd,而管理密码的数据则是在 /etc/shadow 每个登陆的使用者至少都会取得两个 ID , 一个是使用者 ID ...

  3. 20155234 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 (一)单元测试 ...

  4. 20155319 2016-2017-2 《Java程序设计》第四周学习总结

    20155319 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 ==继承== 6.1.1 继承共同行为 定义:继承基本上就是避免多个类间重复定义共同行为. ...

  5. 优步uber司机申请了为什么一直没有通过审核,帐号也显示未激活

    优步uber现在是越来越火,申请注册成为优步uber司机的人数也日剧增多,申请了的车主都知道,申请后要等待审核,审核通过才可以激活帐号,快的运气好的,三五天不到一个星期就激活了,慢点的得大半个月,还有 ...

  6. Maven学习(十一)-----使用Maven创建Web应用程序项目

    使用Maven创建Web应用程序项目 用到的技术/工具: Maven 3.3.3 Eclipse 4.3 JDK 8 Spring 4.1.1.RELEASED Tomcat 7 Logback 1. ...

  7. jquery Ajax请求中显示Loading...

    jquery Ajax请求中显示Loading... $('#btnTest').click(function(){      $.ajax({           url ---- ,根据你需要设置 ...

  8. EOJ3650 转机折扣(26进制,字符串)

    题面 看成26进制,把较小的那个字符串加1 strcmp(s1,s2)s1和s2有大小时,不一定都是返回1或者-1.....这个地方wa了好几次没有发现 #include<bits/stdc++ ...

  9. Jmeter接口测试(四)传递参数

    参数设置 Jmeter 支持通过 查询字符串参数(Query String Parameters) 或者 Request body 请求体来传递参数. 1.get请求是普通键值对 get请求一般通过p ...

  10. 学习笔记之glog的使用

    下载源码,使用cmake编译,最后得到了32位的静态库 glog.lib 使用库时要注意添加以下预定义: GLOG_NO_ABBREVIATED_SEVERITIES; GOOGLE_GLOG_DLL ...