新足迹

 找回密码
 注册

精华好帖回顾

· 购房置业的十大须知 (2005-4-8) · 【12页339楼超长正文】说实话我觉得很多家长都有一些误区 (2012-4-30) elena_sokolova
· 我喜欢的TVB明星之二 - 姗姗来迟的女明星篇 (2008-6-3) 月亮 · 不知道还赶的上活动不?——老鸭粉丝汤 (2007-7-3) 思思妈妈
Advertisement
Advertisement
楼主:flyspirit

[IT] 关于.net下的Data Access技术 [复制链接]

发表于 2010-6-3 15:26 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-6-3 14:14 发表

Stackoverflow is nothing. Only 12 tables.

Mark Suckerberg looks like a retarded dumbass.


"Stackoverflow is nothing"-- I think it deserves more then that. stack over flow architecture:http://highscalability.com/blog/ ... w-architecture.html

"Mark Suckerberg looks like a retarded dumbass."-- agreed. he's not good at giving speech, acting kinda wired.
Advertisement
Advertisement

发表于 2010-6-3 15:28 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-6-3 14:14 发表


community website才能很明显看出traffic/用户,我是从这个意义上才说的facebook&twitter,而且他们从来也不缺钱,而且ms是facebook最大的投资伙伴(paid $240 million in 2007 for a 1.6% stake)
http://money. ...


你搞错事情的先后顺序了,facebook成名之后才有Microsft给它的投资。 其创始人是当时是大学生,你觉得他会有资金买Microsoft的Licence吗?

发表于 2010-6-3 15:31 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2010-6-3 14:21 发表
用的当,性能不是大问题,你可以监控它生成的SQL语句,基本上是精炼的。
配合做一些缓存方面的设计,我个人认为可以一用。



至于cache,linq to sql只是adhoc的cache,从这意义上来说根dynamic query一样,还要重新compile & 生成excution plan/tree,仅仅从这一点上,dba那一关就过不去,如果dba不懂.net开始可以蒙一下,不过别让他用profiler抓住你,否则就会死得很惨

如果小规模的project都ok了。

发表于 2010-6-3 15:35 |显示全部楼层
此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我觉得服务器平台的原因也很重要,特别是以前,Microsoft的服务器系统在稳定性、安全性和性能上都要差一些,IIS也不行,那时候还没有application pools,死一个服务器上的站点都要死。而.NET基本上只能在微软的服务器平台上跑,所以也限制一些人选择

发表于 2010-6-3 15:35 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2010-6-3 14:21 发表
用的当,性能不是大问题,你可以监控它生成的SQL语句,基本上是精炼的。
配合做一些缓存方面的设计,我个人认为可以一用。



同意。会用的话,性能不是问题。

况且在一个解决方案中,性能调优可以从多方面入手,比如load balance... 或者局部代码用SP.

发表于 2010-6-3 15:40 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2010-6-3 14:35 发表
我觉得服务器平台的原因也很重要,特别是以前,Microsoft的服务器系统在稳定性、安全性和性能上都要差一些,IIS也不行,那时候还没有application pools,死一个服务器上的站点都要死。而.NET基本上只能在微软的服务器 ...


恩,MS也在不断进步中。
Advertisement
Advertisement

发表于 2010-6-3 15:41 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2010-6-3 14:28 发表


你搞错事情的先后顺序了,facebook成名之后才有Microsft给它的投资。 其创始人是当时是大学生,你觉得他会有资金买Microsoft的Licence吗?


ms从来都是有丰厚的vc支持start up的,而且msdn subscriber1年也就是区区1000刀, 如果.net在众多tech中作为首选,由他们优质的技术/文档/编程环境支持,为什么不可以?

我知道北美top N 大学coding教育从来是把java作为首选, open source深入人心,可能是他们不选.net的原因之一。

发表于 2010-6-3 15:51 |显示全部楼层

回复 37# 的帖子

此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
msdn subscriber1年是区区1000刀,但开发完不用上production server吗? 看看他们sql server的licence fee,和windows server的licence fee。

这个licence是对个人的,大学会给每个student花1000刀买一个吗?

发表于 2010-6-3 15:52 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2010-6-3 14:35 发表
我觉得服务器平台的原因也很重要,特别是以前,Microsoft的服务器系统在稳定性、安全性和性能上都要差一些,IIS也不行,那时候还没有application pools,死一个服务器上的站点都要死。而.NET基本上只能在微软的服务器 ...


这是其中一个原因,更重要的是很多server是unix/linux的,那是enterprise level的app.

ms的用户定位原来都是终端用户,桌面系统,windows server同样原来一直定位中小企业,上面跑IIS,后来越来越多的人接纳它作enterprise server,然后才有.net做的web app,不过对那些老牌enterprise level的用户,一直不怎么对ms的东西很感冒的。

