- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在寻找围绕整个 schema.org 构建应用程序的最佳方式。 Schema.org 层次结构现在包含大约 500 种不同的类型,可用于标记网站上的微数据:http://schema.org/docs/full.html
目标是围绕所有这些事物构建一个通用系统,而不使用默认 SQL 数据库对 500 多个不同的表进行建模。
作为一个起始示例,JobPosting 的建模似乎非常简单,因为它只有一些字段和两个指向组织和地点对象的链接:请参阅 http://schema.org/JobPosting
您会建议使用哪种数据库系统(SQL、MongoDB、Cassandra、neo4J、Sesame 等)来对此类数据进行建模? 甚至还有一些特殊的 Graph 或 RDF 数据库可能是另一种选择。
额外问题:目前让我大吃一惊的另一个问题是某些对象所基于的多重继承,例如http://schema.org/Dentist是一个 LocalBusiness 组织,但也是一个地方,因此它具有来自多个不同父级的字段。
所以我正在寻找一个系统:
请告诉我什么样的信息有助于找到更好的答案。
最佳答案
我认为 MongoDB 非常适合,因为它的文档可以更轻松地表示各个模式。 (解决变量列问题)。
为了解决链接问题,只存储引用是有意义的。例如,在 JobPosting 中,您可能想要存储 OrganizationId
和 PlaceId
,因为它们是相当复杂的文档。这也使得查询某个组织的 JobPostings 变得微不足道。
Note Sometimes, embedding might be more appropriate, but that depends heavily on the way your documents are updated. In particular, many objects might refer to the same address, so a change in address should be reflected everywhere. Sometimes, the opposite is true. This is a key question that can be answered only by you. It depends on how the system is used.
在任何情况下,链接意味着单个查找可能必须遍历引用树。同样,这在很大程度上取决于用例:
假设您要显示 JobPosting。现在您可以显示属性列表,对于“组织”,您打印的所有内容都是“ACME, Inc.”。带链接。该链接会将您转到“ACME, Inc.”的详细信息页面。在这种情况下,您的查询非常简单。您唯一需要做的就是将组织名称复制到 JobPosting(去规范化),这样更容易显示。
另一方面,如果您想就地显示所有内容,则必须执行更多查询并在代码中构建域模型对象。这没什么大不了的,但在循环引用等情况下需要格外小心。
我想最好的方法是使用各自最具体的类型作为集合名称(因此 ContactPoint 最终会出现在 ContactPoint 集合中,PostalAddress 会出现在 PostalAddress 集合中,等等)。
唯一剩下的问题是多重继承或混合。我以前没用过ruby,但我猜是mongodb ruby驱动支持mixins。
您仍然需要处理索引等问题,但这在很大程度上取决于用例。您可能希望索引大多数外键,但其他索引需要手动处理。
关于database-design - 您将如何为通用 Schema.org 存储建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849181/
我正在寻找可以从 Eclipse 的 UML 图生成代码的工具。该工具应该从 UML 图生成代码,进行逆向工程以查看代码更改,并提供合并选项以防止因任何更改而删除文件。 是否有工具可以做到这一点,或者
我正在寻找有关建模的见解。我有一个关于设计模式和基本类图、序列图和用例的介绍类(class)。 我发现类图作为我编程中的组织工具非常宝贵。到目前为止,用例还算有用。 本学期我正在上课,更深入地学习 U
如何使用 flutter 数据建模技术访问“HH”和“mm”。我一直在尝试按以下方式使用它,但是下面给出了错误。 我的数据模型当前为它的简化版本。 class Week { final Strin
我正在使用 Neo4j 和 PHP。在我的项目中,我有餐厅节点。每个节点都有纬度、经度和分类属性。 我需要返回与用户给定分类相匹配的餐厅节点,其结果按距用户位置的距离排序(即第一个最近的餐厅)。 最简
我希望 POJO 包含一个 Status 字段(只有两个可能的值 SUCCESS、FAILED),并且根据此状态,第二个字段需要为 POJO 对象(如果 Status 为 SUCCESS) 或只是字符
我正在尝试将我的办公室迁移到数据库应用程序中。这是我得到的: (来源:phunkei.de) 公司和个人从客户继承(1:1关系)。这是因为他们都可以是“客户”并收到账单,我想引用订单中的单个表。公司和
我目前有这个数据库结构: 一个条目可以有多个"file"、“文本”和“url”类型的项目。 这些项目中的每一项在文本、网址或文件表(存储数据的位置)中都有一个对应的项目。 我需要一个查询来有效地选择一
下面的代码不应该像“if(condition)”语句一样工作吗,当它在另一个循环中并且“body”有自己的 break 或 continue 语句时,会出现明显的错误行为: for( ; condit
我一直在像这样存储和递增下载计数器: INCRBY downloads: 1 但现在我想要下载:* 按值排序,以便显示热门下载列表。 我觉得我可以更好地存储它。我愚弄了: ZINCRBY downlo
我开始使用图形数据库,在我的团队中,我们已经开始为我们的软件建模图形。当我们尝试“记录”模型以查看数据库的结构时,问题就出现了。对于 SQL 数据库,您只需查看 SQL 模式。 我们花了一些时间阅读
我正在做一个固定效应回归并且遇到了自相关问题,为了解决这个问题,我正在使用预测、lmtest 和 plm 包进行 ARIMA 建模。我的数据是一般面板数据,looks like this ,我正在尝试
我想知道是否有任何工具可以帮助我对 C 应用程序(即函数式编程)进行建模。例如。我目前正在构建一个共享库。但是为了直观地传达我的设计,我需要类似 UML 的东西。我想这样做,以便审查我的设计的人不需要
我正在尝试将 JSON 转换为 GSON ,但我无法建模。谁能给我举个例子。 [ { "id": "1", "name": "lalala",
正如标题所说,在 中建模 optional 参数的最佳方法是什么?斯卡拉 ? 对于 optional 参数,我的意思是执行函数体不需要的值。 要么因为该参数存在默认值,要么根本不需要该参数本身(例如配
我发现 UML 可用于记录 OO 系统的各个方面,尤其是用于整体架构的类图和用于说明特定例程的序列图。我想为我的 clojure 应用程序做同样的事情。我目前对模型驱动开发不感兴趣,只是在交流应用程序
我想知道是否有人知道如何使用 UML 在属性中建模 DateTime 基元类型? 最佳答案 我想这取决于日期的格式......请参阅下面的示例,其中我使用两个整数(分别为日和年)和一个名为“Month
我有一些与我的问题建模相关的问题。我正在研究基于模型的测试的论文项目。还想从专家的角度了解我是否采用正确的方法来建模我的场景。我正在对 Android 应用程序的 UI 进行建模,遍历它们,生成测试用
我正在尝试建立对 CouchDB 以及如何为某些现实世界场景建模数据的理解。我现在已经尽可能多地“按日期获取我的博客文章”;) 给定这样的文件: { "_id": "couch1",
一个模型资源是如何分层的?例如假设一个人有一个“留言板”并且“消息”是一种资源。假设“消息”可以有回复,从而形成一个讨论线程。如何模拟线程的概念? “消息”是否包含它的子项? “线程”是它自己的资源吗
我正在尝试创建一个像通用 POJO 一样工作的对象,因为我必须通过不同的对象传递它,并且我需要一个接口(interface)来访问其属性。 目前,我使用具有 getField 方法的基础对象来完成此操
我是一名优秀的程序员,十分优秀!