限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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:491533
用户头像

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

关注

评论

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

【精选实践】爱奇艺实用数据库选型树:不同场景如何快速选择数据库?

TiDB 社区干货传送门

Multi-Master 数据库概览

TiDB 社区干货传送门

【精选实践】网易互娱的数据库选型和 TiDB 应用实践

TiDB 社区干货传送门

【精选实践】TiDB 在丰巢核心支付平台百亿级数据的深度实践

TiDB 社区干货传送门

PD的时钟服务——TSO

TiDB 社区干货传送门

Elastic Stack处理TiDB慢日志

TiDB 社区干货传送门

Hands on! 如何给 TiDB 添加新系统表

TiDB 社区干货传送门

TiDB 事务源码阅读

TiDB 社区干货传送门

物化视图的更新

TiDB 社区干货传送门

TiDB 中的全局唯一 ID

TiDB 社区干货传送门

忘记root密码的解决办法具体实现步骤

TiDB 社区干货传送门

管理与运维 安装 & 部署

分布式系统 in 2010s

TiDB 社区干货传送门

实践案例

TiDB 联合索引是如何工作的

TiDB 社区干货传送门

TiKV笔记-Raft复制状态机--未完

TiDB 社区干货传送门

TiDB PD 组件代码阅读

TiDB 社区干货传送门

北京“TiDB 性能调优专场”活动小组讨论结论

TiDB 社区干货传送门

【精选实践】汽车之家从 SQL Server 到 TiDB 的异构变迁

TiDB 社区干货传送门

生态工具原理学习笔记(笔记)

TiDB 社区干货传送门

TiDB 4.0 试玩体验--Tiflash

TiDB 社区干货传送门

实践案例

事务前沿研究丨事务并发控制

TiDB 社区干货传送门

TiDB 底层架构

TiDB 在爱奇艺的业务场景及实践

TiDB 社区干货传送门

使 pt-kill 和 pt-query-digest 工具兼容 TiDB

TiDB 社区干货传送门

TiKV架构原理(笔记)

TiDB 社区干货传送门

同步工具Gravity杂谈

TiDB 社区干货传送门

基于Drainer的TiDB的闪回实现

TiDB 社区干货传送门

TiDB使用场景漫谈

TiDB 社区干货传送门

实践案例

再记一次业务优化

TiDB 社区干货传送门

体验更简单的 DM —— v1.0.2

TiDB 社区干货传送门

TiDB慢日志解析源码解读

TiDB 社区干货传送门

DM在Docker环境部署安装

TiDB 社区干货传送门

TiDB-v4.0.x支持OLAP场景的一些实践经验

TiDB 社区干货传送门

性能调优

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