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 实例之间共享事务。
我可以看到
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 实例之间共享事务。