Distributed Data Storage
I am currently interested in designing scalable, distributed storage and caching systems that provide useful semantics to application developers.
Pequod is a distributed web application cache. Like other caches (e.g. memcached, Redis), Pequod exposes a key/value interface to the application developer. However, Pequod also provides range scan semantics and introduces a useful primitive for server-side computation; the cache join. Cache joins allow an application developer to designate an output data range that is derived from a set of input ranges using a simple computation (e.g. filter, join, aggregate). When data from an output range is first requested, it is generated de novo. Once generated, it is automatically maintained through incremental computation so that subsequent reads are fast. Cache joins are a good match for applications based around update streams, such as Twitter and Facebook.
- The source is available on Github.
I have conducted research for the RoboBees project, an effort to produce insect-scale autonomous micro-aerial vehicles (MAVs). Insect-scale MAVs can be used in applications that require covert operation, maneuvers in confined spaces, or micro-manipulation, such as crop pollination, urban surveillance, and disaster recovery. My work on the Colony team was focused on coordinating the efforts of MAV swarms to accomplish application objectives in spite of the resource limitations and high failure rates of individual MAVs. To this end, we have constructed Karma, a resource management system for MAV swarms. The programming abstraction in Karma allows for the composition of swarm applications from low-level MAV behaviors.
- Check out a short video demonstrating Karma coordinating a swarm of virtual MAVs and toy helicopters. [youtube][1080p]
- Our simulator, Simbeeotic, is available as open source on Github.
Bryan Kate, Eddie Kohler, Michael Kester, Neha Narula, Yandong Mao, and Robert Morris.
Easy Freshness with Pequod Cache Joins.
Proceedings of the 11th USENIX Symposium on Networked Systems Design and Implementation (NSDI 2014).
Seattle, WA, April 2014.
[PDF] [slides] [USENIX page] [source]
Karthik Dantu, Spring Berman, Bryan Kate, and Radhika Nagpal.
A Comparison of Deterministic and Stochastic Approaches for Allocating Spatially Dependent Tasks in Micro-Aerial Vehicle Collectives.
Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2012).
Vilamoura, Portugal, October 2012.
[PDF] [IEEE Xplore]
Bryan Kate, Jason Waterman, Karthik Dantu, and Matt Welsh.
Simbeeotic: A Simulator and Testbed for Micro-Aerial Vehicle Swarm Experiments.
Proceedings of the 11th ACM/IEEE Conference on Information Processing in Sensor Networks (IPSN 2012).
Beijing, China, April 2012.
Awards: Best Paper Runner Up (SPOTS Track), Best Demo
[PDF] [slides] [ACM Portal] [source]
Karthik Dantu, Bryan Kate, Jason Waterman, Peter Bailis, and Matt Welsh.
Programming Micro-Aerial Vehicle Swarms with Karma.
Proceedings of the 9th ACM Conference on Embedded Networked Sensor Systems (SenSys 2011).
Seattle, WA, November 2011.
[PDF] [slides] [ACM Portal]
Peter Bailis, Karthik Dantu, Bryan Kate, Jason Waterman, and Matt Welsh. Karma: A Distributed Operating System for Micro-UAV Swarms. At the 9th USENIX Symposium on Operating Systems Design and Implementation (OSDI 2010). Vancouver, BC, October 2010. (Poster)