据MSSQL购买:发掘用户价值、实现最优数据管理

1. MSSQL的介绍

Microsoft SQL Server(简称MSSQL)是由Microsoft公司发布的一类关系型数据库管理系统。早在SQL Server 2008中,Windows SQL Server已经提供了许多自动维护和容错回复机制,例如自动延时恢复(Automatic Delayed Recovery),数据库分区(Database Partitioning),数据库快照(Database Snapshots)和故障转移群集(Failover Clustering)等等。这些特性都使得MSSQL成为了企业级数据库系统中的首选之一。

2. 发掘用户价值

2.1. 数据库分析

数据库分析是一种分析数据和信息的技术,可以在数据量庞大的情况下,快速地捕捉信息。在MSSQL中,可以通过SQL Server分析服务(SQL Server Analysis Services)提供的在线分析处理(OLAP)实现数据的多维分析,从而发掘用户价值。具体操作方式如下:

--创建分析服务

CREATE XMLA DEFINITION <Batch><Create xmlns="urn:schemas-microsoft-com:xml-analysis" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300"><ObjectDefinition><Database xmlns="http://schemas.microsoft.com/analysisservices/2003/engine" xsi:type="ddl200_200:Database"><ID>My Database</ID><Name>My Database</Name><Language>enus</Language><Description>The description of My Database.</Description></Database></ObjectDefinition><ObjectDefinition><DataSource xmlns="http://schemas.microsoft.com/analysisservices/2003/engine" xsi:type="RelationalDataSource"><ID>My DataSource</ID><Name>My DataSource</Name><ConnectionString>Provider=SQLNCLI10.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AdventureWorks2008R2;Data Source=(local);Auto Translate=False;</ConnectionString></DataSource></ObjectDefinition><ObjectDefinition><DataSourceView xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"><ID>My DataSourceView</ID><Name>My DataSourceView</Name><Schema><xs:schema xmlns:sql="urn:schemas-microsoft-com:xml-sql" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" targetNamespace="http://schemas.microsoft.com/analysisservices/2003/engine"><xs:import namespace="urn:schemas-microsoft-com:xml-sql" /><xs:element name="My_View"><xs:complexType /></xs:element></xs:schema><xs:schema targetNamespace="urn:schemas-microsoft-com:xml-sql" xmlns:sql="urn:schemas-microsoft-com:xml-sql" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xs:complexType name="My_View_ct"><xs:sequence><xs:element msprop:ColumnName="ProductID" msprop:Writable="true" name="ProductID" type="xs:int" /><xs:element msprop:ColumnName="Color" msprop:Writable="true" name="Color" type="xs:string" /></xs:sequence></xs:complexType><xs:element name="My_View" msprop:BaseTable="[AdventureWorks2008R2].[Production].[Product]" msprop:Relationship="[dbo].[ProductProductPhotoId_FK] [AdventureWorks2008R2].[Production].[ProductPhoto]" msprop:UseOrdinal="true" msprop:InvalidatesBiTemporalCache="true" msprop:WriteCommand="UPDATE [AdventureWorks2008R2].[Production].[Product] SET [Color]=@Color Where [ProductID]=@ProductID" msprop:UpdateCommand="SELECT [ProductID],[Color] FROM [AdventureWorks2008R2].[Production].[Product] Where [ProductID]=@ProductID"><xs:complexType msdata:IsDataSet="true"><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element msprop:DataSourceID="My DataSource" msprop:InterfaceName="[IAggregatableColumn, IHaveExpression, HierarchyName, IColumn] [AdventureWorks2008R2].dbo.[Product].[ProductID]" msprop:AttributeName="[AdventureWorks2008R2].[Production].[Product].[ProductID]" msprop:ColumnType="xs:int" msprop:ColumnName="ProductID" name="[AdventureWorks2008R2].[Production].[Product].[ProductID]" type="xs:int" /><xs:element msprop:DataSourceID="My DataSource" msprop:InterfaceName="[IColumn] [AdventureWorks2008R2].dbo.[Product].[Color]" msprop:AttributeName="[AdventureWorks2008R2].[Production].[Product].[Color]" msprop:ColumnType="xs:string" msprop:ColumnName="Color" name="[AdventureWorks2008R2].[Production].[Product].[Color]" type="xs:string" /></xs:choice><xs:unique name="My_View_PK"><xs:selector xpath=".//My_View_ct" /><xs:field xpath="@ProductID" /></xs:unique><xs:anyAttribute namespace="http://schemas.microsoft.com/analysisservices/2003/engine" /></xs:complexType></xs:element></xs:schema></Schema></DataSourceView></ObjectDefinition><ObjectDefinition><Cube xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"><ID>My Cube</ID><Name>My Cube</Name><Annotations><Annotation><Name>Description</Name><Value>The description of My Cube.</Value></Annotation></Annotations><Dimensions><Dimension xsi:type="Degenerate" /></Dimensions><MeasureGroups><MeasureGroup xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:ddl3="http://schemas.microsoft.com/analysisservices/2012/engine/300" xmlns:ddl3_2="http://schemas.microsoft.com/analysisservices/2012/engine/300/300" xmlns:def="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:ddl3_1="http://schemas.microsoft.com/analysisservices/2011/engine/300/200" xmlns:ddl2_1="http://schemas.microsoft.com/analysisservices/2008/engine/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl100="http://schemas.microsoft.com/analysisservices/2008/engine/100" xmlns:df="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:ddl200_100="http://schemas.microsoft.com/analysisservices/2008/engine/200/100" xmlns:ddl200_300="http://schemas.microsoft.com/analysisservices/2010/engine/200/300" xmlns:ddl2_3="http://schemas.microsoft.com/analysisservices/2003/engine/2/3" xmlns:def2="urn:schemas-microsoft-com:xml-diffgram-v1" DataType="varchar(50)" xmlns:ddl3_3="http://schemas.microsoft.com/analysisservices/2012/engine/300/3000" xmlns:ddl3_4="http://schemas.microsoft.com/analysisservices/2012/engine/300/300DefineMeasureGroup" xmlns:def1="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ddl200_400="http://schemas.microsoft.com/analysisservices/2010/engine/200/400" xmlns:ddl2_4="http://schemas.microsoft.com/analysisservices/2003/engine/2/4"><ID>MeasureGroup1</ID><Name>MeasureGroup1</Name><Measures><Measure xsi:type="Measure" ><ID>Measure1</ID><Name>Measure1</Name><DataType>Integer</DataType><Source xsi:type="ColumnBinding"><TableID>My View</TableID><ColumnID>ProductID</ColumnID></Source></Measure></Measures></MeasureGroup><CubePermissions /></Cube></ObjectDefinition></Batch>

