楼主: yulihua49

[PRO*C] 看我做的数据库包装器

[复制链接]
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
611#
发表于 2013-6-19 05:42 | 只看该作者
这个帖子长得都可以写一本书了

使用道具 举报

回复
论坛徽章:
1
2010广州亚运会纪念徽章:射箭
日期:2013-06-26 17:43:12
612#
发表于 2013-6-19 08:36 | 只看该作者
19楼说的对,但我顶newkid 。

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
613#
 楼主| 发表于 2013-6-19 15:13 | 只看该作者
本帖最后由 yulihua49 于 2013-6-19 16:24 编辑
newkid 发表于 2013-6-18 22:37
如果你们的flag都是按日期update的,应该设计另一张表,每天一行记录,只需update一行。

"我的另一个程序 ...


这个应该用外部表,用C#也是走上了邪路。

原文件格式与表结构完全不同,变换太复杂不能用外部表。

我9秒完成了任务,怎么就是邪路了呢?要是让PL/SQL干,,9小时未必能完事。

有些事情,是适合程序语言干的,不必事事PL/SQL。 这活,JAVA和C#都可以干。我的意思,DAU提供了比他们高得多的性能。
不要怀疑DAU的性能。

使用道具 举报

回复
论坛徽章:
19
奥迪
日期:2014-01-06 17:03:11阿斯顿马丁
日期:2013-09-18 17:52:02保时捷
日期:2013-08-22 15:19:42保时捷
日期:2013-08-26 14:38:58马自达
日期:2013-09-13 10:46:36三菱
日期:2013-09-03 16:40:23雪佛兰
日期:2013-09-18 17:54:38ITPUB社区千里马徽章
日期:2013-06-09 10:15:34紫蛋头
日期:2013-05-09 09:35:45双黄蛋
日期:2013-06-19 15:10:52
614#
发表于 2013-6-19 15:14 | 只看该作者
这个东西,碰见复杂的逻辑就傻了,一般的小问题,我觉得也用不着

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
615#
 楼主| 发表于 2013-6-19 15:28 | 只看该作者
本帖最后由 yulihua49 于 2013-6-19 16:08 编辑
andhai 发表于 2013-6-19 15:14
这个东西,碰见复杂的逻辑就傻了,一般的小问题,我觉得也用不着


你似乎并不了解这个东西。
这个东西本身并不处理任何逻辑。它只是用数据库存取数据,尽可能使用最简单最高效的SQL语句。
一切复杂逻辑都由C语言处理,C有什么逻辑处理不了呢?如果C都处理不了的逻辑,你还指望PL/SQL?
实际上,我们现在的DAU应用系统,其逻辑都复杂到PL/SQL根本处理不了。
正如前边所说,如果你的系统过于复杂而难于处理,DAU是最后的救命药。

前边615楼的那个路由表预处理的例子,NEWKID也提了意见。我还真想拿出来打擂,一看逻辑太复杂,PL/SQL不太可能完成。
主逻辑只有100多行C,但是3个月不见,我自己都不认识了。





这个坛子里,太多的问题,在C程序员的眼里根本不是问题,也不是SQL应该解决的问题,结果一大帮高手大侠,弄出一堆稀奇古怪的SQL,解决了不是问题的问题。
这就是思维定式。认为只有这些稀奇古怪的SQL才能解决问题。

比方说,行转列,这是什么问题吆? 把一些行读到内存,按行存入,按列打印,用得着乱七八糟的SQL吗?最简单的sql就行。

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
616#
 楼主| 发表于 2013-6-19 16:46 | 只看该作者
andhai 发表于 2013-6-19 15:14
这个东西,碰见复杂的逻辑就傻了,一般的小问题,我觉得也用不着

要不,这个逻辑,就当个习题,你试试?逻辑思维一下就行,不必真写程序。
http://www.itpub.net/thread-1314001-7-1.html

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
617#
 楼主| 发表于 2013-6-19 17:09 | 只看该作者
本帖最后由 yulihua49 于 2013-6-19 17:11 编辑
HelloWorld_001 发表于 2013-4-25 23:28
我最近用了下外部表,也感觉sqlldr没啥用处了。因为可以insert into a select * from b。
b表 外部表,a表 ...


newkid在前边给了个链接,有一个万能的PL/SQL导出工具,挺快的。不过没我快。
http://www.itpub.net/thread-1738533-3-1.html
29楼。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
618#
发表于 2013-6-19 22:44 | 只看该作者
那个路由表就是你说的费用清算问题?我早说了是个伪问题,你那种做法是孤芳自赏,别人也无从校验,对错都是你说了算。实际可行的方法就是根据两个出口确定路线,事先都可以算好,简单明了,没有二义性。

"这个坛子里,太多的问题,在C程序员的眼里根本不是问题,也不是SQL应该解决的问题,结果一大帮高手大侠,弄出一堆稀奇古怪的SQL,解决了不是问题的问题。
这就是思维定式。认为只有这些稀奇古怪的SQL才能解决问题。"
把C和SQL对调一下仍然成立。我不喜欢夸夸其谈,你看到了这种实例就该跳出来秀一下你的C代码。上次感恩节代码比赛我不是邀请你了吗?

“ 比方说,行转列,这是什么问题吆? 把一些行读到内存,按行存入,按列打印,用得着乱七八糟的SQL吗?最简单的sql就行。”
这个我同意,数据展示可以留在SQL外面做。

使用道具 举报

回复
论坛徽章:
6
大众
日期:2014-01-10 13:53:38阿斯顿马丁
日期:2014-01-10 13:55:242014年新春福章
日期:2014-02-18 16:50:09马上有对象
日期:2014-03-21 10:02:22ITPUB15周年纪念
日期:2017-02-14 16:24:16
619#
发表于 2013-12-18 18:57 | 只看该作者
个人觉得sql是必不可少的。不用sql只能应用于特例。
(感觉,感觉。)

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
620#
 楼主| 发表于 2013-12-19 13:21 | 只看该作者
本帖最后由 yulihua49 于 2013-12-19 13:51 编辑
fireforg 发表于 2013-12-18 18:57
个人觉得sql是必不可少的。不用sql只能应用于特例。
(感觉,感觉。)

不少啊,它一般是自动生成,特殊情况你可以写。20-80法则嘛。
DAU提供了可选的befor,select之前的with..as..什么的。
还有hint,提示。。。这个都可以自己加。

如果你特别爱好写SQL,另当别论。

一般人只是需要从数据库存取数据,写SQL是被迫的(到不是写个SQL有多复杂,它后边的绑定啊,结果集啊,这些处理相当烦人。DAU生成的SQL语句是要自动与内存数据结构映射。),这样我就可以帮他。

这些年,传统的编程语言处理业务逻辑,数据库仅用于存储数据,这种方式,比存储过程有巨大的优越性,在实践中效果越来越显著。
原因就是多核系统的普及和并行技术的成熟。
这两天就有帖子说存储过程在多线程全局数据处理的风险,它缺少内存互斥锁、读写锁、条件锁、信号量等线程机制(即使加上这些,效率也好不了)。
所以尽量不要把并行资源操作交给数据库,他的并行效率远远不如传统的编程语言。





使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表