Open Questions
1. Can tables ever span servers?
2. Can objects ever span servers?
3. Are indexes always colocated with tables?
4. If ObjID = (table, key), what are table and key, exactly?
5. Are tables global or per-application?
6. Should the system allocate table and/or key IDs? Any benefit to user-specification?
7. What pieces of metadata does the server store with tables?
8. What is the lookup mechanism for table names to table IDs?
9. What is our security story? How much trust/control in network and all client (inc. non-RAMCloud) machines?
10. What is the minimum amount of work we need to do for each RPC in our security model?
11. How are table -> machine mappings handled?
12. How does our RPC protocol work, especially in the face of failures (retries, etc)?
13. Is a page table-like directory the best object lookup mechanism? What about hash tables or tries?
14. How are deletes on key object lookup tables done? What about fragmentation / reuse of keys?
16. How do object lookups interact with shards, shardlets, and the backup strategy?
17. How is growth/shrinkage of a single shard handled?
18. How do we garbage collect keys, memory, disk space, shard space, etc?