在 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

事实上,这正是 Gfshalter region command 的实现方式(即通过使用 Function 来分发 altering/modifying Region 使用 Region 的 AttributesMutator 跨越托管 Region 的节点集群) .

因此,正如 Juan 所描述的,您可以:

  1. Export Data 来自区域
  2. 然后,destroy the Region
  3. 接下来,re-create the Region 与所需的 DataPolicy(例如 PARTITION_PERSISTENT
  4. 最后,Import Data 回到 re-created 区域。

当然,如果你没有任何数据,那么你也可以简单地销毁并重新创建Region。

Spring Boot for Apache Geode 使 data handling(例如导出和导入)非常简单,甚至可以在应用程序重新启动时执行(特别是在开发期间)。