阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

SQL Server 中的新数据类型:HierarchyId

  • 2007-12-02
  • 本文字数:766 字

    阅读完需:约 3 分钟

对于关系型数据库来说,表现树状的层次结构始终是一个问题。微软在 Sql Server 2005 中首次尝试了解决这个问题,那就是被称之为通用数据表表达式( Common Table Expressions ,CTE)的实现方式。

尽管 CTE 在现有的数据库架构中运行良好,微软找到了一种将此类层次结构作为头等概念来使用的方式。因此为了实现这种效果,他们在 SQL Server 2008 中提出了一种“HierarchId”数据类型。

在传统的层次结构中,一条记录仅仅储存了一个指向它父记录的引用,这使得一条记录能够获得它在层次结构中的相对位置,而不是绝对位置。改变某条记录的父数据行引用是一个原子更新操作,它不会影响到该记录的任何子记录。

一个 HierarchyId 类型的字段储存了记录在层次结构中的准确位置。 Denny Cherry 提供了一个例子,其中展示了 0x、0x58 以及 0x5AC0 三个值,它们的字符串表现形式分别为“/”,“/1/”和“/1/1/”。这就引发了有关一致性和性能方面的问题,尤其是父记录被改变的时候。 Ravi S.Maniam 建议在改变父记录操作不频繁的情况下使用这种设计方式。

与 HierarchyId 类型同时出现的还有一系列函数。GetAncestor 和GetDescendant 方法可以用来遍历树。ToString 和Parse 方法用于HierarchyId 类型二进制与字符串表现形式之前的转换。有些古怪的是,随之而来的还有用于支持BinaryReader 与BinaryWriter 的一些方法。

再来回头看看GetDescendant,这是一个有些古怪的方法。它实际上不返回那些子记录,而是返回那些潜在的子节点的位置。向树中插入一个新的记录时,我们必需调用GetDescendant 方法来获得指定父记录的最后一个子节点的位置,然后才能获得紧跟着该位置之后的空隙。

迄今为止还没有使用T-SQL 来获得树状结构的合适示例。事实上,与它有关的所有东西都更像是一些命令,而不是基于基于集合的操作。

查看英文原文: New SQL Server Data Type: HierarchyId

2007-12-02 20:491004
用户头像

发布了 157 篇内容, 共 52.6 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

常见的企业网络问题及SD-WAN解决方案

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

高效集成|聚道云软件连接器实现薪人薪事与每刻报销无缝对接

聚道云软件连接器

案例分享

Imagiro Autochroma for Mac(混响音频插件) v1.25激活版

iMac小白

区块链游戏解说:Sunflower Land 是什么

Footprint Analytics

区块链游戏 NFT 链游

纯血鸿蒙来了,鸿蒙App开发有可能提速吗?

FinFish

鸿蒙系统 小程序化 小程序技术 鸿蒙Next 纯血鸿蒙

低代码:数字化转型的助推器

EquatorCoco

低代码 数字化 数字转型

【教程】苹果上架常见要求的有哪些?

初次承担管理的成功领导力建立

测吧(北京)科技有限公司

测试

JNPF低代码平台存在的价值

高端章鱼哥

软件开发 低代码 JNPF

香港服务器出租的优势分析:为何成为企业首选?

一只扑棱蛾子

香港服务器

京东商品详情数据接口(app)Python

tbapi

京东API接口 京东商品详情接口 京东商品数据采集

10个React状态管理库推荐

伤感汤姆布利柏

利用 ASP.NET Core 开发单机应用

不在线第一只蜗牛

.net 架构 分布式 微服务

服务器C盘突然满了,是什么问题

德迅云安全杨德俊

SD-WAN和MPLS的区别以及如何选择?

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

28图图解Raft协议,so easy~~

快乐非自愿限量之名

Java 前端 开发 服务器 raft

《实现领域驱动设计》- 领域服务

EquatorCoco

DDD 项目开发

深度解析:i++ 与 ++i,探究其性能差异与使用技巧

高端章鱼哥

i++ i

外包管理战略:解锁高效团队协作的关键

测吧(北京)科技有限公司

测试

FCPX插件:276个水果蔬菜肉类面包佐料食物餐具动画预设 mCuisine

iMac小白

什么是信创业态支持?支持信创的数据库防水坝哪家好?

行云管家

数据库 信创 堡垒机 国产化 数据库防水坝

SD-WAN的突出作用

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

Rust 值得关注的三个 Web 框架

这我可不懂

rust Web

2024最新一期中国数据库流行榜公布:阿里云PolarDB登顶

阿里云瑶池数据库

数据库 云计算 阿里云 云原生 polarDB

简论密码登录安全性

Geek_44385e

登录 密码安全

TDengine 3.0 四大企业应用案例合集,给你最直观的应用体验

TDengine

tdengine 时序数据库

每日一题:LeetCode-958. 二叉树的完全性检验

半亩房顶

面试 算法 LeetCode 二叉树 BFS

唯品会商品详情数据接口Python

tbapi

唯品会API接口 唯品会商品数据接口 唯品会商品详情数据接口

透过 Footprint 的聚合视图洞察加密世界的全貌

Footprint Analytics

区块链 数据分析 加密货币

BRC20支持的Dapp:开创去中心化应用的未来

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

为什么Nginx被称为“反向”代理呢?

互联网工科生

服务器 ​Nginx

SQL Server中的新数据类型:HierarchyId_.NET_Jonathan Allen_InfoQ精选文章