使用OneDrive或Dropbox作为数据库

ror*_*yok 8 database network-programming dropbox onedrive

首先,这不是任何一个重复 这些 问题,其讨论使用单一的Dropbox帐户作为多用户应用的后端

我已经构建了一些应用程序,主要是在Windows Phone和Windows Store上,还有更多的应用程序正在进行中.

我经常发现自己想要在设备之间添加数据同步到同一用户.我的应用程序通常是免费或非常便宜的,我无法支付数据库托管服务器的钱.我确实有一个付费的主机帐户,我可以使用一些有限的数据库空间,但在(不太可能)的事件中,我的一个应用程序成为一个失控的成功我突然陷入了一个大的托管账单.在这种情况下,我不得不突然开始向用户收取以前免费或更糟糕已经付费的应用的经常性金额.

我一直回到这个使用OneDrive,Dropbox或其他免费云托管作为数据库的想法.这是我看到它的工作方式.

让我们说我们有一个名为Jobbie的待办事项应用程序

  • 用户在两台设备上安装Jobbie
  • 用户在两台设备上登录OneDrive,在其OneDrive文件夹中创建"jobbie"同步文件夹
  • 在设备A上,用户创建一个新的待办事项"拾取干洗"
  • 设备A将文本文件上载到OneDrive,名称为"20153001-pick_up_dry_cleaning.item".
  • 设备B扫描文件夹,查找新文件,并将其添加到本地数据库
  • 在设备B上,用户将"拾取干洗"标记为"已完成",并将文件重命名为"x20153001-pick_up_dry_cleaning.item"(或删除)
  • 设备A扫描文件夹,看到项目已重命名(或删除)并将其从本地数据库中删除

我用这种方法看到的明显问题是

  1. 项目限制为255 - 9个字符(9个字符为xYYYYMMDD保留),除非你想下载每个文件很慢
  2. 没有锁定

除了这两个问题,我可能面临实施这样一个系统的其他问题吗?

PS:我还考虑用本地副本覆盖存储的SQLite文件,但我认为这对于移动设备来说会是太多的数据开销

UPDATE

我接受了下面的Peter Nied的回答,其中指出了我可能遇到的问题,这个系统回答了我的问题.但是,Smarx在评论中指出Dropbox有一个免费的数据存储API,我可以用它来为我的应用程序.这似乎是一个比尝试在文件系统上实现我自己的数据存储区更好的解决方案,所以我将继续这样做.

更新2

数据存储区API在我更新帖子后仅3个月就已弃用,因此不再可用.幸运的是,那时我还没有开始反对它.您可以非常轻松地将Dropbox用作标准的平面文件存储,但如果您想进行任何类型的同步,则必须自行滚动

Pet*_*ied 2

虽然 OneDrive 和 DropBox 有方法存储文件信息并确保与 Etags/Ctags 一定程度的一致性,但在这些基于文件的系统之上构建将很难提供数据分区、事务和冲突管理。这会很酷,但我怀疑它会便宜(时间方面)或没有错误。

使用已经构建的为您提供数据存储功能的服务将是您最好的选择。有无数的服务可以让您访问信息存储的数据库。例如微软的 Azure 产品线、亚马逊的 AWS 以及许多其他专门致力于跨多个平台保持数据同步的产品。

  • 我确实提到过我买不起 Azure 或 AWS。这是一个规模问题。这些应用程序是免费的,因此数据存储必须免费提供。也就是说,您的回答确实涵盖了我在问题中提出的内容,所以我接受它。 (6认同)