Xodus Entity Stores 可以共享交易吗?

Can Xodus Entity Stores share a transaction?

我可以看到 使用单个环境事务处理多个商店。 (我也假设写入也是可能的)。

Entity Stores 的高级api 对我来说很方便,但我找不到共享 Entity Store 事务的方法。查看代码,我可以看到实体商店实际上正在创建环境交易,但由于这些是单独的交易,我无法跨多个商店和 commit/abort 单个交易执行操作。

我是不是遗漏了什么,或者我应该告别 Entity Store api 并回到 Store API?

我是第一个提出您所指问题的人。

在 Xodus 中有三种不同的使用方式: - 环境; - 实体店; - VFS。

我正在使用环境 API 并且所有交易都是为整个环境创建的。正如我正确理解的那样,您正在使用实体商店 API,因此您只能使用仅为特定商店启动的 StroreTransaction 并操作其实体。

因此,如果您需要针对多个商店共享一笔交易,那么您需要切换到环境 API。

  • 塔拉斯

如果使用环境 API,您可以访问环境中的任何数据,无论其中创建了多少命名存储。在环境 API 中,Store 只是一个命名的键值映射。

PersistentEntityStore is created atop of Environment。单个物理(磁盘)位置对应于 Environment 和 PersistentEntityStore。事务是针对 Environment 或 PersistentEntityStore 创建的。无论您使用哪个 API,都不能在 Environment 实例之间和 PersistentEntityStore 实例之间共享事务。