Bookcold

导航

公告

统计

2010年11月14日 #

两台Sql Server数据库服务器间传数据

总体方案:以链接服务器的方式,将两台服务器连接在一块;利用存储过程,将数据从一台数据库导入另一台数据库。

一. 配置分布式事务协调器

由于在两台数据库间写数据,必然涉及分布式事务的问题;因此,需要在两台运行着Sql Server的机子上配置分布式事务协调器。以下以Windows 7为例,其他操作系统配置方案类似。

1. 启动组件服务管理工具:开始菜单—>运行—>键入dcomcnfg.exe—>确定

2. 展开“组件服务”,展开“计算机”,展开“我的电脑”,右键点击本地DTC,选择“属性”。

image

3.在打开的对话框中,切换至“安全”选项卡,以下图方式配置相应选项

image

二. 建立链接数据库

数据库链接能够让本地的一个 SQLserver 登录用户映射到远程的一个数据库服务器上,并且像操作本地数据库一样。

可以通过下面两句Sql语句实现建立链接数据库的功能

exec sp_addlinkedserver '链接名称','','SQLOLEDB','链接数据库IP'

exec sp_addlinkedsrvlogin '链接名称','false',null,'用户名','密码'

详细看参考:http://www.cnblogs.com/firstyi/archive/2007/08/09/849494.htmlhttp://tech.it168.com/a2009/0205/264/000000264544.shtml

这是,可以随便写个select语句试试是否成功,假如无法查询,则尝试在两台机的host文件中添加对方的IP和机器名,并且记得关闭防火墙再试

三.编写存储过程

至此就可以开始写插入链接数据库的存储过程了,这一步则相对简单,根据自身需要编写。我在项目中所使用的存储过程如下:

Create proc P_DBSync as begin declare @device_id char(20) declare @error int --错误数 set @error=0 -- SET XACT_ABORT ON will cause the transaction to be uncommittable -- when the constraint violation occurs. set XACT_ABORT on --声明游标 declare invoice_cursor insensitive cursor for select [DeviceID] from Device open invoice_cursor begin tran while @@FETCH_STATUS = 0 --遍历表 begin fetch next from invoice_cursor into @device_id insert into link.demo.Device select * from Device where DeviceID=@device_id set @error=@@error+@error insert into link.demo.DeviceParameter select * from DeviceParameter where DeviceID=@device_id set @error=@@error+@error end if @error=0--没有错误统一提交事务 begin commit tran--提交 CLOSE invoice_cursor--关闭游标 DEALLOCATE invoice_cursor--释放游标 return 1 end else begin rollback tran--回滚 CLOSE invoice_cursor DEALLOCATE invoice_cursor

return 0 end

至此,从一个库导数据至另一个库的工作就基本完成了;当然以上方案有个问题,有一条记录出错,则所有的插入操作都会回滚,以后继续改进。

posted @ 2010-11-14 20:31 bookcold 阅读(67) 评论(0) 编辑

2010年10月18日 #

MySQL最佳实践

posted @ 2010-10-18 10:51 bookcold 阅读(22) 评论(0) 编辑

2010年10月15日 #

界面设计模式

内容来自:《Designing Interfaces》

1。 安全探索(Safe Exploration)

用户在界面上进行探索不应产生任何麻烦,比如弹出窗口,突然播放的音乐。

2。 即时满足(Instant Gratification)

人们希望立刻从他们的行为看到结果。用户,特别是新用户应该让他在最初使用软件的几秒内就得到成功的体验。即时满足也意味着不应该把介绍性的功能隐藏在任何需要阅读或需要等待的功能之后。

3。 满意既可(Satisficing)

当人们看到一个新的界面时,他们不会事无巨细地阅读每个细节,然后作决定。

4。 中途变卦(Changes in Midstream)

设计界面应该允许用户中途改变选择;如果没有充分的理由,别把用户锁死在一个没有全局导航,不能到达其他页面或其他功能的环境里。同样,应该设计出容易“开始,在中间停止,以后再回来接着在原来的位置继续进行”的过程,即重新进入(Reentrance)的特性。

5。 延后选择(Deferred Choices)

6。 递增构建(Incremental Construction)

让用户一次完成一小部分工作更容易。应用要能支持快速的变化和保存。在这些应用中,反馈很关键:在用户工作的时候,持续告诉用户整个目标对象的样子和他们的行为。

7。 习惯(Habituation)

当一个人重复使用某个界面时,一些常用的操作将演变成人的反射性动作。习惯在很大程度上提高了效率,但也可能成为负担。

8。 空间记忆(Spatial Memory)

当人们使用东西或文档时,他们经常通过回忆它们在哪里来再次找到它们,而不是它们的名字。把某个东西添加到界面上通常不会引起麻烦,但是把控件重新排列会打乱控件记忆,从而难以找到。

