19
八
早起还是相当爽的,不用匆匆忙忙的刷完牙抹完脸就狂奔,还能打开电脑,听听歌写写东西
早上下雨是不爽的,虽然比较凉爽,但要打伞去上班。
22号就出发喽,继续去公司赶任务去 ^_^
归类于:生活芝门 标签:早起
10
八
大家都说,Edgar F. Codd(通常被称为Ted)是一个才华横溢的人。他的成就之一,是在二十世纪七十年代初开发了一个关系型数据管理模型-- 存储和操作大量业务数据的一个复杂、完整的理论。根据Codd的设计构建的关系数据库成为了当今企业的基础;银行依赖关系数据库来跟踪资金流动;零售商使 用它们来监控库存水平;人力资源部门使用它们来管理员工账户;图书馆、医院和政府机构在其中存储数百万条记录;事实上,世界上几乎所有的企业都在使用某种 容量的关系数据库。自从 Codd公布其理论以来的30年中,关系数据库已经成为一个年收入近130亿美元的行业。
早期生活
Ted Codd于1923年出生在英格兰多塞特郡波特兰市的一个大家庭中。他曾经就读于牛津大学,主修数学和化学专业,第二次世界大战期间曾在 皇家空军服役。第二次世界大战后,Codd动身前往纽约并成为IBM的一名数学编程员。Codd所做的第一个项目是帮助构建一个称为可选顺序电子计算器 (Selective Sequence Electronic Calculator,SSEC)的早期计算机,据说该计算机占据了一栋市区办公楼中的 两层。
在二十世纪六十年代中期,Codd获得了密歇根大学计算机科学专业的博士学位。之后,他调到了IBM位于加利福尼亚州圣何塞市的开发实验室,在那里,他开始从事关系型数据管理模型(这是一个在很大程度上依赖于数学的模型)的开发。
改进数据库
早期的计算机太大、太昂对了,以至于不能广泛地应用于企业。在二十世纪六十年代,计算机开始变得经济有效,并逐渐被私营机构所采用,同时专门针对企业应用开发了许多标准和语言。其中有两个用于处理数据的模型:层次模型和关系网络模型。
在层次模型中,数据记录以层次方式相互关联;主要记录位于上层,后续的各个记录类型在下层分支。在网络模型中,一层中的记录集可能属于邻近的上层 中的两个不同的包含层次中。对于这两种模型,编写查询语句来检索信息要求深入了解数据本身的导航结构,因而这是一个复杂的任务,一般都是由专门的编程人员 来完成的。
Codd提出了一个新的解决方案。在最终收集到1970年具有创新性的技术论文-- "A Relational Model of Data for Large Shared Data Banks"(大型共享数据库的关系数据模型) 中的一系列报告中,Codd建议将数据独立于硬件来存储,程序员使用一个非过程语言来访问数据。Codd的解决方案的关键,是将数据保存在由行和列组成的 简单表中(在这种表中,相似数据的列将各个表相互联系起来),而不是将数据保存在一个层次结构中。按照 Codd的想法,数据库用户或应用程序不需要知道 数据结构来查询该数据。发表了该论文之后不久,Codd又发布了更为详细的指导原则,提出了其指导创建关系数据库的12项原则。
在Codd的理论公开之后,并没有立即被IBM所采纳。IBM已经对一个称为IMS的层次型数据库进行了大量投资,因而它让其他公司和企业家去考 虑如何进一步发展Codd的理论。其中的领袖人物是拉里o埃利森,他在1977年与Ed Oates和Bob Miner一起研制了世界上第一个商用关系 型数据库管理系统,在此过程中,创办了一个公司,后来成为Oracle公司。其余要说的就是数据库的历史了。
但是对Ted Codd来说,历史并没有停留在那儿。虽然直至二十世纪八十年代初,Codd一直就职于IBM,但他也与长期的合作者 Chris Date共同创建了一家咨询服务公司,而且,直到其今年的早些时候去世,Codd还一直继续研究和发表关于数据的规范化、分析和数据建模等主题的文章。
早期生活
Ted Codd于1923年出生在英格兰多塞特郡波特兰市的一个大家庭中。他曾经就读于牛津大学,主修数学和化学专业,第二次世界大战期间曾在 皇家空军服役。第二次世界大战后,Codd动身前往纽约并成为IBM的一名数学编程员。Codd所做的第一个项目是帮助构建一个称为可选顺序电子计算器 (Selective Sequence Electronic Calculator,SSEC)的早期计算机,据说该计算机占据了一栋市区办公楼中的 两层。
在二十世纪六十年代中期,Codd获得了密歇根大学计算机科学专业的博士学位。之后,他调到了IBM位于加利福尼亚州圣何塞市的开发实验室,在那里,他开始从事关系型数据管理模型(这是一个在很大程度上依赖于数学的模型)的开发。
改进数据库
早期的计算机太大、太昂对了,以至于不能广泛地应用于企业。在二十世纪六十年代,计算机开始变得经济有效,并逐渐被私营机构所采用,同时专门针对企业应用开发了许多标准和语言。其中有两个用于处理数据的模型:层次模型和关系网络模型。
在层次模型中,数据记录以层次方式相互关联;主要记录位于上层,后续的各个记录类型在下层分支。在网络模型中,一层中的记录集可能属于邻近的上层 中的两个不同的包含层次中。对于这两种模型,编写查询语句来检索信息要求深入了解数据本身的导航结构,因而这是一个复杂的任务,一般都是由专门的编程人员 来完成的。
Codd提出了一个新的解决方案。在最终收集到1970年具有创新性的技术论文-- "A Relational Model of Data for Large Shared Data Banks"(大型共享数据库的关系数据模型) 中的一系列报告中,Codd建议将数据独立于硬件来存储,程序员使用一个非过程语言来访问数据。Codd的解决方案的关键,是将数据保存在由行和列组成的 简单表中(在这种表中,相似数据的列将各个表相互联系起来),而不是将数据保存在一个层次结构中。按照 Codd的想法,数据库用户或应用程序不需要知道 数据结构来查询该数据。发表了该论文之后不久,Codd又发布了更为详细的指导原则,提出了其指导创建关系数据库的12项原则。
在Codd的理论公开之后,并没有立即被IBM所采纳。IBM已经对一个称为IMS的层次型数据库进行了大量投资,因而它让其他公司和企业家去考 虑如何进一步发展Codd的理论。其中的领袖人物是拉里o埃利森,他在1977年与Ed Oates和Bob Miner一起研制了世界上第一个商用关系 型数据库管理系统,在此过程中,创办了一个公司,后来成为Oracle公司。其余要说的就是数据库的历史了。
但是对Ted Codd来说,历史并没有停留在那儿。虽然直至二十世纪八十年代初,Codd一直就职于IBM,但他也与长期的合作者 Chris Date共同创建了一家咨询服务公司,而且,直到其今年的早些时候去世,Codd还一直继续研究和发表关于数据的规范化、分析和数据建模等主题的文章。
归类于:数据库 标签:关系数据库之父 EdgarFCodd
05
八
1.SQL Server Configuration Manager里可以配置SQL Server支持的4种连接协议:
Shared Memory(单机),Named Pipes,TCP/IP,VIA(大型机网络环境)
2.Template Explorer里提供了大部分常见操作的SQL 模板
3.使用sp_helptext 来查看触发器、视图等数据库对象的代码,不支持带dot的对象名称,所以不能查看默认命名模式外的对象
4.sp_rename 重命名表名、列名、索引等
5.sp_depends可以查看对象的依赖关系
6.标识符类型:sysname,用其来控制标识符的长度
7.命名空间:dbo(默认模式),INFORMATION_SCHEMA(SQL92标准),sys,guest,只需在创建数据库的时候指定命名空间即可,默认创建为dbo,可以修改默认命名空间,建议始终显示指定命名空间。
8.IF [NOT] Exists (subquery)
9.WaitFor(指定何时或时间间隔后继续执行)
WaitFor {Delay 'time' | Time 'time'}
10.推荐使用Scope_Identity 而不是@@Identity(全局)
11.可以通过链接服务器和OpenQuery来实现跨服务查询
12.GO 显示分隔批处理,在批处理中引用的所有变量也必须在那个批处理中声明
DECLARE @NAME VARCHAR(50)
GO
SELECT @NAME = 'SOMETHING' --ERROR
GO
13. Xact_State() 测试事务状态,没有事务打开,返回0,打开一个事物,能够提交或回滚,返回1,不能提交返回-1.
14. RAISERROR & sys.messages
15. TRY...CATCH块
归类于:读书笔记 标签:SQLServer
29
七
这两天没事,翻看了下 《Visual C# 2008 核心编程》,有些之前貌似都没印象,记下来当做提醒吧
1.扩展方法(C#3.0)
可以像javascript一样,对现有类型进行,添加方法。
参考:http://msdn.microsoft.com/zh-cn/library/bb383977.aspx
2.显示接口实现
参考:http://msdn.microsoft.com/zh-cn/library/ms173157.aspx
3.同步数组和集合
数组和集合非线程安全的,但可以通过lock SyncRoot来进行同步
示例:lock(Array.SyncRoot){}
4.匿名类型
var v = new { Amount = 108, Message = "Hello" };,当然更多的时候用于Linq的select
参考:http://msdn.microsoft.com/zh-cn/library/bb397696.aspx
5.LINQ默认延迟加载,所以尽量不要直接ToArray
6.异常对象的TargetSite包含出错方法的委托,可以用它来再次尝试调用该方法,如果需要的话。
7.StopWatch,一个更精准更方便的计时类.
8.如果反射只是查找,不激活,可以使用RefectionOnly.
9.断点是可以设定条件和命中次数的。
10.BitArray,BitVector32,OrderedDictionary,StringCollection,StringDictionary...这些貌似都没用过
11.WinDbg + SOS.
归类于:读书笔记 标签:VisualC#2008核心编程
27
七
这个博客程序N久都没有更新了,开始的时候就简单写了些,完成了最基本的编辑和发布功能,估计漏洞不少。
有一个多星期没写了,前几天登录发现被chrome屏蔽了,然后用IE看,发现所有链接里都夹杂有一个脚本代码,数据里大部分表都被修改了,还好基本上都是在原有内容上追加......
现在这个漏洞还在,我只是还原了下数据而已,过几天完善下这个博客程序吧

归类于:圈里圈外 标签:SQL注入
15
七
有三个缩写词:GAM,SGAM,PFS。
GAM(全局分配映射表),GAM页记录已分配的区,每个GAM包含64,000个区,相当于404GB的数据。GAM用一个位来表示所涵盖区间内的每个区的状态,如果位为1,则区可用,否则已分配。
SGAM(共享全局分配映射表),同GAM一样,不过SGAM是用来监控混合区的,如果至少有一个页未有,则标志位为1,否则所有页都在使用中。
FPS(页可用空间),记录每页的分配状态,是否已分配单个页以及每页的可用空间量。PFS 对每页都有一个字节,记录该页是否已分配。如果已分配,则记录该页是为空、已满 1% 到 50%、已满 51% 到 80%、已满 81% 到 95% 还是已满 96% 到 100%。
将区分配给对象后,数据库引擎将使用 PFS 页来记录区中的哪些页已分配或哪些页可用。数据库引擎必须分配新页时,将使用此信息。保留的页中的可用空间量仅用于堆和 Text/Image 页。数据库引擎必须找到一个具有可用空间的页来保存新插入的行时,使用此信息。索引不要求跟踪页的可用空间,因为插入新行的点是由索引键值设置的。
在数据文件中,PFS 页是文件头页之后的第一页(页码为 1)。接着是 GAM 页(页码为 2),然后是 SGAM 页(页码为 3)。第一个 PFS 页之后是一个大小大约为 8,000 页的 PFS 页。在第 2 页的第一个 GAM 页之后还有另一个 GAM 页(包含 64,000 个区),在第 3 页的第一个 SGAM 页之后也有另一个 SGAM 页(包含 64,000 个区)。下图显示了数据库引擎用来分配和管理区的页顺序。
归类于:数据库 标签:SQLServer 页及区的状态
14
七
页是SQL Server数据存储的最基本单位,数据文件(.mdf或.ndf)分配的磁盘空间可以从逻辑上划分成页(从0到n连续编号). 磁盘I/O操作在页级执行,区是八个物理上连续的页的集合,用来有效地管理页,所以页都存储在区中。日志文件不包含页,而是一系列日志记录。
页的大小是8KB,这意味着SQL Server数据库中每MB有128页,16个区。
关于页
每页的开头是96字节的标头,用于存储有关页的系统信息,此信息包括页码、页类型、页的可用空间以及拥有该页的对象的分配单元ID。
在数据页上,数据行紧接着标头按顺序放置。页的末尾是行偏移表,对于页中的每一行,每个行偏移表都包含一个条目。每个条目记录对应行的第一个字节也页首的距离,行偏移表中的条目的顺序与页中行的顺序相反。
行不能跨页(页的单个行最大数量是8,060字节8kb 1024*8),不包括Text/Image类型的页数据,对于可变长类型的列,如果行超过8060,则从最大长度的列开始,将一个或多个可变长度列移动到ROW_OVERFLOW_DATA分配单元中的页,在原始页上维护一个24字节的指针,如果行的总大小小于8060,就再移回来.执行查询等操作时将延长处理时间,因为这些记录将同步处理,而不是异步。
关于区
SQL Server有两种类型的区:
统一区:由单个对象所有,区中的所有8页只能由所属对象使用
混合区,最对由八个对象共享,区中8页可由不同的对象所有。
通常从混合区向新表或索引分配页。当表或索引增长到 8 页时,将变成使用统一区进行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成 8 页,则对该索引的所有分配都使用统一区进行。
归类于:数据库 标签:SQLServer 页和区 Pages Extents
13
七
SQL Server 将数据库映射为一组操作系统文件,每个数据库至少包含一个数据文件和一个日志文件,每个数据库至少有一个主要文件组(PRIMARY),文件组的作用是用于将数据文件集合起来,以便于数据分配和管理。
SQL Server数据库有三种类型文件,默认扩展名为:.mdf,.ndf,.ldf. ,允许使用自定义扩展名。
主数据文件(.mdf) 是数据库的起点,指向数据库中的其他文件,每个数据库都有且仅有一个主数据库文件。
次要数据文件(.ndf) 除主数据文件以外的所有数据文件都是次要数据文件,使用次要文件可以将数据分配到不同的磁盘驱动器上来提高性能。
日志文件(.ldf) 每个数据库必须至少有一个日志文件,默认情况下,数据和日志文件被放在同一驱动器的同一路径下,建议将数据和日志文件放在不同的磁盘上。
相关T-SQL:
创建文件组
ALTER DATABASE dbname ADD FILEGROUP fgname (注意没有单引号,下同)
删除文件组
ALTER DATABASE dbname REMOVE FILEGROUP fgname (文件组必须为空)
添加文件到文件组
ALTER DATABASE dbname
ADD FILE ( NAME = N'logical_filename', FILENAME = N'ph_filename' , SIZE = 3072KB , FILEGROWTH = 1024KB )
TO FILEGROUP fgname
删除文件
ALTER DATABASE dbname REMOVE FILE logical_filename
在文件组上创建表
CREATE TABLE tname
(
cola int PRIMARY KEY,
) ON fgname
修改默认文件组
ALERT DATABASE dbname
MODIFY FILEGROUP fgname DEFAULT;
归类于:数据库 标签:SQLServer 文件文件组
