热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

探究DB2中RDF数据的特征并描述创建优化存储的流程

资源描述框架(ResourceDescriptionFramework,RDF)是一系列W3规范标准,主要支持数据和元数据的交换。凭借IBMDB210forLinux,UNIX,andWindowsEnterpriseServerEdition,应用程序可以存储和查询RDF数据。

资源描述框架 (Resource Description Framework, RDF) 是一系列 W3 规范标准,主要支持数据和元数据的交换。凭借 IBM DB2 10 for Linux, UNIX, and Windows Enterprise Server Edition,应用程序可以存储和查询 RDF 数据。

本探究 RDF 数据的特征并描述创建优化存储的流程。此外,还将介绍如何使用 DB2 引擎或该应用程序对 RDF 存储提供细粒度访问控制。本文包含一个样例应用程序。

本教程是由三部分组成的系列文章 “RDB2 10 for Linux, UNIX, and Windows 中的资源描述框架应用程序开发” 的第 2 部分,让您在实际操作中体验 DB2 for Linux, UNIX, and Windows 软件和资源描述框架 (RDF) 技术的使用:

  • 本系列 第 1 部分 介绍了一个 RDF 应用程序的示范用用例,引导您完成构建这个应用程序的步骤,包括创建一个 RDF 存储、使用 SPARQL 查询进行数据查询,以及维护统计数据。第 1 部分提供了将 RDF 存储迁移到 DB2 软件的流程。
  • 第 2 部分涵盖以下高级主题:
    • 提供 RDF 数据特性以及 DB2 软件如何优化 RDF 数据存储的概述。
    • 描述创建优化存储的流程。
    • 将优化存储与您在第 1 部分为样例应用程序创建的默认存储进行比较,以便了解优化存储的优势。
    • 描述如何为 RDF 存储提供更细粒度的访问控制。本教程将引导您使用 DB2 引擎和样例应用程执行访问控制。

在第 2 部分中,我们将在第 1 部分的样例应用程序用例基础上进行构建。如果您尚未构建,查阅 第 1 部分 获取相关内容。

第 3 部分将介绍更多特定于 SPARQL 的特性,比如 DESCRIBE 和 CONSTRUCT 查询表单以及指定图表的联合。

默认存储和优化存储

回顾第 1 部分,DB2 软件支持两类 RDF 存储的创建:

  • 默认 RDF 存储 — 如果您没有正在加载的 RDF 数据相关信息或者如果没有合适的样例可用时,创建一个默认 RDF 存储。要创建这类存储,使用 createrdfstore RDF 命令。
  • 优化 RDF 存储 — 如果 RDF 数据集有代表性样例数据时,创建一个优化存储。优化存储可以根据您提供的 RDF 数据集提供一种优化模式。

本教程主要关注优化存储的创建。

RDF 数据的特征

无模式数据模型

RDF 数据模型是无模式的。不同于关系模型,每个表中列的数量是固定的,RDF 数据集没有固定数量的谓词。一个特定 RDF 主题可以有任意数量的谓词。此外,一个 RDF 数据集可以跨任意数量的域来存储数据,这进一步增强了该模型的 “无模式性”。因此,当将 RDF 数据映射到一个关系模式时,必须使用一种机制来支持 RDF 数据的无模式特性。

当映射 RDF 数据到关系模式时,处理无模式特性的最常见的机制是利用一个包含 3 列的表(三个列分别对应主题、谓词和对象)。使用该方法,每个三 元组位于该表中的一个新行中,因此,可以处理数目不定的谓词。然而,该映射伸缩性不是很好,有点性能问题,因为查询数据需要许多自联接以及无用的关系索引应用。例如,检索一个主题的两个谓词的一个简单查询涉及到一个自联接和两行获取。相比之下,同一数据的传统关系建模一行中有两个谓词,不需要任何联接,使用一个 fetch 语句就可以检索到数据。

无模式特性的处理

查询 RDF 数据时,DB2 软件在表中一行或者很少几行中存储关于一个主题的所有谓词和对象,从而减少了大量自联接需求。因为一个关系表必须有固定数量的列(由页面大小和列长度控制),该机制根据表中谓词分配给列的方式处理可变数量谓词。

DB2 软件使用两个机制来将谓词分配给表中的列:

  • 散列法 — 为减少散列冲突,使用一组散列函数而不是一个散列函数。散列法是随机的,尽管使用多个散列函数,仍然很容易出现冲突。如果出现冲突,将在表中创建一个新行。默认存储中使用的是散列机制。
  • 谓词关联 — 如果 RDF 数据的一个代表性样例可用,DB2 软件将计算 RDF 数据集中各种资源类型谓词之间的相关性。该软件使用这种相关性来分配谓词到表中的列。这将使我们能够更好地利用表中的空间,以及减少冲突几率。多个关联函数被用于进一步减少冲突几率。优化存储中使用谓词关联机制。

创建优化存储

使用 DB2 创建优化存储有多种方法。第 1 部分中的迁移场景使用 createrdfstoreandloader 命令创建优化存储。该命令将 RDF 数据批量加载到一个 DB2 。在批量加载情况下,可以料到输入数据是谓词跨不同资源类型相关联的范例。但是,您可能会在没有代表性数据来创建优化存储的情况下开始应用程序开发。在本例中,您有两种选择:

  • 首先开始创建默认存储,正如第 1 部分所述,使用默认存储直至生成足够数据(例如在应用程序系统 QA 周期中)。然后,您可以使用 DB2 数据库引擎计算默认存储的谓词相关性,并使用这些相关性信息来创建一个优化存储用于生产。在第 2 部分中我们将引导您完成这一机制。
  • 首先创建一个默认存储,然后使用 REORG 系列 DB2 RDF 命令将该存储重组为一个优化存储。更多信息,参阅 DB2 Information Center 主题 “Converting a default store to an optimized store”。

要使用谓词关联重新创建您在第 1 部分中创建的默认 staffing 存储作为一个优化存储:

  1. 使用现有存储,生成谓词映射。
  2. 使用谓词映射创建优化存储。

谓词映射 是数据集中的谓词和 DB2 RDF 存储(谓词存储在其中)的底层关系表中的列之间的一个映射。谓词映射是根据其中出现的各个 RDF 资源类型之间的谓词相关性决定的。这样做是为了在最少数量的列中包装 RDF 数据。

推荐阅读
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • windows便签快捷键_用了windows十几年,没想到竟然这么好用!隐藏的功能你知道吗?
    本文介绍了使用windows操作系统时的一些隐藏功能,包括便签快捷键、截图功能等。同时探讨了windows和macOS操作系统之间的优劣比较,以及人们对于这两个系统的不同看法。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Win10下游戏不能全屏的解决方法及兼容游戏列表
    本文介绍了Win10下游戏不能全屏的解决方法,包括修改注册表默认值和查看兼容游戏列表。同时提供了部分已经支持Win10的热门游戏列表,帮助玩家解决游戏不能全屏的问题。 ... [详细]
  • 如何在联想win10专业版中修改账户名称
    本文介绍了在联想win10专业版中修改账户名称的方法,包括在计算机管理中找到要修改的账户,通过重命名来修改登录名和属性来修改显示名称。同时指出了windows10家庭版无法使用此方法的限制。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
author-avatar
呀yuan-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有