HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

Go语言:new还是make?到底该如何选择?

微客鸟窝

Go 语言

棒极了!可以让你Java程序快上180%以上的阿里性能优化笔记

Java架构追梦

Java 阿里巴巴 架构 面试 性能优化

详解API Gateway流控实现,揭开ROMA平台高性能秒级流控的技术细节

华为云开发者联盟

华为 ROMA 集成平台 ROMA Connect API Gateway

校友资料登记平台小程序开发笔记二-云数据库设计

CC同学

校友录小程序 校友资料小程序

带你了解WDR-GaussDB(DWS) 的性能监测报告

华为云开发者联盟

数据库 数据 GaussDB(DWS) WDR 负荷诊断报告

应届女生美团Java岗4面,一次性斩offfer,我受到了万点暴击

Java 编程 程序员 架构师 计算机

记一次真实的JVM性能调优过程

北游学Java

Java JVM 性能调优

价值连城 知名深度强化学习Pieter Abbeel的采访 John 易筋 ARTS 打卡 Week 56

John(易筋)

ARTS 打卡计划

EasyRecovery软件帮你快速恢复图片数据

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

SaaS市场百花齐放:厂商数量已达4500家,用户数量已达915万家

海比研究院

抖音快手短视频获客软件开发系统

校友资料登记平台小程序开发笔记一-系统整体设计

CC同学

校友登记小程序 校友资料小程序

Spark 开源新特性:Catalyst 优化流程裁剪

华为云开发者联盟

sql spark 开源 Catalyst 优化器

ZooKeeper 分布式锁 Curator 源码 04:分布式信号量和互斥锁

程序员小航

Java zookeeper 源码 分布式锁 zookeeper分布式锁

一周信创舆情观察(7.12~7.18)

统小信uos

经典好文!BAT大厂Android面试真题锦集干货整理

欢喜学安卓

android 程序员 面试 移动开发

抖音快手seo获客系统开发(可贴牌)

获客I3O6O643Z97

抖音霸屏

WorkPlus高端制造业数字化解决方案—长江存储

WorkPlus

开源 企业 解决方案 即时通讯 私有云

哪类技术助力了隐私计算的工业化?如何“组装”发挥更大价值?

13张图,深入理解Synchronized

程序猿阿星

synchronized java 并发 锁机制 锁升级

Cassandra的调优总结

林一

分布式数据库 Cassandra

网络研讨会|为什么在开发流程中应用静态代码分析工具?

鉴释

在线研讨会 静态代码分析

作为Android开发程序员,已获千赞

欢喜学安卓

android 程序员 面试 移动开发

WorkPlus高端制造业数字化解决方案—航天科工

WorkPlus

开源 移动 解决方案 即时通讯 私有云

Java的这个强大功能,很多人都不知道

华为云开发者联盟

Java c++ jdk 算法 jni

看焱融云CSI动态感知如何扩展Kubernetes Scheduler

焱融科技

云计算 技术 云原生 高性能 分布式存储

利用亚马逊云科技Direct Connect和Transit Gateway轻松构造企业混合云解决方案

亚马逊云科技 (Amazon Web Services)

从 Web 图标演进历史看最佳实践

百度Geek说

大前端

腾讯T3大牛手把手教你!三面腾讯,已拿offer

欢喜学安卓

android 程序员 面试 移动开发

去中心化薄饼交易所开发|PancakeSwap去中心化交易所搭建方案

Geek_23f0c3

交易所开发 去中心化交易所系统开发 PancakeSwap交易所

测试开发之系统篇-安装KVM虚拟机

禅道项目管理

虚拟机 测试开发

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