‘数据库’ 分类的存档

[转载]SQLite的升级 – 熊猫82 – 博客园. 做Android应用,不可避免的会与SQLite打交道。随着应用的不断升级,原有的数据库结构可能已经不再适应新的功能,这时候,就需要对SQLite数据库的结构进行升级了。 SQLite提供了ALTER TABLE命令,允许用户重命名或添加新的字段到已有表中,但是不能从表中删除字段。 并且只能在表的末尾添加字段,比如,为 Subscription添加两个字段: 1 ALTER TABLE Subscription ADD COLUMN Activation BLOB; 2 ALTER TABLE Subscription ADD COLUMN Key BLOB; 复制代码 另外,如果遇到复杂的修改操作,比如在修改的同时,需要进行数据的转移,那么可以采取在一个事务中执行如下语句来实现修改表的需求。 1. 将表名改为临时表 ALTER TABLE Subscription RENAME TO __temp__Subscription; 2. 创建新表 CREATE TABLE Subscription (OrderId VARCHAR(32) PRIMARY KEY ,UserName VARCHAR(32) NOT NULL ,ProductId VARCHAR(16) NOT NULL); 3. 导入数据 INSERT INTO Subscription [...]

2012年1月11日08:16 没有评论

[转载]sqlserver数据库大型应用解决方案总结 – @Dylan – 博客园. 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。 一、负载均衡技术 负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器。 1、实现原理 实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。在这里,它截断了数据库和程序的直接连接,由所有的程序 来访问这个中间层,然后再由中间层来访问数据库。这样,我们就可以具体控制访问某个数据库了,然后还可以根据数据库的当前负载采取有效的均衡策略,来调整 每次连接到哪个数据库。 2、实现多据库数据同步 对于负载均衡,最重要的就是所有服务器的数据都是实时同步的。这是一个集群所必需的,因 为,如果数不据实时、不同步,那么用户从一台服务器读出的数据,就有别于从另一台服务器读出的数据,这是不能允许的。所以必须实现数据库的数据同步。这 样,在查询的时候就可以有多个资源,实现均衡。比较常用的方法是Moebius for SQL Server集群,Moebius for SQL Server集群采用将核心程序驻留在每个机器的数据库中的办法,这个核心程序称为Moebius for SQL Server 中间件,主要作用是监测数据库内数据的变化并将变化的数据同步到其他数据库中。数据同步完成后客户端才会得到响应,同步过程是并发完成的,所以同步到多个 数据库和同步到一个数据库的时间基本相等;另外同步的过程是在事务的环境下完成的,保证了多份数据在任何时刻数据的一致性。正因为Moebius 中间件宿主在数据库中的创新,让中间件不但能知道数据的变化,而且知道引起数据变化的SQL语句,根据SQL语句的类型智能的采取不同的数据同步的策略以 保证数据同步成本的最小化。 数据条数很少,数据内容也不大,则直接同步数据 数据条数很少,但是里面包含大数据类型,比如文本,二进制数据等,则先对数据进行压缩然后再同步,从而减少网络带宽的占用和传输所用的时间。 数据条数很多,此时中间件会拿到造成数据变化的SQL语句, 然后对SQL语句进行解析,分析其执行计划和执行成本,并选择是同步数据还是同步SQL语句到其他的数据库中。此种情况应用在对表结构进行调整或者批量更改数据的时候非常有用。 3、优缺点 (1) 扩展性强:当系统要更高数据库处理速度时,只要简单地增加数据库服务器就 可以得到扩展。 (2) 可维护性:当某节点发生故障时,系统会自动检测故障并转移故障节点的应用,保证数据库的持续工作。 (3) 安全性:因为数据会同步的多台服务器上,可以实现数据集的冗余,通过多份数据来保证安全性。另外它成功地将数据库放到了内网之中,更好地保护了数据库的安全性。 (4) 易用性:对应用来说完全透明,集群暴露出来的就是一个IP (1) 不能够按照Web服务器的处理能力分配负载。 (2) 负载均衡器(控制端)故障,会导致整个数据库系统瘫痪。 二、数据库的读写分离 1,实现原理:读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服 务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作,其实在很多系统中,主要是读的操作。当主数据库进行写操 作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。 (ebay的读写比率是260:1,ebay的读写分离) (微软数据库分发) 2,实现方法:在MS Sql [...]

2012年1月10日14:36 没有评论

