• 有时很久没上来写东西了,过年前都是开会,然后过年,回来之后继续开会,最近还好终于开始写代码了。

    SQL Server 2012就要发布了,里面太多新功能,尤其是BI方面的功能,要不是这样微软也不会单独提供一个BI的版本。在数据管理上,SQL Server 2012里面提供了一个HADR的解决方案,将之前的很多技术集中整合到一个功能里,降低了高可用的实施的成本及实现方案的复杂性,当然功劳也不全是SQL […]

  • 之前的版本里面SQL Server已经可以支持Filestream的功能,通过Win32 API或TSQL来访问存储在文件系统中的BLOB数据,但是最大的问题来自于与遗留应用程序的兼容性无法解决,如果相提高性能必须通过TSQL先获取文件的handle然后用API访问文件,很多程序使用了Copy等Windows命令或类似于.net framework File类的方式来处理,这样一来好的功能也无法广泛的使用。在SQL Server 2012中提供了一个FileTable的功能,通过文件驱动的方式模拟了一个共享目录,用户的应用程序可以通过文件API直接对有SQL…[阅读更多]

  • 昨天帮同事优化了一个小程序,程序的功能很简单,将每天产生的若干压缩包解压读取清单文件入库,并根据清单文件的情况选择包内的文件对数据库进行字段更新,每条记录被更新的2个字段分别存储在2个文件中,文件都是小文件,90%以上小于2K.压缩文件有1600左右,解压之后文件数量在82W个。

    一般处理的思路就是将文件解压,然后读取清单,与数据库比较去重,入库,更新,删除文件,这些功能都可以在多线程下完成。逻辑思路就是这样,但是对于性能的影响主要在程序设计中对于文件的处理上。82W个文件多线程解压至少要25min,问什么这么慢呢?其主要原因并不是在CPU上,IO设计上是关键。

    计算机的存储主要是用来持久数据的,根据持久的时间、访问的模式来看,主要就是HDD、RAM、CPU…[阅读更多]

  • 最近在几个公司内部的项目中使用了EF的Code First开发模式,感觉不错,但是也遇到了一些小小的问题.首先对于EF来说与数据库之间有多种开发模式,可以先设计类或者先设计数据库.从程序设计的角度来说Code First是一种很不错的方式,节省了我们对于数据库设计的工作,极大地提高了系统开发的效率。但是如果业务的需求发生变化,Code First就会遇到一些麻烦。

    我们之前开发的系统上线2个月之后对于实体做了一些小修改,部署到服务器之后有一些View就出现了500的错误,其原因就是EF Code First在创建数据库的时候针对实体类作了Hash,并将Hash存储在数据库中的EdmMetadat表的ModelHash字段。当系统运行时,EF Code…[阅读更多]

  • sun.wei 撰写了一篇新博客文章:SQL Denali-FileTable 1 年 之前

    Filetable是一个很有意思的一个功能。很久很久以前微软曾经想把Windows的文件系统放到SQL里面来管,这样就能将结构化和非结构化的数据整合在一个平台来管理,而且可以嵌入在Windows的内部来实现。在Windows Vista年代曾经有一个叫WinFS的原型,当然最后这个东西还是没有最终Release。在SQL Server 2008里面微软还是希望将数据的应用(包括非结构化数据)整合到数据库里面,毕竟之前已经做了Text和Image数据类型,而且在SQL 2005里面也有了Max的数据类型,基本上可以说快要准备好了,所以在SQL 2008里面提供了一个新的数据类型叫Filestream,这个数据类型就不多说了,没听过的就去Bing一下吧。我在这个SQL…[阅读更多]

  • sun.wei 撰写了一篇新博客文章:再谈分页 1 年, 1 月 之前

    分页已经是很久远的话题了,很多时候都是靠着一些技巧来实现分页的,随着SQL Server版本的不断更新我们有了更多的选择,之前有人总结了一下我们现在可以使用的一些分页技术 http://www.cnblogs.com/qiuwuyu/archive/2011/03/21/1989870.html。在SQL 05/08里面我们可以使用CTE&Row_Number的方式实现分页,在SQL 2000里面我们基本上都是使用Top和Set RowCount的方式实现。你会发现高版本上提供的语句更加简洁和可读,降低了逻辑的复杂性。在下一个版本中Denali中,SQL Server在Order By函数中提供了一组语句可以实现分页并且从性能到程序的可读性有很大提高。 下面是程序的代码 USE…[阅读更多]

  • sun.wei 撰写了一篇新博客日志:理解SSIS中的Pipeline 1 年, 4 月 之前

    自从SQL 2000以后在SQL Server上SSIS就成了一个非常重要的产品。相比DTS,最大的变化不是在那些转换的控件上,而是运行体系,清晰的运行方式让开发人员可以更加深入的理解任务和数据的关系,能够将整个数据集成的项目清晰的分割成不同的阶段和任务。新架构下产生了Data Flow和Control Flow的概念。这次就重点聊聊Data Flow,希望读者们能慢慢理解其中之精髓,不明白的可以留言。(通常情况下我太愿意贴图,因为之前就没学会怎么搞图片)

    Data Flow中文就是数据流,实际上Data Flow数据Control Flow中的一个任务。一个SSIS包中可以没有Data Flow但是不能没有Control Flow,例如SQL…[阅读更多]

  • 在TechEd 2010上讲了一门如何构建企业级ETL的Session,可能是因为技术方面的东西太多,没有什么太炫的Slides和Demo,听众反映一般,8.08分不太高,这里在把东西解释解释。

    当时主要是因为工作比较忙,准备PPT和Demo就用了1天半的时间,确实有点仓促了,但是内容上感觉还是比较丰满的,主要目的就是给听众一个理念上的引导。

    目前在企业里面用SSIS的客户还是比较多,但是大多数人还仅仅停留在如何使用SSIS进行转换,很多学习的教程也都是写那些控件的使用方法。实际上工程项目中遇到的一些实际问题是不能通过简单的控件来解决的,必须要有巧妙的设计,这个道理就像写程序一样,否则也就不会有设计模式这个领域了。

    SSIS中提供了一个扩展性很强的框架,Control…[阅读更多]