|
先来给你提一个设计上的意见:
母表的PRE_ID没必要用这种形式,把三个列分开来存,查询更方便。要合在一起可以用VIEW实现。
SEAT_REMANT表完全没有必要,实时从SEAT表中COUNT就可以,也可以做一个VIEW. 维护这个表的成本远远抵不上带来的收益。
双方都在运行中,不允许停止。比方一批席位从一个节点传送到另一个节点,双方都在作业中。数据中会有部分重码等等。
嘿嘿,我倒想问你怎么实现增量更新?你怎么知道哪些数据被增删改过了?
ORACLE有高级复制,DATA GUARD, 都是成熟、高效、强大的产品!
还有一种可能,双方不同数据库。比方现系统是SYBASE,新系统是ORACLE,DAU是完全胜任的。
只要需要,我很快就会把SYBASE和MYSQL,SQL SERVER,DB2的DAU写出来。
ORACLE跟异构数据库通讯可用透明网关。市面上ETL工具也很多,想不出有什么理由自己去做。
其实你跟我叫板,主要还是性能问题,也许,我的程序性能不如你,但要比很多二流程序员好。
你出程序的确很快,但世上这样的高手能有几个?身价几许?能说劳动生产率高吗?你那个程序不长,可是我现在还在迷宫里转呢。我都搞不清什么逻辑了,因为业务逻辑我清楚,那个不清楚的逻辑是什么逻辑我不清楚。
我的DAU程序员,如果对C略有了解,半天功夫就能培训出一大堆来。他们只需要简单的,面向过程的思维,就可以实现任何设计好的业务逻辑。
学10个函数包打天下,什么活都敢接。当然还有一堆utilily ’s,可用可不用。(哈哈,有点卖膏药的味,不过我不收钱,白给)
不仅仅是性能问题。我完全可以写出你那个风格的程序,但是我不愿意。你那种嵌套循环的写法,即使是我这样的老程序员,也要费点神才不会搞错。用SQL表连接,只要把连接条件、过滤条件丢给ORACLE就行了,至于它用NESTED LOOPS JOIN还是HASH JOIN我根本不用操心!计算全部在SELECT部分完成,一目了然。
c那个DAU程序,我写了不到400行,如果认真看,一般人1个小时基本能搞懂。(一帮孩子照它写TPF呢,苦阿)。
你的程序100行左右,我,哦别说我这笨人了,找个对PLSQL比较精通的吧,要看几个小时能明白?
原来见过一个ORACLE虫,写一个SQL4小时,调好用一周,经常的。
DAU,4个小时写的,一个小时调通,调对。
[/QUOTE]
只要你明白一点SQL的原理就很容易看懂了。这只是个习惯问题,我相信你很快就会习惯。
先来给你提一个设计上的意见:
母表的PRE_ID没必要用这种形式,把三个列分开来存,查询更方便。要合在一起可以用VIEW实现。
SEAT_REMANT表完全没有必要,实时从SEAT表中COUNT就可以,也可以做一个VIEW. 维护这个表的成本远远抵不上带来的收益。
双方都在运行中,不允许停止。比方一批席位从一个节点传送到另一个节点,双方都在作业中。数据中会有部分重码等等。
嘿嘿,我倒想问你怎么实现增量更新?你怎么知道哪些数据被增删改过了?
ORACLE有高级复制,DATA GUARD, 都是成熟、高效、强大的产品!
还有一种可能,双方不同数据库。比方现系统是SYBASE,新系统是ORACLE,DAU是完全胜任的。
只要需要,我很快就会把SYBASE和MYSQL,SQL SERVER,DB2的DAU写出来。
ORACLE跟异构数据库通讯可用透明网关。市面上ETL工具也很多,想不出有什么理由自己去做。
其实你跟我叫板,主要还是性能问题,也许,我的程序性能不如你,但要比很多二流程序员好。
你出程序的确很快,但世上这样的高手能有几个?身价几许?能说劳动生产率高吗?你那个程序不长,可是我现在还在迷宫里转呢。我都搞不清什么逻辑了,因为业务逻辑我清楚,那个不清楚的逻辑是什么逻辑我不清楚。
我的DAU程序员,如果对C略有了解,半天功夫就能培训出一大堆来。他们只需要简单的,面向过程的思维,就可以实现任何设计好的业务逻辑。
学10个函数包打天下,什么活都敢接。当然还有一堆utilily ’s,可用可不用。(哈哈,有点卖膏药的味,不过我不收钱,白给)
不仅仅是性能问题。我完全可以写出你那个风格的程序,但是我不愿意。你那种嵌套循环的写法,即使是我这样的老程序员,也要费点神才不会搞错。用SQL表连接,只要把连接条件、过滤条件丢给ORACLE就行了,至于它用NESTED LOOPS JOIN还是HASH JOIN我根本不用操心!计算全部在SELECT部分完成,一目了然。
那个DAU程序,我写了不到400行,如果认真看,一般人1个小时基本能搞懂。(一帮孩子照它写TPF呢,苦阿)。
你的程序100行左右,我,哦别说我这笨人了,找个对PLSQL比较精通的吧,要看几个小时能明白?
原来见过一个ORACLE虫,写一个SQL4小时,调好用一周,经常的。
DAU,4个小时写的,一个小时调通,调对。
只要你明白一点SQL的原理就很容易看懂了。这只是个习惯问题,我相信你很快就会习惯。
程序还是没转出来,关键是许多操作不懂,MERGE要先学,nvl原来就似懂非懂,trunc()是什么?等等。view里的数据何时可用?都有些什么?好像是些非过程的东西,拿过程思维老是转不过来。
这个程序很好懂的。你先往参数表插入一行查询条件,注意不要COMMIT, 它是临时表,提交完数据就没了。
然后你可以SELECT * FROM VW_TRAIN, 或VW_SEAT, 或把里面的每个子查询单独拿出来运行,看看结果。就是一些表连接而已,和你的嵌套循环结果是一样的。
NVL, TRUNC 都是很基础的东西,就看你愿不愿意花几分钟去了解一下。
VIEW是一个定义好的查询,SELECT * FROM VIEW就相当于执行了那个查询。它只是个逻辑上的空壳子,可以把复杂的查询模块化。
还有什么看不懂的就提出来,我说到你懂为止,就怕你不耐烦呢! |
|