Sql Server数据库各版本功能对比
本文将对Sql Server数据库不同版本的功能进行对比,以便用户根据自身需求选择适合的版本。
Sql Server 2017
Sql Server 2017是Sql Server系列中的最新版本,在功能上有很多的创新和升级。主要更新如下:
- Graph数据处理引擎
- 移动领域和社交网络分析使用最为广泛。
- 自然语言处理
- 可以通过Transact-SQL对文本数据进行处理和搜索。
- Python脚本语言集成
- 可以通过Python在Sql Server存储过程中运行脚本。
- 密码保护
- 可以对数据库中的数据进行加密和解密。
- Linux平台支持
- 可以在Linux操作系统上部署和运行Sql Server。
示例1:利用Graph数据处理引擎实现社交网络分析
--创建节点
CREATE TABLE Persons (
PersonId int,
Name varchar(255),
Age int,
Gender char(1)
);
INSERT INTO Persons (PersonId, Name, Age, Gender)
VALUES (1, 'Tom', 18, 'M'),
(2, 'Jerry', 22, 'M'),
(3, 'Lucy', 21, 'F');
--创建边
CREATE TABLE Relationships (
RelationshipId int,
PersonId1 int,
PersonId2 int,
RelationshipType varchar(255)
);
INSERT INTO Relationships (RelationshipId, PersonId1, PersonId2, RelationshipType)
VALUES (1, 1, 2, 'Friend'),
(2, 2, 3, 'Friend'),
(3, 1, 3, 'Enemy');
--查询Tom的朋友
SELECT P.Name
FROM Persons P
JOIN Relationships R ON R.PersonId2 = P.PersonId
WHERE R.PersonId1 = 1 AND R.RelationshipType = 'Friend';
示例2:利用Python脚本语言实现复杂的数据处理逻辑
--创建Python函数
EXEC sp_execute_external_script
@language = N'Python',
@script = N'
import pandas as pd
df = pd.DataFrame(InputDataSet)
OutputDataSet = df.groupby("category")["value"].sum()
',
@input_data_1 = N'
SELECT [category],[value]
FROM [dbo].[TestTable1]
',
@output_data_1_name = N'OutputDataSet',
@output_data_1_schema = N'category nvarchar(50), [value] int'
WITH RESULT SETS ((category nvarchar(50), [value] int));
Sql Server 2016
Sql Server 2016在功能上相比2014版本进行了升级和创新。主要更新如下:
- JSON支持
- 可以查询和存储JSON格式的数据。
- AlwaysEncrypted
- 可以对加密数据进行计算,并且保证计算结果也是加密的。
- Stretch Database
- 可以将数据库分为两部分,将访问频率较低的部分存储在Azure云上。
示例1:查询JSON格式的数据
--创建表
CREATE TABLE Customers (Id INT, Info NVARCHAR(MAX))
GO
--插入JSON数据
INSERT INTO Customers (Id, Info)
VALUES
(1, N'{"Name": "Tom", "Age": 18}'),
(2, N'{"Name": "Jerry", "Age": 22}'),
(3, N'{"Name": "Lucy", "Age": 21}');
--查询数据
SELECT Id, JSON_VALUE(Info, '$.Name') AS Name, JSON_VALUE(Info, '$.Age') AS Age
FROM Customers;
示例2:创建AlwaysEncrypted数据
--创建加密列
ALTER TABLE Customers ADD [EncryptedInfo] NVARCHAR(MAX) ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = MyCEK, ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256');
--更新加密列的数据
UPDATE Customers SET [EncryptedInfo] = CONVERT(NVARCHAR(MAX), ENCRYPTBYKEY(KEY_GUID('MyCEK'), Info));
Sql Server 2014
Sql Server 2014在功能上相比2012版本进行了升级和创新。主要更新如下:
- In-Memory OLTP
- 可以将部分或全部表的数据存储在内存中,提升查询性能。
- Buffer Pool Extension
- 可以将缓存数据存储在SSD上,提升响应速度。
- 跨群集备份
- 可以对多个集群进行备份和还原。
示例1:创建In-Memory OLTP表
--开启内存优化选项
sp_configure 'Show Advanced Options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max server memory (MB)', 2048;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'memory optimized data', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
--创建In-Memory OLTP表
CREATE TABLE Customers_MemoryOptimized (
Id INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000),
Name NVARCHAR(50) NOT NULL,
Age INT NOT NULL
) WITH (MEMORY_OPTIMIZED=ON);
--插入数据
INSERT INTO Customers_MemoryOptimized (Id, Name, Age)
VALUES (1, 'Tom', 18),
(2, 'Jerry', 22),
(3, 'Lucy', 21);
--查询数据
SELECT * FROM Customers_MemoryOptimized;
示例2:设置Buffer Pool Extension
--开启Buffer Pool Extension选项
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'buffer pool extension', 1;
GO
RECONFIGURE;
GO
--设置Buffer Pool Extension路径和大小
EXEC sp_configure 'remote data archive', 'C:\SSD\BufferPoolExtension';
GO
EXEC sp_configure 'max server memory (MB)', 2048;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'buffer pool extension size (MB)', 1000;
GO
RECONFIGURE WITH OVERRIDE;
GO
总结
本文主要对Sql Server数据库各版本的功能进行了比较和介绍,用户可以根据自身需求进行选择。对于需要进行复杂的数据处理和存储的用户,建议使用较新的版本。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Sql Server数据库各版本功能对比 - Python技术站