A Request To Unite Local Data, Multiple Devices And Cloud Storage
A Request To Unite Local Data, Multiple Devices And Cloud Storage
Join the DZone community and get the full member experience.Join For Free
Learn how to build stream processing applications in Java-includes reference application. Brought to you in partnership with Hazelcast.
There were two articles this week that caught my interest. Even though these are two mostly unrelated articles, they actually fit together in a way that is more interesting.
The first post is from GigaOm about mobile apps being useless when not connected to the internet. Have you ever tried to use your mobile apps without a connection? If you ever need to try, the article gives a nice overview of what you can expect:
But for the most part, as soon as I lose connectivity, my mobile apps are mostly broken. Tapping my most-used apps — Gmail, Facebook and Twitter — only gets me error messages and frustration. Even Angry Birds and Word Warp are handicapped when they’re offline; they lose their social features and word lookups, respectively. If I organized my apps into panels of those that were useful offline and ones that needed connectivity, it’d be incredibly lopsided.
This is the main problem with the assumption of applications that you will always have an internet connection. They do not handle the case where you are connectionless. Given that mobile apps are still very immature, this should not be surprising, but it is still maddening to the user.
The other post is from Jesse Stay about sites owning data. Jesse takes the issue a little further with the import/export options:
The problem is one database will have some information while another will have other information, and they all want your money to get at the information you are missing, which, in reality, belongs to you and your family in the first place! Sure, they often provide an option to export your family history and import it into another service, but then you have just one more database, this one lying on your own computer, and any updates to the other databases never update the one that lies on your computer. Let’s face it – GEDCOM just creates more databases – it does not unify.
Here, Jesse explains that even standard formats just create another database to keep synchronized with the various web services that you use. He proposes a solution that would require some significant work to get completed:
I should be able to upload my records to Ancestry.com and any other service that wants to index that data should be able to pull that data from Ancestry and render it for me based on the relationships around the web they have indexed. The records should be stored on the web. The relationships should be stored on the web. The entire family tree should come from the web, not any single database or repository.
Jesse’s solution runs directly into the mobile data problem. What about when you are not connected? Obviously, your web-based data is completely unavailable. If a data format on your PC is not good enough, and a cloud-based storage solution does not work, what is the answer?
Synchronization and Local Web Storage
The main problem I have had with a “personal cloud” data storage solution is that it is cloud based. I do not want to require an internet connection at all times. With the rise of mobile devices this is becoming less of a problem, but mobile services are not everywhere. Sometimes you can get service from one mobile provider in a location, but not another. So, if we assume that a connection may not exist, this points us towards a local storage solution.
There is one storage solution that works with web applications, is local storage, and does not require the user to know about standard export formats, HTML5 Web Storage. Web Storage allows web applications to store information locally on the user’s PC. This is much better than cookies because they are completely session based. So, if you have two browsers open, they likely will use different cookies for more interesting information. Web Storage allows an application to have session information and a more general local storage area. This gives applications more flexibility in terms of the data that is stored. There are two issues with Web Storage. First, it is just stores key-value pairs, so there is limited knowledge in the information. Second, is that the storage is local to the device.
We can ignore the key-value pair issue as it is fine for most web applications, and there are ways around the problem. The local storage problem is what gets more interesting. If we have local storage, Jesse’s problem of different web services could go away. We would just need to have the local storage have some type of application security around types of “public” data, instead of data being available only from one service. For example, genealogy data may be public information in your local storage so that several services can use the data. Each service can have their own local application storage as well for basic things like preferences. If there is a standard data format for the data, this process can become much simpler.
However, local storage only solves the multiple-services problem. How do we solve the multi-device problem? Typically, the answer has been cloud-based storage. Again, this does not work for the times you do not have a connection. What about a combination? Could we have cloud-based storage so that you can synchronize multiple devices, and a local synchronization for those times you are not connected? Cloud synchronization is being solved in several different ways by browser makers and other application providers. Local synchronization is also being solved by the mobile device makers. Just look at your what MP3 players and mobile phones do, they synchronize local files all of the time.
You are already seeing this type of feature in some applications. Google is trying to do it with various applications, in particular their Contacts application. You have cloud storage when you are using GMail on the web, but you can also synchronize your contacts to your phone. This data can also be synchronized to Outlook, or your favorite contacts manager, if you really wanted. All of the pieces are there, but it does not seem like companies are looking at the bigger picture. The solutions we are currently seeing are only based on single-use or single-application scenarios. What if some of the big players, like Google, Microsoft, Yahoo, Facebook, Twitter, etc, decided to solve this bigger problem? Could we really define a the ultimate personal database?
Opinions expressed by DZone contributors are their own.