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个月了,除了把车开熟练了外,并没有什么值得一提的,长沙这边要么就是连续下一个月雨,要么就是连续一个月高温暴晒,上班更是没啥子意思,长沙这边的公司和深圳落差挺大的,薪资也是断崖 ...
随机推荐
- linux内核中的IS_ERR()、PTR_ERR()、ERR_PTR()
IS_ERR宏定义在include/linux/err.h,如下所示: #define MAX_ERRNO 4095 //判断x是不是在(0xfffff000,0xffffffff)之间,注意这里用u ...
- 【转载++】C/C++错误分析errno,perror,strerror和GetLastError()函数返回的错误代码的意义
本文是上一篇“fopen返回0(空指针NULL)且GetLastError是0”的侧面回应.听赶来多么地正确和不容置疑,返回NULL时调用GetLastError来看看报错啊,但当时却返回了0,大家都 ...
- 在window10平台下安装TensorFlow(only cpu)
这是我在安装tensorflow遇到的问题记录 希望可以给大家一些帮助(2019年1月6日) 1. 需要安装的环境及软件 python3.6 Anaconda Tensorflow 2. 先安装ana ...
- Fibonacci递归以及数组实现
说起Fibonacci数列,首先想到的就是递归算法了,这也是帮助理解递归算法比较经典的题目实现如下: public static int Fibonacci(int n){ if (n == 0 ...
- 笔记-django-视图
笔记-django-视图 1. dispatch 1.1. overview To design URLs for an app, you create a Python module ...
- MySQL 存储过程常用SQL语句收集
1,select curdate() /*2016-10-08*/ 2,select date_sub(curdate(), INTERVAL 6 DAY) /*2016-10-02*/ 3,case ...
- java nio之Buffer
一.JAVA NIO 是在和channel交互的时候使用的.Channel将数据读入缓冲区,然后我们又从缓冲区访问数据.写数据时,首先将要发送的数据按顺序填入缓冲区.基本上,缓冲区只是一个列表,它的所 ...
- jdbc 连接各种数据库
package com.fh.controller.ruitai.util; import java.sql.Connection; import java.sql.DriverManager; im ...
- hdu1231最大连续子序列(动态规划)
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- GIt学习第一天之安装和版本库创建
搬运自 ‘廖雪峰的官方网站’ 1.git安装 官网下载地址:https://git-scm.com/download/win 百度网盘下载地址:https://pan.baidu.com/s/1k ...