发表于 2010-6-3 15:54 |显示全部楼层
此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我不是太理解你的意思,我说的CACHE是在架构中业务对象的CACHE,避免对数据库重复调用。
普通的SELECT\UPDATE\INSERT语句通过EF4生成的和你自己写的能有啥区别呢?dba能说什么?
EF4虽然才release,但其他ORM多了,没听说过需要蒙DBA的?

原帖由 乱码 于 2010-6-3 14:31 发表


至于cache,linq to sql只是adhoc的cache,从这意义上来说根dynamic query一样,还要重新compile & 生成excution plan/tree,仅仅从这一点上,dba那一关就过不去,如果dba不懂.net开始可以蒙一下,不过别让他用pr ...

发表于 2010-6-3 16:06 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2010-6-3 14:51 发表
msdn subscriber1年是区区1000刀,但开发完不用上production server吗? 看看他们sql server的licence fee,和windows server的licence fee。

这个licence是对个人的,大学会给每个student花1000刀买一个吗?


academic version可能都是免费的,学生不用买。 sql server 也就是区区6000刀。。。。

这些比起website hosting都是小钱,一毛的算不上,没有资金的支持,他们几乎玩不起来的。

平台的选择有资金方面的考虑,而更多的是knowledge background, 起码使他们刚开始的时候。
Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-6-3 16:10 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Fact is suckerberg only knows php.

That's all they teach in uni.

It's reall just a personal choice. Don't complicate it

发表于 2010-6-3 16:13 |显示全部楼层
此文章由 jerryclark 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 jerryclark 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2010-6-3 14:51 发表
msdn subscriber1年是区区1000刀,但开发完不用上production server吗? 看看他们sql server的licence fee,和windows server的licence fee。

这个licence是对个人的,大学会给每个student花1000刀买一个吗?

请参考MSDN AA http://msdn.microsoft.com/en-us/academic/default.aspx

一个学校一年只要付1000刀左右,就可以有无限的Visual Studio,Windows的licence作为教学用途使用。每个学生都可以免费申请到一个copy。

发表于 2010-6-3 16:21 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 jerryclark 于 2010-6-3 15:13 发表

请参考MSDN AA http://msdn.microsoft.com/en-us/academic/default.aspx

一个学校一年只要付1000刀左右,就可以有无限的Visual Studio,Windows的licence作为教学用途使用。每个学生都可以免费申请到一个copy。


看起来不错,这个AA是什么时候开始出的?

发表于 2010-6-3 16:23 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2010-6-3 14:54 发表
我不是太理解你的意思,我说的CACHE是在架构中业务对象的CACHE,避免对数据库重复调用。
普通的SELECT\UPDATE\INSERT语句通过EF4生成的和你自己写的能有啥区别呢?dba能说什么?
EF4虽然才release,但其他ORM多了, ...


明白你什么意思了,你得cache object思路不错。

linq to sql产生express tree再产生sql statement,这些statement都是跟dynamic sql一样,每次到sql db那边作operation的时候,也会被db cache,但都是adhoc,同样的statement,参数不同,N次execute,就会cache n次,除了占用空间,没什么优势,而且每次都要做compile,excution plan.....而sp从第二次开始就不存在这两步,从cache里面直接拿plan,execute了. 从这个角度来说,linq to sql在db方面有很大的overhead,这种practise一般的dba不会同意的。

这不光是ef的问题,任何一个ormaping tool都或多或少的存在这个问题,不过我们用subsonic,只产生db table/view对应的class/entity,然后自己用datareader populate.

ormapping最大的performance的问题其实是如果用得不当,会产生很多round trip。。。具体你去google一下,就不仔细说了。

如果你很在意performance,最好自己用sp,datareader,有文章说,linq to sql/ef即使一切都弄对了,才能达到datareader 93%的性能,这个数我记得很精确。ef4应该好很多,fetch data应该也是用datareader,但产生dynamic sql statement我接受不了。

而且如果用linq to sql,出了问题在production几乎无法trace,如果用sp,你可以用profiler,指定一下你得db id和sp_id就可以trace,很方便,trace它的performance也可以这么做,尤其是在用cte的时候,有点扯远了。。。

[ 本帖最后由 乱码 于 2010-6-3 15:53 编辑 ]

发表于 2010-6-3 16:28 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-6-3 15:06 发表


academic version可能都是免费的,学生不用买。 sql server 也就是区区6000刀。。。。

这些比起website hosting都是小钱,一毛的算不上,没有资金的支持,他们几乎玩不起来的。

平台的选择有资金方面的考虑 ...


web hosting启动时只要每月几块钱就行了。如果用户增加,流量增加了后。手里有用户就好和VC谈了。

但你没有办法去和VC谈我需要资金买微软的licence。没人会给钱的
Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-6-3 16:36 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-6-3 15:23 发表


明白你什么意思了,你得cache object思路不错。

linq to sql产生express tree再产生sql statement,这些statement都是跟dynamic sql一样,每次到sql db那边作operation的时候,也会被cache,但都是adhoc,同样 ...

Apparenent u don't get it

I used both in large projects.