空间记忆和习惯之间的关系很密切。和习惯一样,空间记忆也是一个在应用中及在应用间保持一致性会带来好处的理由。人们会期望在类似的地方找到类似的功能表现。

9。 前瞻记忆(Prospective Memory)

当我们计划在将来完成某事的时候,就要用到前瞻记忆了,然后我们会设置一些提示物来提醒自己。我们用“现实中”的知识来帮助我们加强有限的记忆。

人们使用各种各样的东西来支持被动的前瞻记忆。设计的目的是灵活性——以及任由用户自主组织信息的态度;应该了解用户想要的往往是一种放任不管的灵活性,不要想着设计一个非常智能的系统来处理这些。同时,利用前瞻记忆来主动做点东西;比如,有人把一个完成了一半的表单临时关掉,可以把已经填写的数据保存起来,帮助他下次回忆。

10。 简化重复工作(Streamlined Repetition)

让用户从简单低水平重复的劳动中解放出来,例如Word的查找替换功能。直接观察用户可以帮助你找出需要支持哪些重复性的任务。用户往往意识不到自己正在进行着重复操作。

11。 只支持键盘(Keyboard Only)

一些软件设计成可以完全通过键盘来操作。它们往往也支持鼠标,但是没有哪个操作是只支持鼠标的。

