在 GemFire/Geode 中更改现有区域的类型
Changing an existing Region's type in GemFire/Geode
一旦在 Geode 中创建了一个区域,比如 PARTITION
类型,是否可以将类型更改为其他类型,例如 PARTITION_PERSISTENT
?
我认为这不可能开箱即用...但是,您可以使用 gfsh export data
command to export the current region data, destroy the region
, create a new one with the correct type, and then use the gfsh import data
命令从备份中重新填充该区域。
@juanramos 是正确的。您实际上只能根据 AttributesMutator
界面中公开的配置更改(修改)区域(参见 Javadoc)。
以编程方式,这将通过以下方式获得:
AttributesMutator attributesMutator = region.getAttributesMutator();
// alter the Region using the AttributesMutator, such as by adding a new CacheListener
事实上,这正是 Gfsh 中 alter region
command 的实现方式(即通过使用 Function
来分发 altering/modifying Region 使用 Region 的 AttributesMutator
跨越托管 Region 的节点集群) .
因此,正如 Juan 所描述的,您可以:
- Export Data 来自区域
- 然后,destroy the Region
- 接下来,re-create the Region 与所需的
DataPolicy
(例如 PARTITION_PERSISTENT
)
- 最后,Import Data 回到 re-created 区域。
当然,如果你没有任何数据,那么你也可以简单地销毁并重新创建Region。
Spring Boot for Apache Geode 使 data handling(例如导出和导入)非常简单,甚至可以在应用程序重新启动时执行(特别是在开发期间)。
一旦在 Geode 中创建了一个区域,比如 PARTITION
类型,是否可以将类型更改为其他类型,例如 PARTITION_PERSISTENT
?
我认为这不可能开箱即用...但是,您可以使用 gfsh export data
command to export the current region data, destroy the region
, create a new one with the correct type, and then use the gfsh import data
命令从备份中重新填充该区域。
@juanramos 是正确的。您实际上只能根据 AttributesMutator
界面中公开的配置更改(修改)区域(参见 Javadoc)。
以编程方式,这将通过以下方式获得:
AttributesMutator attributesMutator = region.getAttributesMutator();
// alter the Region using the AttributesMutator, such as by adding a new CacheListener
事实上,这正是 Gfsh 中 alter region
command 的实现方式(即通过使用 Function
来分发 altering/modifying Region 使用 Region 的 AttributesMutator
跨越托管 Region 的节点集群) .
因此,正如 Juan 所描述的,您可以:
- Export Data 来自区域
- 然后,destroy the Region
- 接下来,re-create the Region 与所需的
DataPolicy
(例如PARTITION_PERSISTENT
) - 最后,Import Data 回到 re-created 区域。
当然,如果你没有任何数据,那么你也可以简单地销毁并重新创建Region。
Spring Boot for Apache Geode 使 data handling(例如导出和导入)非常简单,甚至可以在应用程序重新启动时执行(特别是在开发期间)。