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 segmentis using the canistersOrthogonal 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