数据冗余和数据不一致

数据冗余和数据不一致
数据冗余和数据不一致

(1)数据冗余

数据冗余的定义:同样的数据存储在多个位置(或者说,同一数据重复的存储)。

下面是一个平面文件(或者说表),因所有的数据都集中在一个表中,结果造成了某些数据在表中的重复出现。

是什么原因所致的呢?因为所有的数据都集中在一个表

如果用关系数据模型来分析这个数据系统,我们将把本系统的数据表拆分成两个表,然后通过公用字段“Roll Number”把它们关联起来。见下图:

显然,存储的数据变少了,从而节省了磁盘空间,而且它还有一个好处,在操作时可以保持数据的准确性,或者说避免数据的不一致性。数据的不一致性是怎么造成的。

(2)数据不一致性

定义:它是指同一数据在各种文件中的不一致性,甚至在同一个文件的不同

位置也是不一致的。现在我们来看看是如何造成的。

来考虑一个非常简单的例子-----分析一个借书或者碟片租赁系统。假设出借的信息都保存在一张表中,那么在会员每次借书或碟片时,填写其姓名和地址就有可能会产生这样一种情况,本次和上一次填写的会员地址可能不一样(为什么会发生?),就看下面这张表:

数据不一致性就这样出现了,在这个例子中,我们发现数据的重复存储即数据的冗余极其容易造成数据的不一致性。

SQL数据库置疑的解决方法

SQL2000数据库置疑的解决方法 首先,在任何操作之前,必须要备份数据库(重要) 一、分离数据库 1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器 2、展开服务器组,然后展开服务器,选中要分离的数据库 3、点击鼠标右键“所有任务》分离数据库”,出现如下窗口 4、点击确定,该选定的数据库就被分离。 5.分离后,把原数据库里面.MDF(主数据文件).LDF(事务日志文件)这两个文件复制到目标盘下,例:D盘下 注意事项,只有“使用本数据库的连接”数为0时,该数据库才能分离。所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。

二、附加数据库 1、在附加数据库之前,首先要移动数据库文件 在附加数据库之前,您必须将与数据库关联的 .MDF(主数据文件).LDF(事务日志文件)这两个文件复制到目标硬盘下,或是同一服务器的不同硬盘目录下。这两个文件一般位于C:\Program Files\Microsoft SQL Server\MSSQL\Data 目录下。 2、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器 3、展开服务器组,然后展开服务器 4、右击"数据库",然后选择“所有任务》附加数据库”,弹出窗口 5、输入要附加的数据库的MDF名称。如果不确定文件位于何处,单击浏览("...")搜索。若要确保指定的 MDF 文件正确,请单击"验证"。在"附加为"框内,输入数据库的名称。数据库名称不能与任何现有数据库名称相同。指定数据库的所有者 6、单击"确定"按钮。新附加的数据库的数据库节点即创建在"数据库"文件夹中

有关数据冗余说法错误的是()(选择一项)

1) 有关数据冗余说法错误的是()。(选择一项) a) 数据库中,数据存在副本的现象,就是数据冗余 b) 通过分类存储,可以有效减少数据冗余,但是会增加数据查找的复杂性 c) 在数据库设计阶段,一定要尽最大可能避免数据冗余,最好做到无数据冗余。 d) 数据冗余通常是由于数据库设计引起的。 2) 假定有一个用户表,表中包含字段:userid (int)、username (varchar)、 password(varchar)、等,该表需要设置主键,以下说法正确的是()。(选择两项) a) 如果不能有同时重复的username和password,那么username和password可以 组合在一起作为主键。 b) 此表设计主键时,根据选择主键的最小性原则,最好采用userid作为主键。 c) 此表设计主键时,根据选择主键的最小性原则,最好采用username和password 作为组合键。 d) 如果采用userid作为主键,那么在userid列输入的数值,允许为空。 3) 关于数据完整性,以下说法正确的是()。(选择两项) a) 引用完整性通过主键和外键之间的引用关系实现。 b) 引用完整性通过限制数据类型、检查约束等实现。 c) 数据完整性是通过数据操纵者自身对数据的控制来实现的。 d) 如果两个表中存储的信息相互关联,那么只要修改了一个表,另外一个表也要 做出相应的修改,则称该这两个表中的数据具备完整性。 4) 关于标识列,以下说法正确的是()。(选择一项) a) 使用sql语句插入数据时,可以为标识列指定要插入的值。 b) 设定标识时,必须同时指定标识种子和标识递增量。 c) 若设定标识时,未指定标识递增量,那么使用sql语句插入数据时,可以为标 识列指定递增值。 d) 只能把主键设定为标识列。 5) 现有表user,字段:userid,username, salary, deptid,email; 表department,字段: deptid, deptname;下面()应采用检查约束来实现。(选择一项) a) 若department中不存在deptid为2的纪录,则不允许在user表中插入deptid 为2的数据行。 b) 若user表中已经存在userid为10的记录,则不允许在user表中再次插入userid 为10的数据行。 c) User表中的salary(薪水)值必须在1000元以上。 d) 若User表的email列允许为空,则向user表中插入数据时,可以不输入email 值。 6) 现有表book,主键bookid设为标识列。若执行语句:select * into book2 from book, 以 下说法正确的是()。(选择两项)

双机热备搭建系统解决方案

