File & Data Persistence

Files & data in a C++ canister are persisted as follows:

What Files Data in static memory Other data
canister install deleted deleted deleted
canister reinstall deleted deleted deleted
canister upgrade saved deleted deleted
update call updated updated unchanged
query call unchanged unchanged unchanged

Under the hood, the following happens:

  • Files are stored in the canisters stable memory
  • The C++ static memory segment is using the canisters Orthogonal Persistence

To see it in action, please review the following demos:

  • files: A demo of the virtual file system: open/close/read/write, ascii & binary, upload/download
  • counter: An Orthogonal Persistence demo for uint64_t
  • counters: An Orthogonal Persistence demo for std::vector
  • counter4me: An Orthogonal Persistence demo for std::unordered_map<std::string, uint64_t>
  • memory: Orthogonal Persistence of C++ Data Structures on the Internet Computer: A Study