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 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