Well, inter-canister query calls would be nice, and yes parts of our roadmap are held up as a result. We’re trying to design around that as best as we can.
We’re using CanDB, the first scalable NoSQL Database on the Internet Computer, but modified as our data model is frankly ridiculous so I have to use Go to generate all the code.
We’re not using the “auto-scale” function of CanDB just yet because it would just make things overly complex in our system. What we’re doing is splitting up the data tables into different microservices, and then looking up the canister by a modulo of the ID.
The main canister creates the other canisters required in the schema, and has an endpoint that tells you the canisterID of a record+ID combination (which the client should really cache).
Each service manages the CRUD API calls for each associated Record.
It’s probably overly complex for now but it’s working and we’ve got a mostly-clear roadmap for the next 6 months.
That’s where we’re at. API calls that hit many different canisters are going to be a problem, but we’re not in a rush to launch anything.