写点什么

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

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

关注

评论

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

全平台开源即时通讯IM聊天框架MobileIMSDK的服务端开发指南,支持鸿蒙NEXT

JackJiang

网络编程 即时通讯 IM

《算法导论(第4版)》阅读笔记:p82-p82

codists

算法

等保测评2025 版新报告模板,是以哪个时间节点为准?

黑龙江陆陆信息测评部

易安联完成C1轮融资,加速领跑国内零信任安全市场化

权说安全

零信任

如何用好“对话式编程”?牢记这十二条策略

Baihai IDP

程序员 AI LLM AI Agent AI 编程

打造了一个未来感十足的图书管理 App 个人页面

繁依Fanyi

根据数据表快速生成原型图的工具

执于业务

时序数据库、实时数据库与实时数仓:如何为实时数据场景选择最佳解决方案?

镜舟科技

数据分析 数据处理 时序数据库 实时数据库 实时数据仓库

《算法导论(第4版)》阅读笔记:p83-p85

codists

算法

Nagarro发布多项财年业绩

财见

《算法导论(第4版)》阅读笔记:p76-p81

codists

算法

我这是“小作坊”,没那么多时间为爱奉献!

程序员郭顺发

为什么在中国开源软件赚不到钱?

雅菲奥朗

#开源

Amazon Q 从入门到精通 – 测试与重构

亚马逊云科技 (Amazon Web Services)

Uniapp开发鸿蒙应用时如何运行和调试项目

幽蓝计划

StarRocks Community Monthly Newsletter (Apr)

StarRocks

数据库 数据分析 存算分离 StarRocks 数据查询

MES如何破解工厂交期困局?MES让设备主动报工,生产过程实时可控!

万界星空科技

数字化 制造业 智能制造 mes 万界星空科技mes

【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit (3)

HarmonyOS SDK

harmoyos

RAG创始人关于RAG Agent的10个思考(上)

Bruce Talk

AI RAG知识库

MoE大模型迎来“原生战友”:昇腾超节点重构AI基础设施

Alter

AI 大模型 昇腾AI MoE

2025 StartDT Day 产品发布会,5月20日见!

奇点云

大模型

RAG创始人关于RAG Agent的10个思考(下)

Bruce Talk

AI RAG知识库

StarRocks MCP Server 开源发布:为 AI 应用提供强大分析中枢

StarRocks

数据分析 OLAP StarRocks MCP Server

腾讯云COS MCP Server + CodeBuddy ,让你的idea 不止停留在想象中...

六月的雨在InfoQ

MCP MCP Server MCP头号玩家

LED显示屏与OLED显示屏的天壤之别

Dylan

技术 LED LED display OLED LED屏幕

通义灵码新增Inline Chat能力,代码问题即时提问

阿里巴巴云原生

通义灵码 通义灵码2.0

迁徙:微信鸿蒙版的长征

脑极体

AI

新一代SRE:AI、可观测与未来丨暨2025第三届中国SRE大会,邀您共赴科技盛宴!

雅菲奥朗

10K Stars 成就达成,StarRocks 开启下一个里程碑!

StarRocks

数据库 AI OLAP StarRocks

区块链ETF系统的开发步骤

北京木奇移动技术有限公司

区块链技术 软件外包公司 区块链ETF

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