UPS电源安装实施方案 1.双机集群介绍 1.1.双机集群的原理说明 双机容错是计算机应用系统稳定、可靠、有效、持续运行的重要保证。它通过系统冗余的方法解决计算机应用系统的可靠性问题,并具有安装维护简单、稳定可靠、监测直观等优点。当一台主机出现故障的时候,可及时启动另一台主机接替原主机任务,保证了用户数据的可靠性和系统的持续运行。在高可用性方案中,操作系统和应用程序是安装在两台服务器的本地系统盘上的,而整个网络系统的数据是通过磁盘阵列集中管理和数据备份的。数据的集中管理是通过双机热备份系统,将所有站点的数据直接从中央存储设备来读取和存储,并由专业人员进行管理,极大地保护了数据的安全性和保密性。用户的数据存放在外接共享磁盘阵列中,在一台服务器出现故障时,备机主动替代主机工作,保证网络服务不间断。双机热备份系统采用“心跳”方法保证主系统与备用系统的联系。所谓“心跳”,指的是主从系统之间相互按照一定的时间间隔发送通讯信号,表明各自系统当前的运行状态。一旦“心跳”信号表明主机系统发生故障,或者是备用系统无法收到主机系统的“心跳”信号,则系统的高可用性管理软件(双机软件)认为主机系统发生故障,立即令主机停止工作,并将系统资源转移到备用系统上,备用系统将替代主机发挥作用,以保证网络服务运行不间断。 双机热备模式即目前通常所说的active/standby 方式,active服务器处于工作状态;而standby服务器处于监控准备状态。当active服务器出现故障的时候,通过软件诊测或手工方式将standby机器激活,保证应用在短时间内完全恢复正常使用。这是目前采用较多的一种模式。

数据库性能优化之冗余字段的作用

什么是冗余字段? 在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。 ——以上是我自己给出的定义 冗余字段的存在到底是好还是坏呢?这是一个不好说的问题。可能在有人看来,这是一个很蹩脚的数据库设计。因为在数据库设计领域,有一个被大家奉为圭臬的数据库设计范式,这个范式理论上要求数据库设计逻辑清晰、关系明确,比如,”用户昵称”字段”nickname”本来属于表”user”,那么,表示”用户昵称”的字段就唯一的只应该属于”user”表的”nickname”字段,这样,当用户要修改昵称的时候,程序就只需要修改user.nickname这个字段就行了,瞧,很方便。不过问题也随之而来,我在其他数据表(如订单orders表)里只存储了用户的ID,我要通过这个ID值得到用户昵称该怎么办呢?一个普遍的解决方法是通过联接(join),在查询时,通过id这个唯一条件联接两个表,从而取到用户的昵称。 这样确实是没问题,我也一直觉得这样是最好的方案,扩展方便,当要更新用户信息时,程序中要修改的地方很少,但是随着数据库里数据不断增加,百万,千万,同时,用户表的数据肯定也在不断的增加的,它可能是十万,百万。这个时候,你会发现两个表通过联接来取数据就显得相当费力了,可能你只需要取一个nickname这个用户昵称属性,你就不得不去联一下那个已经几十万的用户表进行检索,其速度可想而知了。 这个时候,你可以尝试把nickname这个字段加到orders这个订单表中,这样做的好事是,当你要通过订单表呈现一个订单列表时,涉及用户的部分可能就不需要再进行联接查询了。当然,有利就有弊,这样做的弊端就是,当你尝试更新用户信息时,你必须记得用户信息表里当前被更新的字段中,有哪些是冗余字段,分别属于哪些表,找到他们,然后加入到你的更新程序段中来。这个是程序中的开销,开销在开发人员的时间上了。至于这样做是否值得,就得看具体情况而定了。 所以,目前要创建一个关系型数据库设计,我们有两种选择: 尽量遵循范式理论的规约,尽可能少的冗余字段,让数据库设计看起来精致、优雅、让人心醉。 合理的加入冗余字段这个润滑剂,减少join,让数据库执行性能更高更快。 选择哪一种呢?如果你是一个美学狂人,并且财大气粗,非要使用第一种方案,也没关系,这种方案的短板并非不可救药的。比如,你可以增加服务器,从数据库集群入手,进行读写分离,读的时候可以将压力分散到不同的数据库服务器上,这样也可以获得很好的性能,只是多付出了硬件成本和维护成本。或者,你可以在数据库前端架设Memcached之类的缓存服务,减少读写数据库的次数,也可以达到同样的效果。问题在于你确定你需要缓存之类的东西。 当然,如果你跟我一样,只有一台每月几十元买来的vps,甚至可能是一个虚拟主机,建议还是暂时压制你的美学欲望,跟我一起选择第二种方案吧,除非你愿意你的整个数据库都一直只有零零星星的几条数据 更多信息请查看IT技术专栏

SQLServer2000数据库置疑的解决方法

SQLServer2000数据库置疑的解决方法sql2000中MSDB数据库置疑状态的解决方法 问题:我的SQL Server 2000的MSDB数据库,因为不正常关机,造成了置疑状态,请问采用什么方法能够弥补,解决方法一:你可以采用以下的代码进行修复: USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='msdb' Go sp_dboption 'msdb', 'single user', 'true' Go DBCC CHECKDB('msdb') Go update sysdatabases set status =28 where name='msdb' Go sp_configure 'allow updates', 0 reconfigure with override Go sp_dboption 'msdb', 'single user', 'false' Go 解决方法二:MSDB数据库解决过程 难点:由于MSDB数据库不能删除,将其文件拷出来,再次附加数据库,但新的不能同名,遇到了困难。附加数据库不能叫MSDB,也就是

