Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


RAMCloud is not necessarily the best storage system for every possible application. Here are some situations where it is probably may not be the right choice:

  • If your application doesn't make very intensive use of data, then it's probably not worth the extra cost of keeping the data in DRAM; you can use a disk-based system just as well.
  • If your primary applications are batch-oriented ones that read all of the data in the entire data set, then low latency probably doesn't matter. In these situations, application performance will be limited by the throughput of the storage system. Oher Other storage systems more optimized for throughput, such as Spark, will probably may provide higher performance than RAMCloud. For example, most analytics applications fit this model; RAMCloud is more appropriate for online applications where response time is important.If your application requires the higher-level data model features of a relational database, such as secondary indexes and transactions spanning multiple objects, then it may be difficult to get that application running on RAMCloud. The current RAMCloud data model is a key-value store with a few extension (such as conditional writes, table enumeration, and multi-read/multi-write
  • operations); it does not yet support secondary indexes and multi-object transactions. Most of these operations can be implemented on top of the existing RAMCloud features, but it will take extra work and these operations will not run as fast as the built-in RAMCloud operations. We are currently working on adding higher-level features to RAMCloudIn order to achieve the fastest possible performance, you will need high-speed networking with two features:
    • Fast switching time (less than 1 μs delay per switch). Most new 10 Gbs gear meets this requirement.
    • NICs supporting kernel bypass (which means that the NIC can be mapped into the address space of applications, so they can send and receive packets without invoking kernel calls). Many newer NICs provide this feature.