写点什么

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

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

关注

评论

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

开源即巅峰!阿里首次分享:Java架构师全栈“成长笔记”

Java架构师迁哥

《持之以恒的从事运动》三

Changing Lin

模块一作业:微信业务架构图和毕设架构设计

Felix

数据准备的能力,决定企业AI研发的边界

百度大脑

人工智能

linux网络编程—7层网络以及5种Linux IO模型以及相应IO基础

Linux服务器开发

后端 网络编程 Linux服务器开发 网络模型 IO模型

iOS端屏幕录制开发指南

anyRTC开发者

音视频 WebRTC ios开发 屏幕录制

区块链互操作性:大规模应用的关键

CECBC

面试官问的那些Android原理你都懂吗?值得一看

欢喜学安卓

android 程序员 面试 移动开发

RedHat7.2 切换yum源记录

Bruce Xiong

redhat yum源

mPaaS 月度小报 | CodeDay#6 成都站落幕,下一站北京;上新季:新容器、新官网、新视觉

蚂蚁集团移动开发平台 mPaaS

移动开发 mPaaS

自制深度学习照片数据集

re-执着

面试官问的那些Android原理你都懂吗?快来收藏!

欢喜学安卓

android 程序员 面试 移动开发

算法面试通关

buchila11

面试

重磅!不容错过的阿里内部微服务速成手册也太赞了(2021版)

Java 程序员 面试 java编程

就是它,帮我斩获了8家大厂offer,由于太全被各大厂要求Github连夜下架

Java架构师迁哥

数字货币大趋势,DC EP出征,带老百姓进入新时代!

CECBC

Java 8 新特性

Bf-Bus

MySQL连接数管理

Simon

MySQL

全网首发!“阿里爸爸”最新出品SpringBoot高级笔记(内部笔记!)

Java spring

CODING 助力推进腾讯游戏国际化进程

CODING DevOps

DevOps 开发工具 腾讯游戏 软件研发

辞职1000小时后,我走进字节跳动拿了offer

Java 程序员 面试 java编程

Hive学习笔记(一)

五分钟学大数据

hive 7月日更

DICOM--网关(路由器/适配器)

birdbro

医学影像 DICOM PACS dicom4che DICOMWeb

一叶红船见百年!百度大脑助力南湖红船泛起国人心中红色情怀

百度大脑

灵魂拷问:我们该如何写一个适合自己的状态管理库?

尔达Erda

开源 云原生 大前端 API 运维开发

当法律纽带变成“机器红线”,能让自动驾驶汽车更安全吗?

脑极体

云计算还有多久能够替代高性能计算?

北鲲云

人民网发文:区块链如何跨越未来10年

CECBC

CDH 安装搭建(二)

大数据技术指南

CDH 7月日更

YOLOV1解读

re-执着

数据安全法下,企业如何平衡数据安全合规与业务性能?

腾讯安全云鼎实验室

数据安全 数据安全法

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