Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Store full data region copy 
    The idea of this approach is to store full data region copy on the disk.
    1. Pros:
      1. Mostly sequential writes.
    2. Cons:
      1. restore must setup all Ignite internals strustured regarding restored offheap data.
        Such code can be difficult to implement and maintain.
  2. On demand persistence
    The idea of this approach is to reuse PDS infrastucture and persistent snapshot code by introducing new cache mode "PDS_ON_DEMAND".
    This mode will use persitence code but with WAL and checkpoint disabled. So on creating snapshot regular checkpoint will be performed.
    After checkpoint PDS files are ready to be copied to snapshot folder.
    1. Pros:
      1. Code reuse.
    2. Cons:
      1. Additional configuration on user-side required (set new mode for DataRegion).
      2. All Ignite codebase needs to be aware of new mode - baseline, PDS, WAL, checkpoint, etc.
      3. PDS page stores additional data - storage overhead.
  3. shmem usage
    The idea of this approach is to use shared memory feature of Linux.
    1. Pros:
      1. Easy to implement (questioneable).
      2. Same approach used by other vendors to implement in-memory cluster restarts.
    2. Cons:
      1. OS specific.
      2. Only for certain scenarios. Doesn't cover all use-cases.
  4. Use "dump" name for feature instead of snapshot.
    Alternative naming for feature can be used.
    Essentially, consistently saving each entry to the file are not in-memory specific.
    Feature can be used for persistent cache with a little amount of effort.
    So, as in other database (pg_dump), dump name can be used for a feature.

Risks and Assumptions

  • DataRegionConfiguration#persistenceEnabled=false  for in-memory caches by the definition.
  • The way to restore snapshot on different topology must be further investigated.
  • Compaction of snapshot must be further investigated.
  • Consistent per-entry snapshot that will be implemented in this IEP can be created for persistence caches also.
  • API to iterate, transform, print snapshot content is out of scope and must be created in other IEP.

...