接oracle私活价格,也来记录一下第一次接私活的体验

来源

所在部门领导答应另一个部门领导解决业务上的一些问题,刚好是我负责。由于各总原因,没过试用期,领导需要我离职了,跟另一个部门领导确认后,就在离职前 2 天加个班,交付了已经完成的部分。

大概 2 个月后,前同事找我,说要继续做剩下的部分。

项目内容

其实就是把已经在用的 ERP ( Oracle 数据库) 对接简道云的 API,包括推送数据到简道云和从简道云接收表单数据两个部分,而 ERP 这块是没有源代码进行二次开发的,只能修改下数据库存储过程。

由于时间限制,在职时交付的代码主要目的是验证可行性,完成剩余部分的功能需要做一些重构。做了一个分两阶段交付的计划,首先是重构基础代码,再来交付添加新功能的代码。

数据推送

之前有做过一个 Laravel 项目,用的 Laravel Queue 加上数据库作为队列存储。因为 Lavael Queue 的实现是轮询表,然后代码维护了队列各种逻辑,觉得不够优雅 :doge:,加上这次需要用 Python 来实现,所以要另找办法。

仔细查了 Oracle 的官方文档之后发现有个 Advanced Queue 功能,另外还顺便查了下 SQL Server 的 Service Broken 也有个 Message Queue,并且两者都有 CDC 功能。因为不需要收集所有变化的数据,所以就不用 CDC 了。

实现思路是由存储过程将定义好结构的 Message Object push 到 Queue,python 代码获取,并转换结构,推送到指定的 API。整个过程是异步的,不会增加事务耗时,队列的有序、可靠性、重试直接用数据库自带机制就能实现。

坑总是避不掉的,这里新旧坑都说一下。

数据库时区

数据库用的是 UTC+0 时区,但 ERP 客户端应用处理业务数据都是把时间当本地时间看的,也就是整个 ERP 系统的时间其实是错的,还不能去修正。

长连接无法保持

本来 Advanced Queue 是可以做成监听模式,但是我发现无法保持长连接,并且还不会报错!问了下才知道,服务器那边数据库实例随时可能会重启之类的。没办法,改成轮询模式,并且每次都主动打开关闭连接。因为简道云 API 的请求频率限制,性能影响这点可以忽略。

部署到 Windows

开始做的时候说了是要部署到 Linux,结果临交付了说要弄到 Windows 上。

Windows 服务器(附带 360 全家桶)根本就没更新过,缺少 VC++ 库需要的补丁,安装不了 Python3.6 依赖的 VC++ 库,运行不了 Python3.6 !考虑直接使用系统更新功能需要安装的补丁太多,怕更新失败服务器就起不来,只能查补丁依赖列表,手动安装 VC++ 库需要的补丁。

简道云 API 更新了

准备验收结款了,简道云 API 更新了:doge:,不过不是兼容问题,只是增加了部门成员查询接口。最开始做的时候,随口说过的话把自己坑了——这个功能是 API 不支持,否则肯定给你们做。

加了个部门成员信息定时同步到本地数据库的功能,然后我觉得反正做都做了,就再加了个企业微信通知推送报错信息,后面出问题好查一些。

结果

因为自己也觉得应该把之前的事情做完,预计 5 个工作日,不会很肝,所以报价 3000,最终交付完成总计 3 周(仅工作日)。

超期的原因:

拯救艾泽拉斯

各个阶段交付时不能影响正在运行的业务,反馈需要有等待时间

需求变化

需求增加

总结

术士不配拯救艾泽拉斯(已 A )

下次别给自己加戏了,吃饭要紧

事后

抽空重构了一个版本,加上了 SQL Server 的支持,不过总的来说实际意义不大,毕竟应用场景太小众,而收集分析数据 CDC 方式更合适。另外还可以 Message Queue 触发存储过程实现一些业务,或者单机实现异步执行存储过程,不过互联网应用应该是不存在对数据库编程强依赖的场景,依旧用处不大。

不过如果你刚好有 SQL Server 或者 Oracle 需要通过数据库触发 API 之类的需求,还是可以参考一下的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Plain text, flat file, 及flat-file database 如何翻译

经常遇到Plain text, flat file, 及flat-file database 这三个词,但不知翻译成什么样的中文好。请大家多指教。 英文意思我已经找到了: (1) plain text Refers to textual data in ASCII format. Plain text is the most portable format because it is …

《Vim实用技巧》阅读笔记 --- 移动及跳转

1、在对实际行的操作之前加上g,即可对屏幕行进行操作,例如:gj表示向下移动一个屏幕行,g^表示移动到屏幕行的第一个非空白字符等等 2、Vim有两组面向单词正向及反向移动的命令: w 正向移动到下一个单词的开头b 反向移动…

JAVA面试题------------final 关键字是干什么用的?谈谈你的理解。