12。 旁人建议(Other People's Advice)

posted @ 2010-10-15 21:19 bookcold 阅读(71) 评论(0) 编辑

2010年10月12日 #

谷歌、亚马逊和微软云计算对比

来自:《云计算》 刘鹏主编

                                                 三种云计算方案比较

  Google App Engine 亚马逊AWS 微软Azure
提供服务类型 Paas Iaas、Paas、Saas Paas
服务间关联度 所有服务被捆绑在一起,耦合度高 可以任意选择服务组合,耦合度低 可以任意选择服务组合,耦合度低
虚拟化技术 未使用 Xen Hyper-V
支持的编程语言 Python、Java 多种 多种
运行环境 Google自身提供的环境,位于云端 亚马逊平台,云端 云端或本地
不同应用之间的隔离 通过沙盒来实现 不同的应用运行在不同的虚拟机,以此实现隔离 不同的应用运行在不同的虚拟机,以此实现隔离

 

                              计算服务比较

  MapReduce EC2 Azure计算服务
服务类型 Paas Iaas Paas
虚拟机的使用 未使用 用户可以根据需要设置运行虚拟机的硬件配置 系统自动分配
运行环境 Google自身提供的环境,用户无法自行配置 由用户自行提供运行程序所需的AMI(亚马逊机器映像) 程序运行在系统自动为用户生成的装有Windows Server 2008的虚拟机上
易用性 最好 稍差 较好
灵活性 稍差 最好 较好
使用的应用程序 适合可以并行处理的应用程序 任意 任意可在Windows Server 2008上运行的程序,尤其适合有大量并行用户的应用程序

 

                              存储服务比较

  GFS S3 Blob存储
系统结构 数据块服务器上的文件分块存储 桶、对象两级模式 容器、Blob两级模式hiy
可扩展性 可通过增加数据块服务器数量扩展存储容量 可通过增加桶中对象数量扩展存储容量 可通过增加容器中Blob数量扩展存储容量
数据交互方式 用户和数据块服务进行数据交互 用户可以从获得授权的对象中取得数据 用户可以从获得授权的Blob中取得数据
存储限制 无特殊限制 桶的数量和对象的大小有限制,但对象的数量无限制 Blob大小有限制,但是容器和Blob数量未有限制
容量扩充方式 自动 手动或编程实现自动扩容 手动或编程实现自动扩容
容错技术 针对主、从服务器有各自的容错技术 数据监听回传、Merkle哈希树、数据冗余存储 仅重传出错的Block(块)、数据冗余存储

posted @ 2010-10-12 16:47 bookcold 阅读(401) 评论(0) 编辑

2010年10月6日 #

软件编程21法则

  1. Any given program, once deployed, is already obsolete.
  2. It is easier to change the specification to fit the program than vice versa.
  3. If a program is useful, it will have to be changed.
  4. If a program is useless, it will have to be documented.
  5. Only ten percent of the code in any given program will ever execute.
  6. Software expands to consume all available resources.
  7. Any non-trivial program contains at least one error.
  8. The probability of a flawless demo is inversely proportional to the number of people watching, raised to the power of the amount of money involved.
  9. Not until a program has been in production for at least six months will its most harmful error be discovered.
  10. Undetectable errors are infinite in variety, in contrast to detectable errors, which by definition are limited.
  11. The effort required to correct an error increases exponentially with time.
  12. Program complexity grows until it exceeds the capabilities of the programmer who must maintain it.
  13. Any code of your own that you haven’t looked at in months might as well have been written by someone else.
  14. Inside every small program is a large program struggling to get out.
  15. The sooner you start coding a program, the longer it will take.
  16. A carelessly planned project takes three times longer to complete than expected; a carefully planned project takes only twice as long.
  17. Adding programmers to a late project makes it later.
  18. A program is never less than 90% complete, and never more than 95% complete.
  19. If you automate a mess, you get an automated mess.
  20. Build a program that even a fool can use, and only a fool will want to use it.
  21. Users truly don’t know what they want in a program until they use it.

中文翻译:

  1. 任何程序一旦部署即显陈旧。
  2. 修改需求规范来适应程序比反过来做更容易。
  3. 一个程序如果很有用,那它注定要被改掉。
  4. 一个程序如果没用,那它一定会有很好的文档。
  5. 任何程序里都仅仅只有10%的代码会被执行到。
  6. 软件会一直膨胀到耗尽所有资源为止。
  7. 任何一个有点价值的程序里都会有至少一个bug。
  8. 原型完美的程度跟审视的人数成反比,反比值会随着涉及的资金数增大。
  9. 软件直到被变成产品运行至少6个月后,它最严重的问题才会被发现。
  10. 无法检测到的错误的形式无限多样,而能被检测到的正好相反,被定义了的十分有限。
  11. 修复一个错误所需要投入的努力会随着时间成指数级增加。
  12. 软件的复杂度会一直增加,直到超出维护这个程序的人的承受能力。
  13. 任何自己的程序,几个月不看,形同其他人写的。
  14. 任何一个小程序里面都有一个巨大的程序蠢蠢欲出。
  15. 编码开始的越早,花费的时间越长。
  16. 一个粗心的项目计划会让你多花3倍的时间去完成;一个细心的项目计划只会让你多花2倍的时间。
  17. 往大型项目里添加人手会使项目更延迟。
  18. 一个程序至少会完成90%,但永远完成不了超过95%。
  19. 如果你想麻烦被自动处理掉,你得到的是自动产生的麻烦。
  20. 开发一个傻瓜都会使用的软件,只有傻瓜愿意使用它。
  21. 用户不会真正的知道要在软件里做些什么,除非使用过。

英文原文:http://www.devtopics.com/21-laws-of-computer-programming/

中文来自:http://www.cnbeta.com/articles/123618.htm

posted @ 2010-10-06 15:38 bookcold 阅读(6) 评论(0) 编辑

2010年10月4日 #

多线程程序设计中的8条简单原则

摘要: Rule 1: Identify Truly Independent Computations Rule 2: Implement Concurrency at the Highest Level Possible Rule 3: Plan Early for Scalability to Take Advantage of Increasing Numbers of Cores Rule ...阅读全文

posted @ 2010-10-04 23:12 bookcold 阅读(33) 评论(0) 编辑

2010年9月13日 #

界面设计基础PPT

摘要: Design Fundamentals for Developers View more presentations from paultrani. Note: Cross posted from Bookcold's Blog.Permalink阅读全文

posted @ 2010-09-13 15:07 bookcold 阅读(15) 评论(0) 编辑

2010年9月9日 #

软件测试的重要原则

摘要: 1。 测试用例中一个必需部分是对于其输出或结果进行定义 2。 程序员应当避免测试自己编写的程序 3。 编写软件的组织不应当测试自己编写的软件 4。 应当彻底检查每个测试的执行结果 5。 测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况 6。 检查程序是否“未做其应该做的”仅是测试的一般,测试的另一半是检查程序是否“做了其不应该做的” 7。 应避免...阅读全文

posted @ 2010-09-09 14:52 bookcold 阅读(8) 评论(0) 编辑

2010年8月26日 #

VS2010 查看Linq生成的Sql语句

摘要: 在vs2008中,伟大的ScottGu提供了这个小工具,供我们调试linq to sql生成的语句。在vs2010中,这个工具不好使了。搜了半天,找到了个能在vs2010下使用的小工具! 下载地址:http://www.rajavenkatesh.com/projects.aspx 安装方法: 1。 关闭vs2010,将其dll拷贝至Program Files\Microsoft Visua...阅读全文

posted @ 2010-08-26 12:42 bookcold 阅读(447) 评论(0) 编辑

2010年8月20日 #

图文细说Google数据中心

摘要:  转自:http://www.cnbeta.com/articles/119876.htm Google数据中心分布图 Google 搜索速度为什么能这么快?这主要因为Google在全球分布着众多的数据中心。根据现有信息,如果包括在建的数据中心,Google共有36个数据中心。 其中美国有19个、欧洲12个、俄罗斯1个、南美1个和亚洲3个(北京-Google.cn、香港-Google....阅读全文

posted @ 2010-08-20 19:12 bookcold 阅读(74) 评论(0) 编辑

仅列出标题  下一页