WhereStore: Location-based Data Storage for Mobile Devices Interacting with the Cloud

advertisement
WhereStore: Location-based Data Storage
for Mobile Devices Interacting with the Cloud
Patrick Stuedi
Iqbal Mohomed
Doug Terry
Microsoft Research
Mountain View, CA 94043
Microsoft Research
Mountain View, CA 94043
Microsoft Research
Mountain View, CA 94043
pstuedi@microsoft.com
iqbal@microsoft.com
ABSTRACT
In recent years, two major trends have changed the way
mobile phones are used: smartphones have become a platform for applications, and 3G connectivity has turned them
into ubiquitous Internet clients. Increasingly, applications
on smartphones (such as document sharing, media players
and map browsers) interact with the cloud as a backend for
data storage and computation. We observe that, for many
mobile applications, the specific data that is accessed depends on the current location of the user. For example, a
restaurant recommendation application is often used to get
information about nearby restaurants. In this paper, we
present WhereStore, a location-based data store for smartphones interacting with the cloud. It uses filtered replication
along with each device’s location history to distribute items
between smartphones and the cloud. We discuss the challenges of designing such a system, relevant applications, and
a specific design and prototype implementation.
1.
INTRODUCTION
During recent years, smartphones have evolved into a
powerful platform for diverse applications. As of the time of
writing, Apple’s AppStore for the iPhone and iPod Touch
boasts more than one hundred fifty thousand applications
and over three billion downloads, while having been operational for less than two years. These staggering figures
suggest that the smartphone has arrived as an application
platform. The transformation of phones into ubiquitous Internet clients has been made possible due to improvements
on the hardware and the user interface of phones as well as
due to 3G network availability.
Today, many mobile applications are architected as
client/server applications, and make use of the 3G connection to store data and perform computation in the cloud.
Examples of such applications include document sharing,
media players and map browsers. In this paper we particularly focus on applications sharing data with and through
the cloud. Applications may store data in the cloud for
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies
bear this notice and the full citation on the first page. To copy otherwise, to
republish, to post on servers or to redistribute to lists, requires prior specific
permission and/or a fee.
MCS’10, June 15, 2010, San Francisco, USA.
Copyright 2010 ACM 978-1-4503-0155-8/10/6 ...$10.00.
doug.terry@microsoft.com
multiple reasons. First, the storage space on a phone is
limited (especially for rich media types such as high definition video), so applications may use the cloud for infinitely
scalable permanent storage. Second, devices use the cloud
as a rendezvous point to share data with other devices.
Third, some applications (for instance, ones that provide
voice recognition) offload heavy computation to the cloud,
which requires the data to be close to the computation [10].
What makes the phone a different platform than the desktop is that its applications often are used in a location specific way [20]. For instance, consider an application allowing
a user to find out about the ingredients needed for a given
recipe. Such an application might be useful when in a grocery shop but not necessarily when at work. The schedule
for a user’s work day might be good to have available on the
phone while on the way to work, and less important when
driving home in the evening. Or think of an application
that allows a user to listen to traffic news; The user may
like to hear about the traffic news of a certain region before
he actually gets there.
In this paper, we present WhereStore, a location-based
data store for Smartphones interacting with the cloud. The
key property of WhereStore is that it uses the phone’s location history to determine what data to replicate locally.
Our key insight is that a person’s past is a good indication of
his future locations and hence his future information needs.
The main goal of caching cloud data on the phone is to decrease the overall data access latency and also reduce the
probability of data becoming unavailable in periods of no
connectivity. Furthermore, WhereStore is a shared resource
for different applications and exchanges data with the cloud
in batches, thus potentially reducing the overall energy consumption on the phone.
Replicating data accross multiple sites has been studied
extensively for distributed systems. Some of this work applies well to mobile phones. For instance, filtered replication
systems allow applications to select only a subset of items
to be stored locally. In our system, we make use of filtered replication to replicate data between the phone and
the cloud. The basic idea is to let a filter express the set of
data items that are likely to be accessed in the near future,
based on the user’s current and predicted location.
The rest of this paper is structured as follows: In Section 2, we describe a set of applications that could benefit
from a location-based data store. In Section 3 we show some
preliminary results indicating the benefits of a caching system like WhereStore. We discuss the challenges of building
a location-based caching system in Section 4. In Section 5
we give a brief overview of filtered replication and location
prediction. The design of WhereStore is presented in Section 6. Section 7 talks about the implementation, Section 8
describes how applications interface with WhereStore, and
a summary of related work is given in Section 9. The paper
concludes with Section 10.
2.
APPLICATIONS
In this section we describe existing applications that
would benefit from our application framework. A common
element of each of these applications is that different
locations require varying data items to be accessed. By
caching location-specific data, WhereStore allows applications to have improved latency characteristics (as some
of the required content for a location is already available
locally) and better availability (if the network connectivity
is unavailable at a location).
Figure 1: Amount of geo-tagged content at different
locations for Flickr
Web Applications: At present, some popular web
applications provide reviews of restaurants and local
businesses (e.g. Yelp.com [5]), and classfied services (e.g.
Craigslist [1]). However, these web applications require
connectivity to the network in order to function. An offline
client for a restaurant review service or a classified service
can access reviews/advertisements that were previously
downloaded based on the user’s current and predicted
future location.
Media Player: While mobile media players (Zune, iPod,
etc.) have storage capacities that are relatively large, the
storage requirements of large collections of rich media such
as high-definition video far exceeds a device’s resources. We
observe that different sets of media files may be appropriate
based on location. For example, while a person is walking
or running outdoors, it is likely that he is not interested in
video files. On the other hand, a person may deem web
pages, video files and pod casts to be especially useful when
he is commuting on the subway. The exact nature of what
files are required is likely to vary across users. However,
many users will benefit from a media player that provides
ready access to a large variety of location-relevant data.
Live Traffic and Sensing Applications: Various applications utilize the latest information pertaining to traffic
conditions and other environmental factors [16] (such as pollution levels and pollen count). The data presentation may
be simple, such as rendering the information on a map or
streaming relevant traffic reports via Internet radio protocols, or complex, such as deciding how to route a user based
on the latest conditions. In all of these applications, different geographic locations have associated data values. If a
mobile device caches the data values corresponding to the
locations that a user is most likely to visit in the future, an
application could function under disconnection or provide
lower latency access to data that has been stored locally.
3.
PRELIMINARY RESULTS
In this section, we provide some preliminary results indicating the benefits of WhereStore. First, we consider the
amount of geo-tagged content in regions of various sizes in
three cities: Manhattan, San Francisco and Palo Alto. Two
of these are dense population centers while the third is a
Figure 2: Amount of geo-tagged content at different
locations for YouTube
small tech-savy city. We first consider the two dense cities.
Figure 1 and 2 show the number of items available on two
popular content sites: Flickr and YouTube. Note that the
vertical axis on the graphs is log-scale. While the results
shown in these figures are for a specific query (“travel”), the
overall trend is clear. For the dense population centers, we
see that the absolute number of results returned for large geographic regions is far greater than what can be reasonably
cached on a mobile device. For instance, in Manhattan, the
largest region we considered (a circle of radius 3.2km at the
center of the city) yielded 6127 photographs and 516 videos
matching our query. On the other hand, for smaller regions,
the amount of data returned from queries tagged with geographic locations is much smaller, and can conceivably be
cached on a smartphone (57 photographs on Flickr and 49
videos on YouTube in the case of Manhattan). Our results
indicate that while it is difficult for an application to cache
query results for a large geographic region, an application
might feasibly cache only those results for places a user is
likely to visit.
In contrast to our observations for dense cities, figure 1
also shows that the number of results returned for Palo Alto
(a relatively sparse city) is not too large. However, it should
be noted that these are the results for just a single query.
teries. When the docking period is sufficiently long (e.g.
overnight), it is possible to prefetch and cache files for subsequent use. While this “opportunity” is not completely free
(wear on hardware, power consumption, usage of the desktop’s network resources, etc.), it is relatively inexpensive
when compared to the time it takes to download large files
on the go via 3G networks.
4.2
Figure 3: Percentage of geo-tagged content missed
depending on the date the content is cached
(YouTube and Flickr)
If an application composes the results of several queries, it
would likely face a situation where all the results cannot be
cached for even sparsely populated areas.
Apart from the amount of data resulting from geo-queries,
it is important to consider the amount of data that will be
missed by utilizing results cached in the past. Figure 3 shows
the percentage of results missing from a cache constructed
some number of days in the past. The query term is “travel”
and the geographic region used is a circle of radius 300 meters at the center of Manhattan. We find that for a cache
constructed 1 week in the past, we miss 0.3 and 0.8 percent
of content for Flickr and YouTube, respectively. For a cache
constructed 1 month in the past, we miss 1 and 4 percent
of results for Flickr and YouTube. This suggests that results cached during an infrequent synchronization operation
(syncing to a PC once in a while), can remain useful for a
significant time duration. There are two caveats to this result. First, if a user’s movement patterns change (e.g. the
user goes to a different gym or changes her dry-cleaners),
WhereStore may not have cached results for the new location. Until the next sync operation is performed, any data
accessed in this region will have to be fetched on demand.
The second caveat is that the search query may be related
to a current event (e.g. Halloween). If so, the percentage of
results missed will be much greater if the last sync operation
occured prior to the event.
4.
OPPORTUNITIES AND CHALLENGES
The high storage capacity on modern mobile devices
presents a significant opportunity for caching and prefetching content. At the same time, a number of challenges arise
when building a system like WhereStore. In this section, we
discuss both aspects.
4.1
No such thing as a free meal?
Increasingly, smartphones are coming equipped with high
capacity storage (8-64GB). While a significant fraction of
this capacity is used for storing music, ebooks, videos and
applications, it is interesting to consider the opportunity of
utilizing unused storage space to cache and prefetch data.
Further, mobile devices are regularly docked with a desktop computer in order to synchronize files and recharge bat-
Challenges
First of all, as with any system that makes decisions on
behalf of a user, there is a trade-off between automating decision making and giving control to the user. Ideally, the
system should make autonomic decisions about what data
to replicate at a given time/location. In practice, such decisions often require involvement by the application. Finding
the right balance between those two principles is one challenge any system like WhereStore must face. Assuming welldefined application controlled boundaries within which data
placement can happen, the question remains how to actually determine what data will be desired in the near future.
The challenge here is to accurately predict future locations
of users as well as the data which is likely to be used at those
locations.
Predicting an application’s data pattern is one problem,
deciding the exact time at which data should be fetched from
the cloud is yet another. Consider a smartphone user on his
way back home from work. Even if the system correctly predicts the smartphone’s next location to be the user’s home,
it may not be wise to fetch home relevant data while the user
is in transit. The reason is that, while at home, access to
data may be much faster and the drain on the phone’s battery much lower than fetching data over a 3G connection. In
general, a system like WhereStore can use information about
current and future Internet access opportunities as well as
information about different access technologies (e.g. 3G or
WiFi) to make decisions about when to communicate with
a remote cloud storage service. An intelligent decision may
reduce the total power consumption of the device without
data access penalties [15].
While we do not provide comprehensive solutions to each
of these challenges in this paper, we establish a framework
for future work in this area. In particular, we believe that
the design of WhereStore represents a promising approach
and is flexibile enough to incorporate different solutions to
these problems.
5.
BACKGROUND
In this section we give a short overview of filtered replication systems and location services, two technologies we use
when designing WhereStore.
5.1
Filtered Replication
Replication systems are commonly used to keep data synchronized between a set of peers. The fundamental datastructure of any replication system is a collection. A collection consists of a set items. Each item contains user data
(e.g., a picture) as well as some metadata (e.g., the size of
the picture, type of picture, etc.). Replicas are local copies
of either the entire collection or a subset of it. In a filtered
replication system, a filter is used to describe which subset
of a collection is stored in a given replica. A filter is a predicate over the metadata of the items in the collection. For
instance, a filter can select all JPEG pictures, or all pictures
groups associated with the geographical region(s) in which
the user is currently located. By doing so, WhereStore gives
control to the application to the define what data it wants
available at a given location. At the same time, the data
placement mechanism is fully transparent to the application.
network data access
local data access
phone local cache
user Location
cloud Store
Figure 4: WhereStore conceptual view
whose geo-tag is inside a certain geographical region.
Replication systems typically implement efficient data
structures and algorithms to synchronize one replica with
another. In a filtered replication system, the goal of the
synchronization process is to make sure that a) each replica
stores exactly the items matching its filter and b) the version
of the items stored on each replica are the same.
5.2
Location Prediction
The proliferation of GPS chipsets in mobile devices as well
as the availability of high quality beacon databases for
WiFi/cellular-based localization has resulted in a plethora
of location-based services for mobile devices. While the majority of location-based applications take advantage of the
current location of the user, some recent research efforts have
considered long-term continuous location monitoring for mobile devices [9, 16]. With the availability of location histories
for users, the ability to predict the future location of users
becomes feasible [13]. The key idea in location prediction
is to utilize the past location history of a user (along with
additional features such as the user’s current location or day
of the week) to predict where they will be located at some
future point in time. In this paper, we utilize a basic location prediction mechanism. From a user’s location history,
we mine a set of geographic regions or “places” where the
user spends at least a given duration of time. In addition,
we mine the transition probabilities between places using
past history. It should be noted that factors such as time
of day and day of the week affect the transition probabilities. Our initial prototype differentiates between morning
and afternoon trips, and weekday versus weekend trips.
6.
SYSTEM MODEL
WhereStore implements the idea of a data store for smartphones where the data placement is dynamic and based on
the past and current location of the user (see Figure 4). In
WhereStore, we give the application control over where the
data is going to be replicated and when it is replicated. This
is controlled using groups and regions. Data that is likely to
be accessed within a common time frame can be grouped.
And geographical regions where a user is likely to stay can
be associated with a set of groups. In an ideal setting, the
data placement strategy of WhereStore would then ensure
that the data stored locally on a user’s phone matches the
6.1
Overview
WhereStore is layered on top of a filtered replication system and a location service. The replication layer maintains
a collection per application and creates replicas both on
phones and in the cloud. The data managed by WhereStore is stored directly within the replicas. Associated with
each replica is a filter and a storage capacity. The filter
linked to the replica on a phone is constantly adjusted to
match items that are likely to be accessed at the current
location. The filter associated with the replica in the cloud
matches all items that are marked to be stored in the cloud.
The storage capacity defines the maximum number of bytes
each replica is allowed to store.
The semantics of WhereStore are similar to a cache. Access to a data item will be resolved locally if possible, causing
the cloud only to be contacted if the item is not contained in
the local storage. In the latter case, a data access is considered to have failed if the item cannot be found on the cloud
site or if there is no network connectivity.
6.2
Data types
WhereStore operates on data items, groups and regions.
We discuss the implementation of those concepts in section
7. An item is a piece of data identified by a key and an associated priority. Groups are arbitrary, possibly overlapping,
sets of items. The priority of items imposes an ordering
over items of the same group. A region defines a geographical area. WhereStore provides interfaces for applications to
create and maintain groups and regions, as well as to associate certain regions with certain groups. A region may be
associated with multiple groups. An application may create regions referring to common geographical areas, create
groups for items with similar properties, and associate the
properties of the groups with certain regions. Examples of
groups are ’movies’, ’work related documents’, ’text files’,
and ’reviews’. Examples of regions are ’@home’, ’@work’,
’shopping’, and so on.
6.3
Location-based Filters
Filters used by the replication system express the preferred set of items to be stored at a given location. Instead
of maintaining one single filter for an entire replica, WhereStore creates and updates a set of filters, one for each possible future location, including the current location. WhereStore makes use of the location prediction service to determine the set of future locations. We give details on how
this set is computed in section 7. For now, assume the set
of future locations to be given by (l1 , l2 , l3 , . . . ln ) together
with a probability pi for each location li . The probability is
a measure of certainty for the prediction. WhereStore creates a filter fi for each location li , considering all regions
that include li . More precisely, the filter corresponds to the
disjunctive (’or’) concatenation of all groups associated with
any of those regions.
In WhereStore, everytime the smartphone changes its location and hits the boundaries of one of the configured regions, the set of filters fi is newly computed and passed to
Application
Mobile Client
Cloud Backend
Data Access
Data Access
WhereStore
Location
Service
Replication
Subsystem
Mobile Cache
Config
File
Item Synchronization
Phone
7.2
WhereStore
Replication
Subsystem
Cloud
Cloud Storage
Figure 5: Architecture of WhereStore
the replication system together with the probabilities pi and
the maximum storage capacity specified for the replica.
6.4
Synchronizing with the cloud
The underlying replication platform exchanges items
through synchronization between the smartphone and the
cloud. After synchronization, the smartphone’s replica
should contain exactly those items that match its filter. This
is done by evaluating the smartphone’s filter at the cloud
and only sending items to the smartphone that match the
filter. Considering that the smartphone has limited space,
not all matching items might fit on the phone. The problem
boils down to choosing a subset of items for which the total
capacity is below the specified storage capacity.
In WhereStore, this is done by ordering the items before
they are sent to the smartphone. The cloud, for each filter
fi , computes the set of items matching the filter. For each
matching item, the cloud computes a rank cj = pi × kj ,
where kj is the priority of the item and pi is the probability
of the filter. If an item matches more than one filter its rank
is the maximum of all the ranks computed. The maximum
storage capacity is then enforced by ordering items according to their rank, and sending only the top n items whose
total storage size remains below the specified capacity. Note
that items which cannot be replicated on the phone will be
fetched from the cloud upon request.
7.
7.1
cation subsystem then tries to maintain a synchronized copy
of data items that match the current filter criteria.
IMPLEMENTATION
Overview
In this section we give an overview of the system architecture of WhereStore. WhereStore is a client/server system
with the client running on the mobile phone and the server
running in the cloud. The WhereStore client on the phone is
composed out of two basic building blocks, a location service
and a replication subsystem. The location service provides
information about possible future locations of the mobile
phone. The replication subsystem keeps a local cache of
data items synchronized with the cloud. The server part
of WhereStore is almost identical to the client part, except
that it does not contain a location service.
Applications interact with WhereStore by specifying a
configuration file. The configuration file defines which items
should be replicated locally at a certain location. We give
a detailed example of such a configuration file in section 8.
Based on the input of the configuration file and the location
prediction provided by the location service, WhereStore updates the filter used by the replication subsystem. The repli-
Data access on the mobile phone
WhereStore itself does not store any the cached data. Instead, WhereStore operates in concert with existing data
sources. Existing applications may already have their own
way to store and cache data and WhereStore leverages this.
For instance, an email client on the phone may store emails
in the filesystem. It is also not unusual to use a database
to store content on a phone. For instance a photo application may store photos in a database. Recently, the upcoming HTML5 [6] standard has proposed web storage [8],
a way for browser applications to store application data in a
database [7]. WhereStore can easily interoperate with this
form of storage as well.
Most replication systems are capable of synchronizing external data sources. WhereStore uses Cimbiosys as the
replication subsystem [17]. In Cimbiosys, data is accessed
through callbacks that can be implemented specifically for
the type of storage needed. Cimbiosys maintains its own
metadata store containing a metadata item for each data
item of the application. It uses this information to determine which items to transmit during a synchronization process. WhereStore creates Cimbiosys’ metadata everytime a
new data item is added to the cache by the application.
7.3
Cache Synchronization
The Cimbiosys synchronization protocol is based on a oneway, pull-style message exchange. A replica, called the target replica, initiates synchronization with another replica,
called the source replica, by sending a request message. This
message includes information about the items the target already knows about – the so called knowledge – and its filter.
The source replica then checks its item store for any items
that are not known to the target replica and whose contents
match the target’s filter. These items are then returned to
the target.
WhereStore uses multiple filters per replica. Moreover,
the replication platform is required to handle storage limitations. For instance, not all matching items might fit on the
phone. Therefore, we have extended the current Cimbiosys
model in two ways. First, we modified the sync request
sent from the smartphone to the cloud to include the smartphone’s knowledge, its storage capacity, the set of filters and
the filter probabilities as described in section 6.3. Second,
we modified the filter matching procedure of Cimbiosys to
consider the ordering of the items discussed in section 6.3.
The Cimbiosys platforms allows application-specific hooks
to be inserted into the synchronization procedure. Both
modifying the sync request as well as changing the matching
procedure could be implemented using those hooks; thus, no
modifications to the core Cimbiosys library were required.
7.4
Implementing Location Prediction
WhereStore utilizes a user’s past location history to predict where he or she will be located at some time in the
future. To easily maintain location history for users, we utilize the StarTrack location framework [9]. A user’s personal
mobile device runs a local service called the StarTrack client,
which periodically captures the user’s current location (e.g.
using GPS) and relays it to the StarTrack server that runs
as a service in the cloud. The StarTrack server processes the
<whereconfig>
<region>
<name>Bryant Park</name>
<coordinates>40.754149N 73.984851W</coordinates>
<radius>200m</radius>
</region>
<region>
...
</region>
...
<group>
<name>Restaurants</name>
<includes>Restaurants, Bars</includes>
</group>
<group>
<name>Italian</name>
<includes>Pizza,Pasta</includes>
</group>
...
<rule>
<name>Rule1</rule>
<region>Bryant Park</region>
<intersection>
<group>Restaurants</group>
<group>Italian</group>
</intersection>
</rule>
</whereconfig>
Figure 6: WhereStore configuration file for a restaurant recommendation application
Figure 7: Screenshot of location filter definition tool
8.
location data into tracks, which are discrete representations
of trips taken by a user, and provides a high-level API to
perform operations on tracks, such as retrieval.
To make predictions of where a user will be located at
some point in the future, we utilize a data structure called
a Place Transition Graph. This graph is created from the
tracks that are retrieved from the StarTrack service and is
one particular way of doing location prediction (among others[13]). At the outset, we need to have a set of places that
are frequently visited by the user; this is a list of latitude/longitude pairs that we call FrequentPlaces. We compute
this set of frequent places by interating over all the retrived
tracks and considering their endpoints. If the end point of
a track is close to one that is already in the FrequentPlaces
list, we skip this point. Otherwise, it is added to the list.
Once we have the FrequentPlaces list, we construct the
Place Transition graph. We represent the graph as an adjacency matrix. The number of rows and columns of this
two-dimensional array correspond to the number of elements
in the FrequentPlaces list, and upon creation, all elements
are initialized to zero. Next, we interate over every possible combination of start and end places, and set the corresponding value in the array to be the frequency of trips
between the particular start and end place. To set this value,
we utilize a function from StarTrack called QueryTracksetByStartAndEndpoint to count the number of tracks in the
relevant track set that match both the start and end point.
Finally, we normalize the values in each row of the array to
be a probability value (i.e. a value between zero and one).
This is done by simply iterating over every row, for each
row tallying the sum of the trip frequencies for that row,
and finally dividing each of the frequencies by the sum of
the frequencies for the row.
BUILDING ON WHERESTORE
After having described both our system model and implementation of WhereStore, we want to illustrate how WhereStore can be used to build applications accessing smartphone/cloud data.
Consider a restaurant recomendation application. The
application provides information about restaurants close to
a location specified by the user. The restaurent information may include a review, pictures, the menu card and in
some cases even small video clips. A possible implementation of such an application on today’s 3G enabled smartphones would be to store all the restaurant information in
the cloud while providing a user interface on the phone to
search for restaurant recommendations close to the current
location of the user. Obviously, one downside of this approach is that the data access latency is high since, for each
query, the restaurant information has to be fetched from the
cloud using the phone’s 3G connection. In the worst case,
the information might not even be available if the network
connection is temporarily broken or the phone’s GPS is not
working, a situation which is likely to happen when inside a
building.
We believe that a restaurant recommendation application
like this could be built more efficiently using WhereStore.
Information about restaurants would be stored in WhereStore causing the data to be distributed across the cloud and
the smartphone. On the smartphone, the WhereStore configuration file defines which restaurant information is preferably stored on the phone at a given location. Figure 6 illustrates how such a configuration file would look. Such a
configuration file can be generated by a graphical front-end
like the one shown in Figure 7. A WhereStore configuration file is an XML file including definitions about regions,
groups and rules. For instance, the config file shown in Fig-
ure 6 defines a circular region called ’Bryant Park’ which is
specified by geographic coordinates and a radius. The config file also specifies two groups, one including restaurants
at Bryant Park and one including italian specialities such as
’Pizza’ or ’Pasta’. Finally, the config file contains one rule
stating that whenever the phone’s location hits the ’Bryant
Park’ region, then all the restaurant occuring in both the
’Restaurants’ and the ’Italian’ group should be stored on the
phone. Rules can be intersections, unions or complements
of groups. One can easily imagine how WhereStore can be
used to build other types of applications. A music player
may store different music files in WhereStore. A configuration file would define different groups of music such as ’jazz’
or ’rock’ and use rules to specify what type of music should
be stored on the phone when in a given region.
9.
RELATED WORK
Disconnected operation is a well studied topic in mobile
computing research. Coda [12], Ficus [11] and Bayou [19] are
three seminal research efforts that strive to provide a mobile
client with access to data when continuous connectivity between nodes is too expensive or unavailable. These systems
work by replicating data across nodes. Coda and Ficus are
“application-transparent” in that existing file system applications do not have to be recoded or recompiled to achieve
the benefits of disconnected operation. Coda allowed users
to construct ”hoard profiles” to indicate the set of files that
should be cached on clients in anticipation of future disconnections [18]. Other systems, like SEER [14], have provided
more sophisticated hoarding policies based on file reference
patterns. Bayou, on the other hand, provides an API to
support fine-grain application-specific conflict detection and
resolution for replicated database applications, but includes
no support for partial replication. In contrast, our system
provides applications with a key-value store API that allows
fine-grain replication of data items. More importantly, applications can associate sets of items with locations, and the
replication infrastructure automatically provides locationbased hoarding of items.
Several recent industry projects have also considered disconnected operation in the context of web applications. The
Gears [3] application framework provides web applications
with the ability to store data locally on a web client and access to it via SQL. Recently, along the lines of HTML5 [6],
Web Storage has been proposed [8, 7]. Web Storage is intended for web application to store data locally on end devices. HTML5 further provides facilities for web application
to run in offline mode in cases no network access is available. Dojo Offline [2] is a toolkit that runs on top of Gears
and gives synchronization functionality to web applications.
While our system has similarities with Dojo Offline, there
are some key differences. We allow applications to define
the data which must be available at various locations and
provide an automatic mechanism to hoard this data prior to
the user reaching the location (based on past user history).
10.
CONCLUSIONS
In this paper we presented WhereStore, a location-aware
storage system for mobile devices. WhereStore provides
mechanisms to allow application developers to specify what
data would be typically accessed in various places. This information, along with the user’s current and future predicted
location, is used to improve data access latencies and availability. We discuss the design of WhereStore and provide
details of a prototype implementation based on the Cimbiosys filtered replication platform and the StarTrack location framework.
Acknowledgement
We would like to thank Chandu Thekkath at Microsoft Research for helpful feedback on a draft of the paper.
11.
REFERENCES
[1] Craigslist: An Internet classified service.
http://www.craigslist.com.
[2] Dojo Offline. http://www.dojotoolkit.org/offline.
[3] Gears (formerly Google Gears).
http://code.google.com/apis/gears/.
[4] Google Listen: Search and Listen.
http://listen.googlelabs.com/.
[5] Yelp: An Internet restaurant and business review
service. http://www.yelp.com.
[6] HTML5: W3C Working Draft 4 March 2010, 2010.
http://www.w3.org/TR/html5/.
[7] Web SQL Database, 2010.
http://www.w3.org/TR/webdatabase/.
[8] Web Storage, 2010.
http://www.w3.org/TR/webstorage/.
[9] Ganesh Ananthanarayanan, Maya Haridasan, Iqbal
Mohomed, Doug Terry, and Chandramohan A.
Thekkath. Startrack: a framework for enabling
track-based applications. In MobiSys ’09: Proceedings
of the 7th international conference on Mobile systems,
applications, and services, pages 207–220, New York,
NY, USA, 2009. ACM.
[10] Byung-Gon Chun and Petros Maniatis. Augmented
Smartphone Applications Through Clone Cloud
Execution . In USENIX Workshop on Hot Topics in
Security (HOTSEC), August 2009.
[11] R. G. Guy, J. S. Heidemann, W. Mak, T. W. Page,
G. J. Popek, and D. Rothmeier. Implementation of
the Ficus replicated file system. In USENIX
Conference Proceedings, pages 63–71, Anaheim, CA,
June 1990. USENIX.
[12] James J. Kistler and M. Satyanarayanan.
Disconnected operation in the Coda file system. ACM
Transactions on Computer Systems, 10(1):3–25,
February 1992.
[13] John Krumm and Eric Horvitz. Predestination:
Where do you want to go today? Computer,
40(4):105–107, 2007.
[14] Geoffrey H. Kuenning and Gerald J. Popek.
Automated hoarding for mobile computers. SIGOPS
Oper. Syst. Rev., 31(5):264–275, 1997.
[15] Du Li and Manish Anand. Majab: improving resource
management for web-based applications on mobile
devices. In MobiSys ’09: Proceedings of the 7th
international conference on Mobile systems,
applications, and services, pages 95–108, New York,
NY, USA, 2009. ACM.
[16] Min Mun, Sasank Reddy, Katie Shilton, Nathan Yau,
Jeff Burke, Deborah Estrin, Mark Hansen, Eric
Howard, Ruth West, and PeĢter Boda. Peir, the
[17]
[18]
[19]
[20]
personal environmental impact report, as a platform
for participatory sensing systems research. In MobiSys
’09: Proceedings of the 7th international conference on
Mobile systems, applications, and services, pages
55–68, New York, NY, USA, 2009. ACM.
Venugopalan Ramasubramanian, Thomas L.
Rodeheffer, Douglas B. Terry, Meg Walraed-Sullivan,
Ted Wobber, Catherine C. Marshall, and Amin
Vahdat. Cimbiosys: a platform for content-based
partial replication. In NSDI’09: Proceedings of the 6th
USENIX symposium on Networked systems design and
implementation, pages 261–276, Berkeley, CA, USA,
2009. USENIX Association.
M. Satyanarayanan, James J. Kistler, Lily B.
Mummert, Maria R. Ebling, Puneet Kumar, and
Qi Lu. Experience with disconnected operation in a
mobile computing environment. In MLCS: Mobile &
Location-Independent Computing Symposium on
Mobile & Location-Independent Computing
Symposium, pages 2–2, Berkeley, CA, USA, 1993.
USENIX Association.
Douglas B. Terry, Marvin M. Theimer, Karin
Petersen, Alan J. Demers, Mike J. Spreitzer, and
Carl H. Hauser. Managing update conflicts in Bayou,
a weakly connected replicated storage system. In
SOSOP’15, pages 172–183, Cooper Mountain,
Colorado, December 1995.
Ionut Trestian, Supranamaya Ranjan, Aleksandar
Kuzmanovic, and Antonio Nucci. Measuring
serendipity: connecting people, locations and interests
in a mobile 3g network. In IMC ’09: Proceedings of
the 9th ACM SIGCOMM conference on Internet
measurement conference, pages 267–279, New York,
NY, USA, 2009. ACM.
Download