gpt4 book ai didi

c++ - 分层数据模型的替代方案

转载 作者:可可西里 更新时间:2023-11-01 16:05:18 26 4
gpt4 key购买 nike

问题领域

我正在开发一个相当大的应用程序,它使用分层数据模型。它拍摄图像、提取图像的特征并在这些图像之上创建分析对象。所以基本模型就像Object-(1:N)-Image_features-(1:1)-Image。但同一组图像可用于创建多个分析对象(具有不同的选项)。

然后一个对象和图像可以有很多其他连接的对象,比如分析对象可以用额外的数据细化或者复杂的结论(解决方案)可以基于分析对象和其他数据。

当前解决方案

这是解决方案的草图。堆栈代表对象集,箭头代表指针(即图像特征链接到它们的图像,但反之亦然)。有些部分:图像、图像特征、附加数据,可能包含在多个分析对象中(因为用户要对不同的对象集进行分析,组合不同)。

Current solution simplified sketch

图像、特征、附加数据和分析对象存储在全局存储(神对象)中。解决方案通过组合的方式存储在分析对象中(并依次包含解决方案特征)。

所有实体(图像、图像特征、分析对象、解决方案、附加数据)都是相应类(如 IImage,...)的实例。几乎所有部分都是可选的(即,我们可能希望在找到解决方案后丢弃图像)。

当前解决方案的缺点

  1. 当您需要像草图中虚线那样的连接时,在这个结构中导航是很痛苦的。如果您必须在顶部显示带有几个解决方案功能的图像,您首先必须遍历分析对象以查找哪些对象基于该图像,然后遍历解决方案以显示它们。
  2. 如果要解决 1. 您选择显式存储虚线链接(即图像类将具有指向与其相关的解决方案功能的指针),您将付出很多努力来保持这些指针的一致性并不断更新链接当事情发生变化时。

我的想法

我想构建一个更具扩展性 (2) 和灵 active (1) 的数据模型。第一个想法是使用关系模型,分离对象和它们的关系。为什么不在这里使用 RDBMS - sqlite 对我来说似乎是一个合适的引擎。因此,复杂的关系可以通过数据库上的简单(左)JOIN 访问:伪代码“images JOIN images_to_image_features JOIN image_features JOIN image_features_to_objects JOIN objects JOIN solutions JOIN solution_features”),然后从中获取解决方案功能的实际 C++ 对象按 ID 全局存储。

问题

所以我的主要问题是

  • 使用 RDBMS 是否适合解决我描述的问题,或者它不值得,并且有更好的方法来组织我的应用程序中的信息?

如果 RDBMS 没问题,对于使用 RDBMS 和关系方法来存储 C++ 对象关系的任何建议,我将不胜感激。

最佳答案

您可能希望了解语义 Web 技术,例如 RDF、RDFS 和 OWL,它们提供了另一种可扩展的世界建模方式。有一些开源的三元存储可用,一些主流的RDBMS也有三元存储的能力。

请特别查看曼彻斯特大学 Protege/OWL 教程:http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/

如果您认为这个方向值得进一步研究,我可以推荐 "SEMANTIC WEB for the WORKING ONTOLOGIST"

关于c++ - 分层数据模型的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12037317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com