gpt4 book ai didi

java - 使用 Spring Data JPA/MongoDB Cross Store,查询可以跨两个数据库吗?

转载 作者:可可西里 更新时间:2023-11-01 09:17:27 26 4
gpt4 key购买 nike

我正在使用 mongodb-customer-service-data 示例(可在 https://github.com/SpringSource/spring-data-document-examples 获得)。

该示例使用@RelatedDocument 跨数据库关联域对象。它允许足够好地存储和更新对象。

但是,我想针对 JPA 数据库(在示例 HSQLDB 中)和 MongoDB 执行具有条件的查询。

这可能吗?有没有任何例子可以证明这是可能的?


与问题没有直接关系的评论:

我的用例是我们的应用程序是 Oracle 数据库,但我们现在开始接收半结构化数据。 JPA 实体可由用户在特定限制条件下进行过滤,但我们希望将此功能扩展到半结构化数据。

似乎还有竞争技术 QueryDSL 和 EclipseLink,但我找不到任何关于跨数据库查询的信息。

在 JPA 中,似乎不可能执行跨数据库查询,因为每个数据库关联的 PersistanceUnit 不同。然而,mongodb cross-store 似乎否定了这个特殊问题。

最佳答案

我从未使用过 Spring Data JPA,但如果 JPA 无法执行此操作,我怀疑 Spring Data 是否会提供此类功能。
不知道你对mongodb cross-store的理解是什么。所以我将很快解释 mongodb 可以做什么和不能做什么。

使用 mongodb 你不能跨多个集合(表)进行查询,所以你不能用普通的 mongodb 进行连接。所以 @RelatedDocument 是 Spring Data 提供的一个特性。相关文档可能是嵌入的(不知道 Spring Data 是否支持这个)或者可能是不同集合(和数据库)中文档的一些简单 DBRef。使用 DBRef,您只能查询 @RelatedDocument 字段,如 _id、集合和数据库,但不能查询任何实际引用的文档属性。

这表示 mongodb 不允许在单个查询中搜索跨数据库,因为您不能跨集合进行查询,因此您也不能针对数据库执行此操作。您拥有的唯一跨商店功能是针对分片集合的。有了这个,您就可以通过一个 shardkey 将集合分布在多个节点上。 MongoDB 可能需要查询所有集合分片才能完成您的查询。但除此之外,我不会称之为跨数据库功能,你没有这样的能力。

如果这没有帮助,请更详细地解释您想要做什么。

关于java - 使用 Spring Data JPA/MongoDB Cross Store,查询可以跨两个数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726194/

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