1:先停止整个数据库,将该数据库的文件msdbdata.mdf和msdblog.ldf拷贝粘贴出来到另一个目录下。 2:将以上的文件再拷贝到另一个目录下,也就是说复制两次。 3:选择数据库右击鼠标 --》所有任务--》附加数据库将复制出的一个备份文件附加上去,其中,数据库名称叫MSDB1,用户是SA或ADMINISTRATOR。 4:将MSDB1数据库备份,备份成一个文件,当时我的叫MSDB。BAK。 5:选择置疑的数据库MSDB,选择恢复数据库,将刚才备份出来的数据库强行恢复到MSDB。 6:问题解决,MSDB库又能正常使用。 完成后赶快将数据库再次备份一次。呵呵。 另附:数据库置疑解决办法 还有,现在修复好了,但昨天的数据丢失了,以前的数据倒还在。难道昨天发生了什么异常情况, 我这里一篇解决数据库质疑的文档,提供给大家,日后备用: SQL SERVER数据库置疑后恢复步骤 1( 恢复步骤: a.将smlog_log.ldf文件备份到其它目录下; b.将源目录下的smlog_log.ldf文件改名为smlog_log_bak.ldf; c.执行以下语句修改数据库的状态: use Master go update sysdatabases set status=32768 where name=’数据库名称’ --修改状态 go shutdown with nowait --停止数据库服务器 go

数据库的基本特点之一是数据冗余小

1、数据库的基本特点之一是数据冗余小、易于扩充 2、数据库管理系统(DBMS)是一组软件 3、电子商务结构框架中,社会人文环境、自然科技环境和电子商务技术构成了电子商务应 用平台的三个支柱 4、电子商务活动中的信息通常是以多媒体的形式在Internet上传播的 5、数据库技术的产生与发展经历了人工管理阶段、文件系统阶段和数据库系统阶段 6、在数据库系统中,对数据库的存取全部由DBMS(数据库管理系统)统一管理,从而保 证了数据库和程序的逻辑独立性 7、数据库系统安全问题的核心是身份识别 8、数据操纵功能包括查询、插入、删除和修改 9、规范换的目的使结构合理,清除存储异常并使得数据冗余尽量减少,便于插入。删除和 更新 10、一个关系模型包括了一组关系模式,并且他们之间是相互关联的 11、从一般情况来看使用WEB数据库要解决数据库的归纳、索引和维护问题 12、ODBC驱动管理器是一个共享的程序管理器,称为ODBC.DLL 13、数据模型通常是由数据结构、数据操作和完整性约束三个要素组成 14、E-R图三要素包括实体、属性和联系 15、E-R图中实体用矩形表示,属性用椭圆形表示,联系用菱形表示 16、联系分为1:1、1:n和m:n三种 17、在关系中,能唯一标识组的属性集称为关系模式的主键 18、常用的数据库软件有Access,Oracle,Foxpro,SQL 19、SQL语言中删除一个表的命令是DROP 20、在SQL中使用FOREIGN KEY时,与之配合的语句是references 21、在SQL中建立视图使用create view命令 22、要保证数据库的独立性需要修改的是三层模式之间的两种映射 23、SQL语言具有的功能是数据定义、数据操纵和数据控制 24、记在数据库系统运行过程中所有更新操作的文件称为日志文件 25、在关系数据库中表与表之间的联系是通过参照完整性规则实现的 26、关系是满足一定条件的二维表,表中的一行称为关系的一个元组,表中的一列称为关系的一个属性 27、关系代数包括常规的集合运算:交、并、差、乘;还有专有的运算:选择、投影、连接、除 28、SQL的含义是结构化的查询语言 29、SQL语句对大小写不敏感 30、SQL语句的结束符为; 31、创建数据库使用create database语句,删除数据库使用drop database语句 32、对数据库进行插入操作使用的SQL语句为insert into 33、删除满足条件的元组使用的SQL命令为delete 34、对数据模型的规范化主要是解决插入异常、删除异常和数据冗余过大的问题 35、模式/内模式映象为数据库提供了物理数据独立性 36、能够消除部分函数依赖引起的冗余的范式是第二范式;能够消除传递函数依赖引起的冗余的范式是第三范式 37、第一代DBMS系统主要是指层次和网状 38、最常用的概念模型是E-R图

软件冗余的原理和配置

软件冗余的原理和配置 一、软件冗余基本信息介绍 软件冗余是Siemens实现冗余功能的一种低成本解决方案,可以应用于对主备系统切换时间为秒级的控制系统中。 1、系统结构 Siemens软件冗余系统的软件、硬件包括: (1)1套STEP7编程软件(V5.2或更高)加软冗余软件包(V1.x); (2)2套PLC控制器及I/O模块,可以是S7-300(313C-2DP,314C-2DP,31X-2DP)或S7-400(全部S7-400系列CPU)系统; (3)3条通讯链路,主系统与从站通讯链路(PROFIBUS 1)、备用系统与从站通讯链路(PROFIBUS 2)、主系统与备用系统的数据同步通讯链路(MPI 或 PROFIBUS 或 Ethernet); (4)若干个ET200M从站,每个从站包括2个IM153-2接口模块和若干个I/O模块;Y-Link不能用于软冗余系统; (5)除此之外,还需要一些相关的附件,用于编程和上位机监控的 PC-Adapter(连接在计算机串口)或CP5611(插在主板上的PCI槽上)或

CP5511(插在笔记本的PCMIA槽里)、PROFIBUS电缆、PROFIBUS总线链接器等。 系统架构如图1所示: 图1软冗余的系统架构 可以看出,系统是由两套独立的S7-300或S7-400 PLC系统组成,软冗余能够实现: 主机架电源、背板总线等冗余;PLC处理器冗余;PROFIBUS现场总线网络冗余(包括通讯接口、总线接头、总线电缆的冗余);ET200M站的通讯接口模块IM153-2冗余。

软冗余系统由A和B两套PLC控制系统组成。开始时,A系统为主,B系统为备用,当主系统A中的任何一个组件出错,控制任务会自动切换到备用系统B 当中执行,这时,B系统为主,A系统为备用,这种切换过程是包括电源、CPU、通讯电缆和IM153接口模块的整体切换。系统运行过程中,即使没有任何组件出错,操作人员也可以通过设定控制字,实现手动的主备系统切换,这种手动切换过程,对于控制系统的软硬件调整,更换,扩容非常有用,即Altering Configuration and Application Program in RUN Mode 。 2、系统工作原理 在软冗余系统进行工作时,A、B控制系统(处理器,通讯、I/O)独立运行,由主系统的PLC掌握对ET200从站中的I/O控制权。A、B系统中的PLC程序由非冗余(non-duplicated)用户程序段和冗余(redundant backup)用户程序段组成,主系统PLC执行全部的用户程序,备用系统PLC只执行非冗余用户程序段,而跳过冗余用户程序段。 软冗余系统内部的运行过程参考图2。

关系数据库的数据冗余

桂林工学院学报990313 桂林工学院学报 JOURNAL OF GUILIN INSTITUTE OF TECHNOLOGY 1999年 第19卷 第3期 Vol.19 No.3 1999 关系数据库的数据冗余 浦 路 平 摘 要 关系数据库的数据冗余形成的原因有表的重复、属性的重复、元组的重复、属性值的重复。有的数据冗余用于数据间建立联系、数据安全或为了数据使用的便利,是必需的数据冗余,而其余的数据冗余为非必需的数据冗余应尽量予以消除。按属性值域集合基的特点将其分为有限类和无限类。无限类属性值偶尔重复不是数据冗余,有限类属性值的重复由一对多或多对多的关系所致,可相机处理之。 关键词 关系数据库; 数据冗余; 必需的数据冗余, 有限类;无限类 DATA REDUNDANT IN RELATIONAL DATABASE Pu Luping Department of Electonics and Computer, Guilin Institute of Technology Abstract The data redundant in relational database is caused by the reduplication of the table, attribute, record, or attribute value. Data redundant should be removed as possible except necessary data redundant—the data redundant used to set relation between the data of databases, secure databases or be convenient for using data. Attribute values are classified into the limited class and the unlimited class according to their character of domain set base. The replicate of the limited class attribute value may result from the relation of one-to-one or one-to-many but the occasional replicate of the unlimited class attribute value is not data redundancy. Key words relational database; data redundant; necessary data redundant; limited class; unlimited class 关系数据库中的数据冗余主要是指关系数据库中同一信息数据的重复存贮。 数据冗余浪费了宝贵的资源,应尽量减少。但关系数据库中为实现一些功能有些数据冗余是必需的。必需的数据冗余主要用于以下用途: (1)数据间建立联系,如两表间通过共同属性建立联系[1]; (2)数据恢复,如建立备份文件以备正式文件被破坏时恢复; (3)数据核查,如设立数据校验位可以检查数据在存贮、传输等过程中的改变; (4)数据使用的便利,如为了查看数据的直观,使用数据的方便、高效。 (5)减少数据通讯开销,如分布式数据库在不同场地重复。 1 数据冗余的成因 file:///E|/qk/glgxy/glgx99/glgx9903/990313.htm(第 1/3 页)2010-3-22 20:08:17

软冗余实例

Siemens PLC系统软件冗余 的说明与实现 软件冗余基本信息介绍 软件冗余是Siemens实现冗余功能的一种低成本解决方案,可以应用于对主备系统切换时间要求不高的控制系统中。 A.系统结构 Siemens软件冗余系统的软件、硬件包括: 1套STEP7编程软件(V5.x)加软冗余软件包(V1.x); 2套PLC控制器及I/O模块,可以是S7-300或S7-400系统; 3条通讯链路,主系统与从站通讯链路(PROFIBUS 1)、备用系统与从站通讯链路(PROFIBUS 2)、主系统与备用系统的数据同步通讯链路(MPI 或 PROFIBUS 或 Ethernet); 若干个ET200M从站,每个从站包括2个IM153-2接口模块和若干个I/O模块; 除此之外,还需要一些相关的附件,用于编程和上位机监控的PC-Adapter(连接在计算机串口)或CP5611(插在主板上的PCI槽上)或CP5511(插在笔记本的PCMIA槽里)、PROFIBUS电缆、PROFIBUS总线链接器等; 下图说明了软冗余系统的基本结构: 图2 可以看出,系统是由两套独立的S7-300或S7-400 PLC系统组成,软冗余能够实现: I.主机架电源、背板总线等冗余; II.PLC处理器冗余; III.PROFIBUS现场总线网络冗余(包括通讯接口、总线接头、总线电缆的冗余); IV.ET200M站的通讯接口模块IM153-2冗余。

软冗余系统由A和B两套PLC控制系统组成。开始时,A系统为主,B系统为备用,当主系统A中的任何一个组件出错,控制任务会自动切换到备用系统B当中执行,这时,B系统为主,A系统为备用,这种切换过程是包括电源、CPU、通讯电缆和IM153接口模块的整体切换。系统运行过程中,即使没有任何组件出错,操作人员也可以通过设定控制字,实现手动的主备系统切换,这种手动切换过程,对于控制系统的软硬件调整,更换,扩容非常有用,即Altering Configuration and Application Program in RUN Mode 。 B.系统工作原理 在软冗余系统进行工作时,A、B控制系统(处理器,通讯、I/O)独立运行,由主系统的PLC掌握对ET200从站中的I/O控制权。A、B系统中的PLC程序由非冗余(non-duplicated)用户程序段和冗余(redundant backup)用户程序段组成,主系统PLC执行全部的用户程序,备用系统PLC只执行非冗余用户程序段,而跳过冗余用户程序段。 下面我们看一下软冗余系统中PLC内部的运行过程: 图3 主系统的CPU将数据同步到备用系统的CPU需要几个程序扫描循环:

SQL server 2008 数据库置疑的处理办法

SQL server 2008 数据库置疑的处理办法 1 把问题数据库备份后直接删除 停掉SQLSERVER服务,把服务器上出问题的数据库, 假设名称为ErrorDB的数据库文件及日志文件备份到其他目录,然后直接将其删除,把其数据库文件及日志文件也删除 2 新建同名数据库 启动SQLSERVER服务,新建同名数据库ErrorDB,文件目录和日志和原来一致 3 用备份的数据库文件替换新的数据库文件 停掉SQLSERVER服务,把备份的数据库文件替换新的数据库文件(只替换数据库文件,不替换日志文件) 启动SQLSERVER服务,打开数据库,这时数据库应该是不能访问的 -------------------设置应急模式、单用户模式、检查修复数据,取消单用户模式 ---------------------- 4 将数据库设置为应急状态 alter database ErrorDB set emergency 执行后,为了保险起见,重新停止、开启的SQLSERVER服务 再打开数据库,已经可以看到里面的内容了,如表,视图,存储过程等 数据库名称后有紧急标志,能看到数据库结构,但无法进行备份等操作 5 将数据库设置为单用户模式 ALTER DATABASE ErrorDB SET SINGLE_USER 6 对数据库进行检查修复 dbcc checkdb(EIMSDb,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(EIMSDb,REPAIR_REBUILD) 操作后,仍然停止启动SQLSERVER服务(不确定是否需要,我只是为了想无干扰查看执行后的数据库状况)重新打开数据库,已经是正常状态了,没有应急提示了 7 取消单用户模式 exec sp_dboption EIMSDb, N'single', N'false'

数据库冗余设计

数据库性能优化之冗余字段的作用 作者:yoom时间:2011-03-01文档类型:原创来自:蓝色理想 什么是冗余字段? 在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。 ——以上是我自己给出的定义 冗余字段的存在到底是好还是坏呢?这是一个不好说的问题。可能在有人看来,这是一个很蹩脚的数据库设计。因为在数据库设计领域,有一个被大家奉为圭臬的数据库设计范式,这个范式理论上要求数据库设计逻辑清晰、关系明确,比如,”用户昵称”字段”nickname”本来属于表”user”,那么,表示”用户昵称”的字段就唯一的只应该属于”user”表的”nickname”字段,这样,当用户要修改昵称的时候,程序就只需要修改user.nickname这个字段就行了,瞧,很方便。不过问题也随之而来,我在其他数据表(如订单orders表)里只存储了用户的ID,我要通过这个ID值得到用户昵称该怎么办呢?一个普遍的解决方法是通过联接(join),在查询时,通过id这个唯一条件联接两个表,从而取到用户的昵称。 这样确实是没问题,我也一直觉得这样是最好的方案,扩展方便,当要更新用户信息时,程序中要修改的地方很少,但是随着数据库里数据不断增加,百万,千万,同时,用户表的数据肯定也在不断的增加的,它可能是十万,百万。这个时候,你会发现两个表通过联接来取数据就显得相当费力了,可能你只需要取一个nickname这个用户昵称属性,你就不得不去联一下那个已经几十万的用户表进行检索,其速度可想而知了。 这个时候,你可以尝试把nickname这个字段加到orders这个订单表中,这样做的好事是,当你要通过订单表呈现一个订单列表时,涉及用户的部分可能就不需要再进行联接查询了。当然,有利就有弊,这样做的弊端就是,当你尝试更新用户信息时,你必须记得用户信息表里当前被更新的字段中,有哪些是冗余字段,分别属于哪些表,找到他们,然后加入到你的更新程序段中来。这个是程序中的开销,开销在开发人员的时间上了。至于这样做是否值得,就得看具体情况而定了。 所以,目前要创建一个关系型数据库设计,我们有两种选择: 1.尽量遵循范式理论的规约,尽可能少的冗余字段,让数据库设计看起来精致、 优雅、让人心醉。 2.合理的加入冗余字段这个润滑剂,减少join,让数据库执行性能更高更快。 选择哪一种呢?如果你是一个美学狂人,并且财大气粗,非要使用第一种方案,也没关系,这种方案的短板并非不可救药的。比如,你可以增加服务器,从数据库集群入手,进行读写分离,读的时候可以将压力分散到不同的数据库服务器上,这样也可以获得很好的性能,只是多付出了硬件成本和维护成本。或者,你可以在数据库前端架设

软件冗余的原理和配置

软件冗余的原理和配置 7.1 软件冗余基本信息介绍 软件冗余是Siemens实现冗余功能的一种低成本解决方案,可以应用于对主备系统切换时间为秒级的控制系统中。 7.1.1系统结构 Siemens软件冗余系统的软件、硬件包括: (1)1套STEP7编程软件(V5.2或更高)加软冗余软件包(V1.x); (2)2套PLC控制器及I/O模块,可以是S7-300(313C-2DP,314C-2DP,31X-2DP)或S7-400(全部S7-400系列CPU)系统; (3)3条通讯链路,主系统与从站通讯链路(PROFIBUS 1)、备用系统与从站通讯链路(PROFIBUS 2)、主系统与备用系统的数据同步通讯链路(MPI 或 PROFIBUS 或 Ethernet); (4)若干个ET200M从站,每个从站包括2个IM153-2接口模块和若干个I/O模块;Y-Link不能用于软冗余系统; (5)除此之外,还需要一些相关的附件,用于编程和上位机监控的PC-Adapter(连接在计算机串口)或CP5611(插在主板上的PCI槽上)或CP5511(插在笔记本的 PCMIA槽里)、PROFIBUS电缆、PROFIBUS总线链接器等。 系统架构如图7-1所示: 图7-1软冗余的系统架构

可以看出,系统是由两套独立的S7-300或S7-400 PLC系统组成,软冗余能够实现: 主机架电源、背板总线等冗余;PLC处理器冗余;PROFIBUS现场总线网络冗余(包括通讯接口、总线接头、总线电缆的冗余);ET200M站的通讯接口模块IM153-2冗余。 软冗余系统由A和B两套PLC控制系统组成。开始时,A系统为主,B系统为备用,当主系统A中的任何一个组件出错,控制任务会自动切换到备用系统B当中执行,这时,B 系统为主,A系统为备用,这种切换过程是包括电源、CPU、通讯电缆和IM153接口模块的整体切换。系统运行过程中,即使没有任何组件出错,操作人员也可以通过设定控制字,实现手动的主备系统切换,这种手动切换过程,对于控制系统的软硬件调整,更换,扩容非常有用,即Altering Configuration and Application Program in RUN Mode 。 7.1.2 系统工作原理 在软冗余系统进行工作时,A、B控制系统(处理器,通讯、I/O)独立运行,由主系统的PLC掌握对ET200从站中的I/O控制权。A、B系统中的PLC程序由非冗余(non-duplicated)用户程序段和冗余(redundant backup)用户程序段组成,主系统PLC执行全部的用户程序,备用系统PLC只执行非冗余用户程序段,而跳过冗余用户程序段。 软冗余系统内部的运行过程参考图7-2。 图7-2软冗余系统内部的运行过程 主系统的CPU将数据同步到备用系统的CPU需要1到几个程序扫描循环,如图7-3所示:

S Q L 数据库出现置疑怎么解决

SQL数据库置疑的解决方法 首先,在任何操作之前,必须要备份数据库(特别注意) 一、分离数据库 1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器 2、展开服务器组,然后展开服务器,选中要分离的数据库 3、点击鼠标右键“所有任务》分离数据库”,出现如下窗口 4、点击确定,该选定的数据库就被分离。 5.分离后,把原数据库里面.MDF(主数据文件).LDF(事务日志文件)这两个文件复制到目标盘下,例:D盘下 注意事项,只有“使用本数据库的连接”数为0时,该数据库才能分离。所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。

二、附加数据库 1、在附加数据库之前,首先要移动数据库文件 在附加数据库之前,您必须将与数据库关联的 .MDF(主数据文件).LDF(事务日志文件)这两个文件复制到目标硬盘下,或是同一服务器的不同硬盘目录下。这两个文件一般位于C:\Program Files\Microsoft SQL Server\MSSQL\Data 目录下。 2、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器 3、展开服务器组,然后展开服务器 4、右击"数据库",然后选择“所有任务》附加数据库”,弹出窗口 5、输入要附加的数据库的MDF名称。如果不确定文件位于何处,单击浏览("...")搜索。若要确保指定的 MDF 文件正确,请单击"验证"。在"附加为"框内,输入数据库的名称。数据库名称不能与任何现有数据库名称相同。指定数据库的所有者 6、单击"确定"按钮。新附加的数据库的数据库节点即创建在"数据库"文件夹中

SQL数据库置疑解决方案(原因分析、预防措施、修复方法)附图

SQL数据库置疑解决方案 一、数据库置疑产生的原因 1、SQL Server所在分区空间是否够? 数据库文件大小是否达到最大文件限制? FAT32的格式只支持4G以内的文件。 2、数据库文件损坏或被非正常删除时出现这种情况。 3、病毒防火墙的扫描也会引起数据库置疑。 4、当SQL Server启动时,将会尝试获得对数据库文件的排他访问权,如果此时该文件被其他程序占用,或者遗失,数据库将会被标记为置疑。 5、电脑非法关机也会造成数据库置疑。 6、电脑磁盘有坏道有可能造成数据库置疑。 二、数据库置疑的预防 1、数据库存放的盘符,空间是否够大,经常检查盘符的空间。 2、数据库存放的盘符的格式设置为NTFS格式。 3、进行病毒清除时,尽量把SQL服务停掉,再进行检查。 4、尽量减少非正常关机。 5、建议客户购买后备电源。 6、给客户实施软件之后一定要做好自动备份。 7、建议客户每隔一定时间手动备份一次。 三、数据库置疑的修复 1、正常的备份、SQL数据库恢复方式 正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。 卸下数据库的命令:Sp_detach_db 数据库名 连接数据库的命令:Sp_attach_db或者sp_attach_single_file_db s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′[,...16] sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′physical_name′ 使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。 例子: 假设数据库为pdm,其数据文件为pdm_data.mdf,日志文件为pdm_log.ldf。 下面我们讨论一下如何备份、恢复该数据库。 卸下数据库:sp_detach_db 'pdm' 连接数据库:sp_attach_db 'pdm','C:\Program Files\Microsoft SQL Server\MSSQL\Data\pdm_data.mdf','C:\Program Files\Microsoft SQL Server\MSSQL\Data\pdm_log.ldf'

食通天SQL SERVER数据库置疑及修复

食通天SQL SERVER数据库置疑及修复 数据库置疑处理 提要:在数据库置疑或者修复的处理过程中,须先将文中的数据库更改为真实的数据库名称. 数据库置疑修复处理完成后,需执行第二步骤,使用DBCC语句对数据库进行检测并修复错误. 对于损坏的数据库,可参照数据库修复处理方法进行处理. 步骤1: 停止SQL服务管理器,将原数据文件拷贝出来进行备份,然后将原数据库删除,使用思迅数据库安装程序创建一个新的数据库。 步骤2: 停止SQL Server 服务管理器 步骤3: 用备份出来的老数据库的MDF文件替换新数据库相应的MDF文件,并把LDF文件删除。 步骤4: 重新启动SQL Server服务,然后运行如下命令: Use Master Go sp_configure 'allow updates', 1 reconfigure with override Go begin tran update sysdatabases set status = 32768 where name = 'hbfsv8' --Verify one row is updated before committing commit tran 步骤5:

停止SQL然后重新启动SQL Server服务,然后运行如下命令: DBCC TRACEON(3604) DBCC REBUILD_LOG('db_name','C:\ProgramFiles\Microsoft SQL Server\MSSQL\Data\hbfsv8_log.ldf') Go --注:此处的db_name一定要更换为需要修复的数据库名称,比如此实例中的hbfsv8 步骤6: 停止SQL然后重新启动SQL Server服务,然后运行: use master update sysdatabases set status = 8 where name = 'hbfsv8' Go sp_configure 'allow updates', 0 reconfigure with override Go 步骤7: 运行dbcc checkdb(hbfsv8) 检查数据库的完整性

数据库被置疑后的解决方法

数据库被置疑后的解决方法 A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager 里面建立。 B.停掉数据库服务器。 C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据 库数据文件test.mdf。 D.启动数据库服务器。此时会看到数据库test的状态为"置疑"。这时候不能对此数据库进行任何*作。 E.设置数据库允许直接*作系统表。此*作可以在SQL Server Enterprise Manager里面选择数据库服 务器,按右键,选择"属性",在"服务器设置"页面中将"允许对系统目录直接修改"一项选中。也可以 使用如下语句来实现。 use master go sp_configure 'allow updates',1 go reconfigure with override go F.设置test为紧急修复模式 update sysdatabases set status=-32768 where dbid=DB_ID('test') 此时可以在SQL Server Enterprise Manager里面看到该数据库处于"只读\置疑\脱机\紧急模式"可以 看到数据库里面的表,但是仅仅有系统表 G.下面执行真正的恢复*作,重建数据库日志文件 dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf') 执行过程中,如果遇到下列提示信息: 服务器: 消息5030,级别16,状态1,行1 未能排它地锁定数据库以执行该*作。 DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。 说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager 打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。 正确执行完成的提示应该类似于: 警告: 数据库'test' 的日志已重建。已失去事务的一致性。应运行DBCC CHECKDB 以验证物理一致 性。将必须重置数据库选项,并且可能需要删除多余的日志文件。 DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。

机器学习笔记-冗余的数据对特征量进行降维

机器学习笔记:冗余的数据对特征量进行降维 如果我们有许多冗余的数据,我们可能需要对特征量进行降维(Dimensionality Reduction)。 我们可以找到两个非常相关的特征量,可视化,然后用一条新的直线来准确的描述这两个特征量。例如图10-1所示,x1和x2是两个单位不同本质相同的特征量,我们可以对其降维。 图10-1 一个2维到1维的例子 又如图10-2所示的3维到2维的例子,通过对x1,x2,x3的可视化,发现虽然样本处于3维空间,但是他们大多数都分布在同一个平面中,所以我们可以通过投影,将3维降为2维。 图10-2 一个3维到2维的例子 降维的好处很明显,它不仅可以数据减少对内存的占用,而且还可以加快学习算法的执行。注意,降维只是减小特征量的个数(即n)而不是减小训练集的个数(即m)。 10.1.2 Motivation two: Visualization 我们可以知道,但特征量维数大于3时,我们几乎不能对数据进行可视化。所以,有时为了对数据进行可视化,我们需要对其进行降维。我们可以找到2个或3个具有代表性的特征量,他们(大致)可以概括其他的特征量。 例如,描述一个国家有很多特征量,比如GDP,人均GDP,人均寿命,平均家庭收入等等。想要研究国家的经济情况并进行可视化,我们可以选出两个具有代表性的特征量如GDP和人均GDP,然后对数据进行可视化。如图10-3所示。 图10-3 一个可视化的例子 10.2 Principal Component Analysis 主成分分析(Principal Component Analysis : PCA)是最常用的降维算法。

信息系统安全整体解决方案

《安全系统整体解决方案设计》

企业网络整体解决方案设计第一章企业网络的现状描述 1.1企业网络的现状描述

网络拓扑图 以Internet发展为代表的全球性信息化浪潮日益深刻,信息网络技术的应用正日益普及和广泛,应用层次正在深入,应用领域从传统的、小型业务系统逐渐向大型、关键业务系统扩展,以往一直保持独立的大型机和中-高端开放式系统(Unix和NT)部分迅速融合成为一个异构企业部分。 以往安全系统的设计是采用被动防护模式,针对系统出现的各种情况采取相应的防护措施,当新的应用系统被采纳以后、或者发现了新的系统漏洞,使系统在实际运行中遭受攻击,系统管理员再根据情况采取相应的补救措施。这种以应用处理为核心的安全防护方案使系统管理人员忙于处理不同系统产生的各种故障。人力资源浪费很大,而且往往是在系统破坏造成以后才进行处理,防护效果不理想,也很难对网络的整体防护做出规划和评估。 安全的漏洞往往存在于系统中最薄弱的环节,邮件系统、网关无一不直接威胁着企业网络的正常运行;中小企业需要防止网络系统遭到非法入侵、未经授权的存取或破坏可能造成的数据丢失、系统崩溃等问题,而这些都不是单一的防病毒软件外加服务器就能够解决的。因此无论是网络安全的现状,还是中小企业自身都向广大安全厂商提出了更高的要求。 第二章企业网络的漏洞分析 物理安全 网络的物理安全的风险是多种多样的。

网络的物理安全主要是指地震、水灾、火灾等环境事故;电源故障;人为操作失误或错误; 设备被盗、被毁;电磁干扰;线路截获。以及高可用性的硬件、双机多冗余的设计、机房环境及报警系统、安全意识等。它是整个网络系统安全的前提,在这个企业区局域网内,由于网络的物理跨度不大,只要制定健全的安全管理制度,做好备份,并且加强网络设备和机房的管理,防止非法进入计算机控制室和各种盗窃,破坏活动的发生,这些风险是可以避免的。 主机安全 对于中国来说,恐怕没有绝对安全的操作系统可以选择,无论是Microsoft的WindowsNT 或者其他任何商用UNIX操作系统,其开发厂商必然有其Back-Door。我们可以这样讲:没有完全安全的操作系统。但是,我们可以对现有的操作平台进行安全配置、对操作和访问权限进行严格控制,提高系统的安全性。因此,不但要选用尽可能可靠的操作系统和硬件平台。而且,必须加强登录过程的认证,特别是在到达服务器主机之前的认证,确保用户的合法性;其次应该严格限制登录者的操作权限,将其完成的操作限制在最小的范围内。 与日常生活当中一样,企业主机也存在着各种各样的安全问题。使用者的使用权限不同,企业主机所付与的管理权限也不一样,同一台主机对不同的人有着不同的使用范围。同时,企业主机也会受到来自病毒,黑客等的袭击,企业主机对此也必须做好预防。在安装应用程序的时候,还得注意它的合法权限,以防止它所携带的一些无用的插件或者木马病毒来影响主机的运行和正常工作,甚至盗取企业机密。 外部安全 拒绝服务攻击。值得注意的是,当前运行商受到的拒绝服务攻击的威胁正在变得越来越紧迫。对拒绝服务攻击的解决方案也越来越受到国际上先进电信提供商的关注。对大规模拒绝服务攻击能够阻止、减轻、躲避的能力是标志着一个电信企业可以向客户承诺更为健壮、具有更高可用性的服务,也是真个企业的网络安全水平进入一个新境界的重要标志。 外部入侵。这里是通常所说的黑客威胁。从前面几年时间的网络安全管理经验和渗透测试结果来看,当前大多数电信网络设备和服务都存在着被入侵的痕迹,甚至各种后门。这些是对网络自主运行的控制权的巨大威胁,使得客户在重要和关键应用场合没有信心,损失业务,甚至造成灾难性后果。 病毒。病毒时时刻刻威胁着整个互联网。前段时间美国国防部和全年北京某部内部网遭受的大规模病毒爆发都使得整个内部办公和业务瘫痪数个小时,而MSBlaster及Nimda和CodeRed 的爆发更是具有深远的影响,促使人们不得不在网络的各个环节考虑对于各种病毒的检测防治。对病毒的彻底防御重要性毋庸置疑。 内部安全 最新调查显示,在受调查的企业中60%以上的员工利用网络处理私人事务。对网络的不正当使用,降低了生产率、阻碍电脑网络、消耗企业网络资源、并引入病毒和间谍,或者使得不法员工可以通过网络泄漏企业机密,从而导致企业数千万美金的损失。 不满的内部员工可能在WWW站点上开些小玩笑,甚至破坏。不论如何,他们最熟悉服务器、小程序、脚本和系统的弱点。对于已经离职的不满员工,可以通过定期改变口令和删除系统

相关文档
最新文档