MongoDb企业应用实战(一) 写在MongoDB应用介绍之前(ii)
上一篇: MongoDb企业应用实战(一) 写在MongoDB应用介绍之前(i)
有段时间没跟大家去分享和探讨过一些问题,分享过一些经验了(失败过的,痛苦过的才最有看点啊,不知道各位同仁们怎么去看这个问题?)。接着跟大家唠叨唠叨。
且说6年前,那段千万数据级别刻骨铭心的经历,让我真正意识到一个好的产品或者是一个好的软件系统是需要不断的提炼,优化,改进,检验,再改进。这才能够一举奠定它在市场中的地位和价值(6年前,与其说那是项目,到不如说是一个完整的自动识别行业的解决方案。(i)高速传送带,(ii)高速成组扫描设备,(iii)条形码打印机,(iv)自动剔除气缸,(v)手持终端[PDA],(vi)高速成像设备,十八般兵器悉数登场,才构筑了后来了全国400多家企业级客户,据最近我当年的那位带头大哥介绍,现在都在那套系统已经安装到一些欧美在华的企业车间中了,他们又弄出了国际版了。)。
接上回:我和我的项目经理回到上海总部后对系统升级改进解决方案
如果单表数据量过多,有什么好的思路呢?我在6年前那段时间真心觉着一些解决问题的办法或者思路太重要了。按照今天大家的官方说法是软件系统中的设计思想太重要,一个好的架构太重要了。如果是几个人或者几十个人的用户,抑或是一天几百条,几千条数据,简单的写写,不谈什么软件设计,不谈什么数据库设计,问题也能解决。但终归大家都能解决的那就没什么含量了,也体现不出来一个项目经理或者是项目中的核心灵魂人物的价值了。
话说我的项目经理到现场一看,毕竟是久经IT战场,迅速的提出解决问题的办法。当时他在我的心目中正如下面这则小故事中说的那个物理学家:
"有一台价值数百万的精密设备故障,怎么搞都没办法,最后一位物理学家说他行,开价十万美元。没办法,答应了。物理学家在图纸上划了一根线,说查这。结果真好了。老板一看一根线就十万,想赖账。物理学家说了一句话:划一根线一美元,知道在哪划线值九万九千九百九十九美元。老板一听,让人付钱。"
他知道从哪里划线,并且是属于一阵见血式的,那就聊聊当时的一些做法,大家如果看到这篇文章,有什么好的想法,好的做法,也欢迎大家不吝赐教。
(i) 根据数据的状态,重新划分使用过的和没使用过的数据。
(ii)没有使用过的数据,按照数据产生的月份迁移到对应月份的数据库表中。
(iii) 建立生产库的历史备份库,将生产库的中已上传至国家监管平台的数据备份至历史库中。
(iv)改进软件,针对查询数据部分,分为当前生产库查询和历史数据查询。
(v)改进新库创建为每一新年手动创建,根据时间判断自动创建,并同步迁移上一年没有使用过的数据。
其实我在后来一些项目中发现6年前的做法,在6年后这个办法依旧不过时。最近跟一个资深的Oracle DBA聊到他在 Oracle中数据的备份和优化策略时,发现他也是采取类似的方式去处理。
(i)对Oracle建立水平分区表,将一个完整的表中的数据存储到不同的数据空间中。
(SqlServer也可以做水平分区表,当时考虑到那是一个全国性的项目,只是采取了更容易维护的方式,自动创建对应数据库,自动创建表结构,这样整个系统的维护成本更低,也能够真正做到替用户着想,不是每个企业都专门去养一帮很N叉的开发,运维人员。)
(ii)每隔6个月,迁移6个月前的数据至历史备份库中。(跟6年前我们的数据库维护策略如出一辙。)
各位同仁们:但是6年前,我怎么能够理解到这种开发或者运维的思想呢?一上来开始写复杂的存储过程我就觉着自己很N了,多年后回想起来这其实没什么哦。现在ORM,LINQ,甚至是NoSql的产品也都用上了,也没有觉着自己有多么N叉哦。只是真心觉着这么6年来的持续的学习,保持着的持续学习状态让我受益匪浅。另外看待一些问题,思考一些问题也更加接地气,更加靠谱些了。想起来了那句话:"最困难的事情是了解自己 最不容易的事情是欣赏自己。"
2014 新的一年真的需要对自己有一个更加理性的认识。
MongoDb企业应用实战(一) 写在MongoDB应用介绍之前(ii)的更多相关文章
- MongoDb企业应用实战(一) 写在MongoDb应用介绍之前(i)
故事背景: 本人有幸,经老友( 现为x知名快递公司技术总监 ) 推荐进入中国前三大民营快递公司之一工作,在此非常感谢他,在此也非常感谢我在第一家公司帮助我进步的兄弟(我在时的项目经理,现为 x 知名 ...
- 轻量级Java EE企业应用实战:Struts2+Spring5+Hibernate5/JPA2
轻量级Java EE企业应用实战(第5版)——Struts 2+Spring 5+Hibernate 5/JPA 2整合开发是<轻量级Java EE企业应用实战>的第5版,这一版保持了前几 ...
- MongoDB实战指南(四):MongoDB的Journaling日志功能
mongoDB的Journaling日志功能与常见的log日志是不一样的,mongoDB也有log日志,它只是简单记录了数据库在服务器上的启动信息.慢查询记录.数据库异常信息.客户端与数据库服务器连接 ...
- 跟我一步一步写出MongoDB Web 可视化工具(一)
前言 距离上一次写博客,已经不记得大概有多长时间了, 是时候继续前行了... MongoStudio 是一个Web的 MongoDB可视化操作工具, 一年半前已经写好, 但是总觉得不足, 现从头开始. ...
- python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战
python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...
- Mongodb 集群实战
该实战过程完全跟着官网一步一步实现 ,官网教程:https://docs.mongodb.com/manual/tutorial/atlas-free-tier-setup/ 使用Mongo Shel ...
- MongoDB Spark Connector 实战指南
Why Spark with MongoDB? 高性能,官方号称 100x faster,因为可以全内存运行,性能提升肯定是很明显的 简单易用,支持 Java.Python.Scala.SQL 等多种 ...
- Spring Batch 读 10 万条记录,写到 MongoDB
实践内容 从 MariaDB 一张表内读 10 万条记录,经处理后写到 MongoDB . 具体实现 1.新建 Spring Boot 应用,依赖如下: <!-- Web 应用 --> & ...
- 《Node+MongoDB+React 项目实战开发》已出版
前言 从深圳回长沙已经快4个月了,除了把车开熟练了外,并没有什么值得一提的,长沙这边要么就是连续下一个月雨,要么就是连续一个月高温暴晒,上班更是没啥子意思,长沙这边的公司和深圳落差挺大的,薪资也是断崖 ...
随机推荐
- java 深入理解引用类型
该博客原创自某位博主,原创博客链接https://www.cnblogs.com/SilentCode/p/4858790.html 本人在全文通读的基础上修改了原文的一点小bug,并在原文基础上继续 ...
- 【转】I2C总线相关知识
1. I2C access 1.1. I2C introduction I2C(Inter-Integrated Circuit)总线是由NXP恩智浦半导体公司在80年代开发的两线式串行总线,用来进行 ...
- BZOJ1029_建筑抢修_KEY
题目传送门 这是一道贪心的问题. 总体做法是这样的:先按照报废的快慢从小到大SORT一遍,优先修报废快的.同时开一个大根堆(C++的朋友可以用priority_queue),用来记录已经修了的建筑的耗 ...
- ORB-SLAM(十一)EPnP
EPnP在ORB-SLAM中主要用于Tracking线程中的重定位Relocalization模块,需要通过当前关键帧Bow与候选帧匹配上的3D地图点,迅速建立当前相机的初始姿态. PnP问题解决了已 ...
- 6、Java并发编程:volatile关键字解析
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在 ...
- 【JUC源码解析】Exchanger
简介 Exchanger,并发工具类,用于线程间的数据交换. 使用 两个线程,两个缓冲区,一个线程往一个缓冲区里面填数据,另一个线程从另一个缓冲区里面取数据.当填数据的线程将缓冲区填满时,或者取数据的 ...
- Elastic stack ——X-Pack安装
X-Pack是一个Elastic Stack的扩展,将安全,警报,监视,报告和图形功能包含在一个易于安装的软件包中.在Elasticsearch 5.0.0之前,您必须安装单独的Shield,Watc ...
- hdu1969Pie(根据体积二分,分馅饼)
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- JDBC中使用Properties类及配置文件的操作
同时发布于:https://blog.csdn.net/Activity_Time/article/details/81149710 一.properties配置文件 开发中获得连接的4个参数(驱动. ...
- Laxcus大数据管理系统2.0(7)- 第五章 数据构建
第五章 数据构建 在数据处理过程,我们经常会遇到这样的情况:大多数时候,用户最初输入的数据会含有大量无意义的.杂乱的信息,需要经过提炼.收集.汇总等一系列手段,才能产生有意义和用户可识别的数据内容:当 ...