论文导读 | 因式分解数据库

背景和问题定义

在传统的关系型数据库中,二维表格形式容易造成信息的冗余。如果我们将数据库中的每条元组看成单项式,一个关系型数据库就可以表示成这些单项式的和。通过对多项式的因式分解就能够得到更加紧凑的表示形式。

例如:下图中的表格,A 的取值有 a1,a2, B的取值有b1,b2,C的取值有c1,c2。不难看出表格中存储的是这些取值的所有组合情况。按照上述思路,我们可以将它用因式分解的表示形式进行表示: 。我们发现,因式分解的表示形式只用了 6 个值就表示了具有 24 个值的二维表格。

基于这样的思路,牛津大学的Dan Olteanu等人设计了因式分解数据库,尝试利用因式分解的能力来降低关系数据库的冗余从而优化空间和时间复杂度。下图是一个例子,(a) 表示了一个三张表的连接查询,以及它的查询结果。(b) 是这个连接查询超图;(c) 是这个连接查询的一个 d-tree (后文会解释);(d) 是这个这个连接查询的因式分解的表达式树。

具体问题的问题定义为:给定关系型数据库,对于连接查询(Conjunctive query) 求得它的因式分解表示形式。 由于因式分解表示形式不唯一,因此我们要求结果尽可能紧凑。

其中衡量因式分解表示形式的紧凑程度的指标是 Readability。它表示对于一个因式分解表示,出现最多次数的元组的出现次数。

例如,下图的连接查询,用 1 的表示形式每个元组出现的次数为 1 次,因此它的Readabilty是1。而2的表示形式,R1 出现了两次,因此它的 Readability 是 2。![image-20231214103813525](.\factorized database 公众号文章.assets\image-20231214103813525.png)

推论:假设数据库的大小是,对于某个连接查询 的结果的因式分解的 Readability 是 ,那么这个因式分解表示形式的大小是 的

F-tree

对于一个连接查询,我们要获得它的因式分解的表示形式,第一步是构建出连接查询的F-tree。它类似于一个连接计划。它需要满足以下条件:

  • 叶子节点是关系,内部节点是属性。

  • 同一个关系的属性,不能出现在不同的子树中。(即只能是父子或者祖孙关系)

例如:下图是连接查询和它的 F-tree!

依靠F-tree,我们能够快速求解一个连接查询的因式分解的结果。构建方式类似于前缀树的构建:从树根开始,递归求解。假设我们递归到了 F-tree 的 u 节点,我们依靠 u 节点的祖先节点的取值确定 u 节点的取值,然后再递归到 u 节点的孩子。下图展示了一个连接查询的因式分解的求解过程:

构建一个 F-tree,可以按照以下几个步骤:

  1. 选取一个属性作为根节点,把所有的关系删除这个属性

  2. 将剩余的属性分成若干组,满足:如果这组包含某个关系的属性,那么这组应该包含这个关系的其他属性

  3. 对于每组属性看成一个子问题,递归重复上述步骤。

除此之外,我们还可以通过超图树分解转化成一棵 F-tree. 但是超图树分解是 NPC 问题。

复杂度

总结

因式分解的方法不仅对关系型数据库有很大的帮助,而且对基于二维表格表示的数据结构也有很大的启发。目前,因式分解的思路在一些关系型数据库以外的领域有所应用,例如:图查询引擎,机器学习算法加速等。有几个方向我认为可以作为未来的工作:

  1. 对于高维数据的因式分解:深度学习的张量都是高维的表示形式,如果能够对高维数据进行因式分解,势必能够有所帮助。

  2. 判定二维关系表的冗余程度:因式分解的思路带来的代价是更高的常数,如果数据库的冗余程度较低,因式分解可能适得其反。

参考文献

  1. Olteanu, D., & Závodný, J. (2012, March). Factorised representations of query results: size bounds and readability. In Proceedings of the 15th International Conference on Database Theory (pp. 285-298).

  2. Olteanu, D., & Závodný, J. (2015). Size bounds for factorised representations of query results. ACM Transactions on Database Systems (TODS), 40(1), 1-44.

  3. Olteanu D, Schleich M. Factorized databases[J]. ACM SIGMOD Record, 2016, 45(2): 5-16.

  4. Gupta, P., Mhedhbi, A., & Salihoglu, S. (2021). Columnar storage and list-based processing for graph database management systems. arXiv preprint arXiv:2103.02284.

  5. Smagulova, A., & Deutsch, A. (2021, June). Vertex-centric Parallel Computation of SQL Queries. In Proceedings of the 2021 International Conference on Management of Data (pp. 1664-1677).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/694683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【设计模式】01-装饰器模式Decorator

作用:在不修改对象外观和功能的情况下添加或者删除对象功能,即给一个对象动态附加职能 装饰器模式主要包含以下角色。 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。具体构件&#xff08…

unity打包apk运行于google手机

第一次打包apk运行于Pixel 7 Pro 一直提示安装包无法安装 untiy版本2020.1.0f1 有两点需要注意 第一 Scrpting Backend 需要选择 IL2CPP 勾选 ARM64 第二 勾选 Custom Main Mainfest 在Assets -> Plugins -> Android文件夹下 AndroidMainfest 中增加android:export…

QT3作业

1 2. 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数,将登录按钮使用t5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#…

iMazing2024Windows和Mac的iOS设备管理软件(可以替代iTunes进行数据备份和管理)

iMazing2024是一款兼容 Windows 和 Mac 的 iOS 设备管理软件,可以替代 iTunes 进行数据备份和管理。以下是一些 iMazing 的主要功能和优点: 数据备份和恢复:iMazing 提供了强大的数据备份和恢复功能,可以备份 iOS 设备上的各种数据…