final 是 Java 中的关键字,它表示的意思是不可变的,在 Java 中,final 主要用来: 修饰类,final 修饰的类不能被继承,不能被继承的意思就是不能使用 extends 来继承被 final 修饰的类; 修饰变量&…

oracle财务软件凭证打印,金算盘财务软件后台数据库为Oracle

金算盘财务软件后台数据库为Oracle,OA系统中虽然提供了金算盘财务软件的接口,但由于版本较低,无法直接采集金算盘财务软件的备份数据。我们发现,在已试验的金算盘财务软件的凭证表中,科目字段中既有科目编码也有科目名…

发布IP地址查询的WEB SERVICE

在值得期待的2005来临之际,发布IP地址查询WEB SERVICE,顺祝博客园的所有朋友们,新年快乐,新年好心情. http://IPLOOKUP.ASPSIR.COM 此外,WHOIS查询WEB SERVICE http://WHOIS.ASPSIR.COM 欢迎大家使用和发表建议

C#23种设计模式

创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bri…

Unity GeometryShader(从一个线框渲染的例子开始)

GeometryShader这个概念,已经出现很久了,但由于性能不佳,所以使用的并不多。甚至移动平台根本就不支持。移动平台的硬件更新速度也是越来越快,GS的应用普及应该不会太远。就现阶段而言,GS来做一些辅助效果也是有一定用…

单身者的十大旅游圣地[转自我爱游网]

http://www.5aiu.com/index.asp[我爱游] 《一》丽江 纵观古今中外,有多少象丽江这样的古城,保护的如此完好而且生机勃勃? 都说丽江是个适合发呆的地方,这话一点也不假,在时光倒退了二十年的地方,住在一个古老的四合院里…

为什么SimpleDateFormat不是线程安全的?以及解决方法说明

一:概述 SimpleDateFormat 类主要负责日期的转换与格式化等操作,在多线程的环境中,使用此类容易造成数据转换及处理的不正确,因为 SimpleDateFormat 类并不是线程安全的,但在单线程环境下是没有问题的。 SimpleDateF…

java+random+oracle,oracle随机数 — dbms_random

oracle随机数 — dbms_randomORACLE的PL/SQL提供了生成随机数和随机字符串的多种方式,罗列如下:1、小数( 0 ~ 1)select dbms_random.value from dual2、指定范围内的小数 ( 0 ~ 100 )select dbms_random.value(0,100) from dual3、指定范围内的整数 ( 0 ~ 100 )sele…

《Effective C#》读书笔记-1.C# 语言习惯-2.使用运行时常量(readonly)而不是编译时常量(const)...

概念 编译时编译时顾名思义就是正在编译的时候。那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码。(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言。比如Java只有JVM识别的字节码,C#中只有CLR能识别的MSIL。…

MQ介绍

一:MQ介绍 1:异步 2:解耦 3:削峰 二:MQ优缺点 三:Kafka和RabbitMQ和RocketMQ比较

白月光

张信哲----白月光http://mu.njzx.com/gt/nan/zxz-200409/01.mp3白月光 心里某个地方那么亮 却那么冰凉每个人都有一段悲伤想隐藏却欲盖弥彰白月光 照天涯的两端在心上 却不在身旁擦不干你当时的泪光路太长追不回原谅你是我不能言说的伤想遗忘又忍不住回想像流亡一路跌跌撞撞…

oracle 次月,Oracle日期查询:季度、月份、星期等时间信息

摘要:Select to_char(sysdate,Q) from dual;--指定日期的季度Select to_char(sysdate,MM) from dual;--月份Select to_char(sysdate,WW) from dual;--当年第几周Select to_char(sysdate,Q) from dual;--指定日期的季度Select to_char(sysdate,MM) from dual;--月份S…

转:A/B测试:实现方法

概念:http://www.aliued.cn/2010/09/13/ab-testing-basic-concept.html 我们先来看一个图: (注:感谢Algo提供本图。) 上图展示了 A/B 测试的实现原理。从左到右,四条较粗的竖线代表了 A/B 测试中的四个关键…

同学录

在中学同学的提醒下,去5460和ChinaRen的同学录更新了我的联系方式等等,了解到中学同学过年时在家乡搞了一个聚会。很久没有见过他们了,最近的一次是去年在zte南研所见到张辉,他从zte深圳来南京出差,此后不久我就离开了…

linux命令编写四位数密码本,grub-crypt命令 – 对口令进行加密

grub-crypt命令的作用是对口令进行加密。grub-crypt命令支持对口令进行MD5和SHA加密,默认情况下是对口令进行SHA-512加密。SHA是Secure Hash Algorithm的简写,中文为安全散列算法,是美国国家安全局 设计,美国国家标准与技术研究院…

mac修改host

1.打开终端 2.输入sudo vi /etc/hosts 3.输入密码 4.进入文件hosts,然后按“i”,进入编辑模式 5.把你的host添加到最后 6.esc推出编辑模式 7.输入:wq,保存退出