通过以上代码可以创建My Database、My DataSource、My DataSourceView和My Cube四个实体对象,实现数据的在线分析。

2.2. 数据挖掘

数据挖掘(Data mining)是一种从大型数据库中自动发现规律、趋势和异常的过程。在MSSQL中,可以通过SQL Server数据挖掘服务(SQL Server Data Mining Services)实现数据的挖掘。具体操作方式如下:

--创建数据挖掘服务

EXEC sp_configure 'show advanced options', 1

RECONFIGURE WITH OVERRIDE

EXEC sp_configure 'Ad Hoc Distributed Queries', 1

RECONFIGURE WITH OVERRIDE

GO

USE [master];

GO

EXEC sp_configure 'show advanced options', 1

RECONFIGURE WITH OVERRIDE

GO

EXEC sp_configure 'Ole Automation Procedures', 1

RECONFIGURE WITH OVERRIDE

GO

USE [msdb];

GO

EXEC sp_configure 'Database Mail XPs', 1;

RECONFIGURE WITH OVERRIDE;

GO

USE AdventureWorks2012;

GO

--创建数据挖掘服务对象

use AdventureWorks2012

go

declare @obj int

exec sp_dmine_new_data_mining_service @obj output

通过以上代码可以创建数据挖掘服务对象,实现对数据的挖掘。

3. 实现最优数据管理

3.1. 索引管理

索引是一种对数据库中某个列或多个列的值进行预处理的技术,可以大大提高数据查询速度。在MSSQL中,可以通过索引管理器(Index Manager)实现索引的管理。具体操作方式如下:

--创建索引

CREATE NONCLUSTERED INDEX IX_Product_Color

ON Production.Product (Color)

GO

--删除索引

DROP INDEX Production.Product.IX_Product_Color ON Production.Product

GO

--查询表索引信息

EXEC sp_helpindex 'Sales.SalesOrderHeader'

GO

通过以上代码可以实现索引的创建、删除和查询表索引信息等操作,从而实现最优数据管理。

3.2. 查询优化

在实际应用过程中,业务需求不断变化,数据库维护也不确定哪些规模的数据会受到最多的访问和维护。因此要时刻关注如何提高查询性能,避免数据访问带来的性能问题。在MSSQL中,可以通过查询执行计划(Query Execution Plan)实现查询的优化。具体操作方式如下:

-- 查询执行计划

SET SHOWPLAN_ALL ON

SELECT * FROM YourTable

SET SHOWPLAN_ALL OFF

GO

通过以上代码可以实现查询执行计划的查看,从而实现查询的优化。

4. 总结

MSSQL数据库是一种功能强大的数据库系统,可用于管理数据和提高业务效率。通过对数据库的分析和挖掘,可以快速发掘用户价值。在数据管理方面,通过索引管理和查询优化,可以实现最优数据管理,提高查询效率,从而进一步提高业务效率。

数据库标签