[转载]CURD – 使用 Transact-SQL 的 select 语句查询数据 (二):在查询中使用普通函数和聚集函数 – MicroStone – 博客园. – 常用字符串函数: – CharIndex:用来寻找一个指定字符串在另一个字符串中的起始位置 select CHARINDEX(‘朱磊’,’我的名字叫朱磊’,1) – Len:返回传递给它的字符串长度 select LEN(‘我的名字叫朱磊’) – Upper:把传递给它的字符串转换为大写 select UPPER(‘my name is zhulei’) – Ltrim:清楚字符串左边的空格 select LTRIM(‘   hello’) – Rtrim:清楚字符串右边的空格 select RTRIM(‘   hello   ‘) – Right:从字符串右边返回指定数目的字符 select RIGHT(‘MicroStone’,5) – Replace:替换一个字符串中的字符 select REPLACE(‘中华人民万岁’,’万’,’亿’) – Stuff:在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符 select STUFF(‘ABCDEFG’,3,2,’朱磊’) – 常用日起函数: – [...]

2012年1月7日14:35 没有评论

[转载]SQL截取字符串(substring与patindex的使用) – 爱与决择 – 博客园. 首先学习两个函数 1.substring 返回字符、binary、text 或 image 表达式的一部分。 基本语法:SUBSTRING ( expression , start , length ) expression:字符串、二进制字符串、text、image、列或包含列的表达式 start:整数,指定子串的开始位置      注:SQL中”1″表示字符串中的第一个字符,而.NET中”0″表示第一个字符 length:整数,指定子串的长度(要返回的字符数或字节数) 2.patindex 返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。 基本语法:PATINDEX ( ‘%pattern%‘ , expression ) pattern:字符串。可以使用通配符,但 pattern 之前和之后必须有 % 字符(搜索第一个和最后一个字符时除外)。pattern 是短字符数据类型类别的表达式 expression:表达式,通常为要在其中搜索指定模式的列,expression 为字符串数据类型类别 下面结合上面的两个函数,截取字符串中指定的字符 declare @a varchar(50) set @a=‘2009年7月15日星期五‘ select substring(@a,1,4) –获取年份2009 declare @b int set @b=patindex(‘%日%‘,@a) –获取’日’这个字符在字符串中的位置,即10 select substring(@a,6,@b-5) [...]

2012年1月5日09:26 没有评论

[转载]T-SQL查询进阶–理解SQL SERVER中的分区表 – CareySon – 博客园. 简介 分区表是在SQL SERVER2005之后的版本引入的特性。这个特性允许把逻辑上的一个表在物理上分为很多部分。而对于SQL SERVER2005之前版本,所谓的分区表仅仅是分布式视图,也就是多个表做union操作. 分区表在逻辑上是一个表,而物理上是多个表.这意味着从用户的角度来看,分区表和普通表是一样的。这个概念可以简单如下图所示: 而对于SQL SERVER2005之前的版本,是没有分区这个概念的,所谓的分区仅仅是分布式视图: 本篇文章所讲述的分区表指的是SQL SERVER2005之后引入的分区表特性. 为什么要对表进行分区 在回答标题的问题之前,需要说明的是,表分区这个特性只有在企业版或者开发版中才有,还有理解表分区的概念还需要理解SQL SERVER中文件和文件组的概念. 对表进行分区在多种场景下都需要被用到.通常来说,使用表分区最主要是用于: 存档,比如将销售记录中1年前的数据分到一个专门存档的服务器中 便于管理,比如把一个大表分成若干个小表,则备份和恢复的时候不再需要备份整个表,可以单独备份分区 提高可用性,当一个分区跪了以后,只有一个分区不可用,其它分区不受影响 提高性能,这个往往是大多数人分区的目的,把一个表分布到不同的硬盘或其他存储介质中,会大大提升查询的速度. 分区表的步骤 分区表的定义大体上分为三个步骤: 定义分区函数 定义分区构架 定义分区表 分区函数,分区构架和分区表的关系如下: 分区表依赖分区构架,而分区构架又依赖分区函数.值得注意的是,分区函数并不属于具体的分区构架和分区表,他们之间的关系仅仅是使用关系. 下面我们通过一个例子来看如何定义一个分区表: 假设我们需要定义的分区表结构如下: 第一列为自增列,orderid为订单id列,SalesDate为订单日期列,也就是我们需要分区的依据. 下面我们按照上面所说的三个步骤来实现分区表. 定义分区函数 分区函数是用于判定数据行该属于哪个分区,通过分区函数中设置边界值来使得根据行中特定列的值来确定其分区,上面例子中,我们可以通过SalesDate 的值来判定其不同的分区.假设我们想定义两个边界值(boundaryValue)进行分区,则会生成三个分区,这里我设置边界值分别为 2004-01-01和2007-01-01,则前面例子中的表会根据这两个边界值分成三个区: 在MSDN中,定义分区函数的原型如下: CREATE PARTITION FUNCTION partition_function_name ( input_parameter_type ) AS RANGE [ LEFT | RIGHT ] FOR VALUES [...]

2011年12月31日08:56 没有评论
备案信息:冀ICP备10007948号