When u use it right. It won't even hit db

发表于 2010-6-3 16:38 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2010-6-3 15:28 发表


web hosting启动时只要每月几块钱就行了。如果用户增加,流量增加了后。手里有用户就好和VC谈了。

但你没有办法去和VC谈我需要资金买微软的licence。没人会给钱的


如果我的个人网站,我可以每个月花10块钱搞定,因为没人关心我,没什么traffic。

但facebook,我就不好说了,它产品的定位就是high traffic,慢得要死的app大学生没这个耐心的,几块钱恐怕不好搞定叭。

2004年之前,微软没什么成熟的产品作enterprise level的web app,.net 1.1 & classic asp都不是好的选择,关键可能他们对这个也不熟悉。

至今我也不觉得.net如何如何好,不过coding起来还行,而且悉尼这个方向职位多,是个成功的商业产品是肯定的。

发表于 2010-6-3 16:41 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-6-3 15:36 发表

Apparenent u don't get it

I used both in large projects.

When u use it right. It won't even hit db


不知道你在说什么,你用中文可能能够更好的表达。

发表于 2010-6-3 16:43 |显示全部楼层

回复 48# 的帖子

此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这个同意,那个时候的.net 1.0, 1.1是不太行。

他们起步的时候可能也就是10$每月的hosting fee。我认为他们本来就是好玩,也没想到会做大了。

换句话说你那个人网站哪天做大了也有可能。

发表于 2010-6-3 16:47 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-6-3 15:41 发表


不知道你在说什么,你用中文可能能够更好的表达。


cached object可以大幅减少数据库的访问,你也用过的应该
Advertisement
Advertisement

发表于 2010-6-3 16:50 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2010-6-3 15:43 发表
这个同意,那个时候的.net 1.0, 1.1是不太行。

他们起步的时候可能也就是10$每月的hosting fee。我认为他们本来就是好玩,也没想到会做大了。

换句话说你那个人网站哪天做大了也有可能。


我也就打个比方,真没有什么个人网站,现在都blog/twitter了,个人网站应该也少了吧?

在community上作产品的promition/survey有很好的前途,brookvale那家公司在作这个,可惜用的是.net,整合起来可能有些问题,但都是可以解决的。

发表于 2010-6-3 16:52 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2010-6-3 15:47 发表


cached object可以大幅减少数据库的访问,你也用过的应该


没错,肯定用过,不然app/db吃不消。

我上面说的是db side的cache, 不是app 那边的cache。

发表于 2010-6-3 16:59 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-6-3 15:50 发表


我也就打个比方,真没有什么个人网站,现在都blog/twitter了,个人网站应该也少了吧?

在community上作产品的promition/survey有很好的前途,brookvale那家公司在作这个,可惜用的是.net,整合起来可能有些问 ...


这就是SEO和所谓病毒式营销了。

发表于 2010-6-3 17:02 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2010-6-3 15:59 发表


这就是SEO和所谓病毒式营销了。


haha,没错,这招狠厉害!!

2010年度奖章获得者

发表于 2010-6-3 17:06 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-6-3 15:52 发表


没错,肯定用过,不然app/db吃不消。

我上面说的是db side的cache, 不是app 那边的cache。

First time I heard db side cache
Advertisement
Advertisement

发表于 2010-6-3 17:13 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整

发表于 2010-6-3 17:15 |显示全部楼层
此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
一般的CUID哪里会出现这个问题,复杂的多表操作,是否使用存储过程封装,这个要看具体情况来定的,要利用这些工具的长处,而不是绝对的只用某一个。
把所有的操作都用存储封装,维护就是个大问题,几百个存储过程,又不是strong name,改一个字段名字,都不知道要去改那些存储过程,想想都头疼。

原帖由 乱码 于 2010-6-3 15:23 发表


明白你什么意思了,你得cache object思路不错。

linq to sql产生express tree再产生sql statement,这些statement都是跟dynamic sql一样,每次到sql db那边作operation的时候,也会被db cache,但都是adhoc, ...

2010年度奖章获得者

发表于 2010-6-3 17:16 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-6-3 16:13 发表
read it through,

http://msdn.microsoft.com/en-us/library/ms181055.aspx

O u mean that. That's interal SQL behavior.

发表于 2010-6-3 17:23 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2010-6-3 16:15 发表
一般的CUID哪里会出现这个问题,复杂的多表操作,是否使用存储过程封装,这个要看具体情况来定的,要利用这些工具的长处,而不是绝对的只用某一个。
把所有的操作都用存储封装,维护就是个大问题,几百个存储过程, ...


我们公司都用sp,这是coding standard,如果一部分c#,一部分用sp,维护起来就更加麻烦。

至于找某个column/table name,除了通过sp的naming convention来找,也建议你看看下面的文章

http://blog.sqlauthority.com/200 ... n-stored-procedure/

评分

参与人数 1积分 +2 收起 理由
cdfei + 2 感谢分享

查看全部评分

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部