PWM在STM32中使用指南

什么是PWM? PWM(脉冲宽度调制)是一种常用来控制模拟电路的技术,通过修改脉冲的宽度(即在固定周期内的高电平持续时间)来调控输出信号的平均电压。 一个PWM信号主要包括两个部分:一个是占空比,…

四甲基罗丹明-叠氮,5(6)-TAMRA N3,常用的生物标记试剂

您好,欢迎来到新研之家 文章关键词:四甲基罗丹明-叠氮,Tetramethylrhodamine, TMR,5(6)-TAMRA-azide,5(6)-TAMRA N3 一、基本信息 产品简介:5 (6) - TAMRA azide, also known as tetramethylrhodamine a…

智慧安防/视频监控汇聚平台EasyCVR如何通过接口调用获取设备录像回看的流地址?

视频云存储/视频融合/安防监控EasyCVR视频汇聚系统可兼容各品牌的IPC、NVR、移动单兵、智能手持终端、移动执法仪、无人机、布控球等设备的接入,支持的接入协议包括:国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK,如&am…

全流程点云机器学习(二)使用PaddlePaddle进行PointNet的机器学习训练和评估

前言 这不是高支模项目需要嘛,他们用传统算法切那个横杆竖杆流程复杂耗时很长,所以想能不能用机器学习完成这些工作,所以我就来整这个工作了。 基于上文的数据集切分 ,现在来对切分好的数据来进行正式的训练。 本系列文章所用的…

使用 Next.js 连接 mysql 数据库

前言 本文主要为大家介绍,如何使用 Next 框架实现一个简单的后端接口,并且从数据库中请求数据返回给前端。 实现 创建api/getData文件夹 项目创建完成后在 app 文件下新建api文件夹,在 api 文件夹下新建 getData 文件夹,在 ge…

IOT-Reaserch安装ghidra以及IDEA和ghidra的配置

Linux research 5.4.0-91-generic #102~18.04.1-Ubuntu SMP Thu Nov 11 14:46:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux java --version IOT自带的java是符合要求的,不需要额外下载 iotresearch:~/install-file$ java --version openjdk 11.0.13 2021-10-19 …

数字新纪元:探索Web3对社会的影响

在当今数字化时代,技术的进步已经成为社会发展的驱动力之一。而随着区块链技术的快速发展,我们正处在一个即将到来的数字新纪元——Web3时代。这一新时代不仅仅是技术的迭代升级,更是对传统社会模式的颠覆和重构。本文将深入探讨Web3对社会的…

深入理解指针(c语言)

目录 一、使用指针访问数组二、数组名的理解1、数组首元素的地址2、整个数组 三、一维数组传参的本质四、冒泡排序五、二级指针六、指针数组 一、使用指针访问数组 可以使用指针来访问数组元素。例如,可以声明一个指针变量并将其指向数组的第一个元素,然…

Github代码仓库SSH配置流程

作者: Herman Ye Auromix 测试环境: Ubuntu20.04 更新日期: 2024/02/21 注1: Auromix 是一个机器人爱好者开源组织。 注2: 由于笔者水平有限,以下内容可能存在事实性错误。 相关背景 在为Github代码仓库配…

Unity Shader ASE基础效果思路与代码(一):遮罩、硬边溶解、光边溶解、UV扰动

Unity Shader ASE基础效果思路与代码(一):遮罩、硬边溶解、光边溶解、UV扰动 文章目录 Unity Shader ASE基础效果思路与代码(一):遮罩、硬边溶解、光边溶解、UV扰动遮罩效果硬边溶解光边溶解UV扰动 遮罩效果 效果展示: 思路与代码&#xff1…

消息队列-RabbitMQ:死信队列

十五、死信队列 1、死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 que…

用idea debug时,怎么在某个map对象中再加个key value

实现方式 在用idea 进行 debug时,我们经常喜欢对某行代码打断点,然后对某个对象重新设置值,以快速地实现我们预期想覆盖的场景。通常的方式是用鼠标右键点击某个对象,然后选择Set value进行设置值,但是如果想在map中添…

bugku3

xxx二手交易市场 进去是这样讴歌乱进的页面 查看了一下源代码也没什么 先随便注册一个账号 然后登录 随便看了看,发现可以修改头像 上传文件 随便上传了一个图片 发现他对图片进行了base64加密 解密后得到是 data:image/jpeg;base64 这里重新修改类型为php&a…

【buuctf--我有一只马里奥】

这是一道关于 ntfs 流查看的题目运行 exe 后会出来一个 1.txt 文件 在 exe 和 1.txt 文件目录下打开终端,输入 notepad 1.txt:flag.txt就可以看到答案了。 这么做的原因见BUUCTF misc 专题(53)[SWPU2019]我有一只马里奥_ntfs flag.txt 马里…

OpenAI新推出的Sora是什么?如何注册使用?

2024年2月16号,OpenAI全新发布文本视频模型Sora,可以通过指令生成特定的视频内容,这对于内容营销、广告宣传、教育教学等行业都将来带来巨大的机遇与挑战。 相信许多人跟小编一样,对此新兴产品跃跃欲试,那么应该如何注…

柔顺控制笔记

参资料: 【1】https://zhuanlan.zhihu.com/p/620918453 【2】https://blog.csdn.net/a735148617/article/details/108564836 【3】https://zhuanlan.zhihu.com/p/126338809 【4】机器人与环境间力_位置控制技术研究与应用_李正义 【5】水下机械臂建模及柔顺控制方法…