This page addresses issues related to naming and indexing objects in RAMCloud. In other words, what are the various mechanisms an application can use to retrieve objects stored in RAMCloud? The choices fall into three general classes:

Naming

Assuming each object has a unique name, what form might that name take and what advantages and disadvantages are associated with that form?

How are names assigned?

Indexing

One possibility: no indexing provided by RAMCloud

Suppose RAMCloud implements indexing; a minimal approach is to separate the management of the indexes from the generation of index keys:

Other possible approaches to indexing:

Distributed System Issues

There are several issues that arise because applications run on different machines from the servers, and because there could be thousands of servers; data for a particular application or even a particular table may spread across multiple servers. This section assumes that object names are application-table-id.

How does a client know which server to ask for an object, given its identifier?

What if an indexed lookup refers to objects on multiple servers?

What if an index is split across multiple servers?

Other issues related to indexes that are split across multiple servers:

What about consistency between objects and their indexes?

What about crash recovery for indexes?

Searching

Not addressed here.