在mssql 上实践新技术新技术在MSSQL上的首次实践——这个月的第一天

介绍

MSSQL是一种常见的关系型数据库管理系统,被广泛用于企业应用、数据仓库和云端(例如Azure)等领域。随着技术的不断发展和演进,下面我们将介绍MSSQL上新技术的首次实践。

新技术实践

1. 使用Graph 数据库和多值属性(MVP)

在SQL Server 2017中,引入了一种新的数据库类型Graph数据库,可以在SQL Server中存储和查询节点,边和相应的属性和关系。使用Graph数据库可以使得在数据规模较大时保证较高的可扩展性和良好的查询性能。Graph数据库在广泛应用于社交媒体、自动驾驶等业务场景中。

在Graph数据库中,使用多值属性(MVPs)存储节点和边上除主键之外的其他属性。MVPs使得景点等事物多种属性存储和查询更加简单方便。下面我们来看看一个例子:

-- 创建节点和边和相应的属性

CREATE TABLE person

(

id INT PRIMARY KEY,

name VARCHAR(50)

)

AS NODE;

CREATE TABLE friend

(

id INT PRIMARY KEY,

since DATE

)

AS EDGE;

-- 添加节点并设置多值属性

INSERT INTO person VALUES

(1, '小A'),

(2, '小B'),

(3, '小C');

INSERT INTO friend VALUES

(1, 2, '2022-01-01'),

(2, 3, '2020-02-02');

INSERT INTO person_friends (source_node_id, destination_node_id) VALUES

(1, 2),

(2, 3);

MERGE INTO person[p]

USING (SELECT DISTINCT a.value as name, d.source_node_id as id FROM person_friends d CROSS APPLY MVPVALUES(d.destination_edge, 'name')) a

ON p.id = a.id

WHEN MATCHED THEN UPDATE SET p.name = a.name;

上述SQL代码模拟了在Graph数据库中存储"小A"、"小B"和"小C"三个节点,并且在"小A"和"小B"之间建立一条边,元数据为"2022-01-01",在"小B"和"小C"之间建立一条边,元数据为"2020-02-02"。可以根据SQL代码看出,MVPs被用来存储节点和边元数据,例如id=1的person节点的属性name的值为"小A"。

2. 使用R 接口

随着开源领域的发展,越来越多的语言得到了广泛应用,其中统计领域的R语言已经成为全球范围内最受欢迎的数据分析语言之一。

在SQL Server 2016中,Microsoft首次向用户提供了与R语言的集成,使得可以在MSSQL中使用R接口序列化/反序列化JavaScript对象。

下面是一个例子,展示如何使用R接口计算某一年份的所有月份的平均气温:

EXEC sp_execute_external_script

@language = N'R'

,@script = N'

temp <- data.frame(Year=seq(2000,2017),January=rnorm(18, mean=20, sd=5),February=rnorm(18, mean=25, sd=5),March=rnorm(18, mean=30, sd=5),April=rnorm(18, mean=15, sd=5),

May=rnorm(18, mean=25, sd=5),June=rnorm(18, mean=30, sd=5),July=rnorm(18, mean=28, sd=5),August=rnorm(18, mean=30, sd=5),September=rnorm(18, mean=23, sd=5),

October=rnorm(18, mean=22, sd=5),November=rnorm(18, mean=21, sd=5),December=rnorm(18, mean=10, sd=5))

month <- as.numeric(strftime(temp$Month, "%m"))

Year <- as.numeric(strftime(temp$Year, "%Y"))

data <- cbind(temp, month, Year)

average <- data %>% group_by(month,Year) %>%

summarize(temperature=mean(Temperature)) %>% spread(.,month,temperature) %>% select(-Year)

OutputDataSet <- data.frame(average)

'

,@input_data_1 = N''

,@output_data_1_name = N'average'

WITH RESULT SETS (( [Month] INTEGER,[01] FLOAT,[02] FLOAT,[03] FLOAT,[04] FLOAT,[05] FLOAT,[06] FLOAT,[07] FLOAT,[08] FLOAT,[09] FLOAT,[10] FLOAT,[11] FLOAT,[12] FLOAT));

上述代码演示了如何使用MSSQL中的R接口计算不同月份的平均气温数据。首先创建一个包含不同月份气温数据的DataFrame,然后将其转换为包含平均气温的result set输出。

总结

本文介绍了在MSSQL上的新技术新应用。其中包含Graph数据库和多值属性(MVP)的使用和R接口的集成。Graph数据库可以使得较大规模数据的存储和查询十分方便,同时使用MVP可以存储多种属性数据;R接口的集成可以使用另一种语言进行复杂计算和分析处理。这些新技术和MSSQL的集成发挥着越来越重要的作用,使得企业在面对更高的数据量和更复杂的应用场景时保持竞争优势。

数据库标签