Tag: Cloudant

位置跟踪器pt。 2:扩展“每个用户的数据库”模式

想要将您的应用程序扩展到数百万用户,同时保持将私有信息安全可靠地(轻松地!)同步到Cloudant的能力吗? 在本教程中,我们将向您展示如何进行。 在“位置跟踪器”(第1部分)中,我们向您展示了如何创建一个iOS应用程序来跟踪您的位置,与Cloudant同步以及执行地理位置查询以查找附近的兴趣点。 我们向您展示了如何使用每用户数据库设计模式来利用Cloudant强大的同步功能,同时确保用户的位置信息保持私有。 我们还讨论了“每用户数据库”设计模式如何适合中小型应用程序,但是当您希望扩展到数百万个用户时,效果不那么理想。 在本教程中,我们将向您展示如何扩展Location Tracker来做到这一点。 复习 Location Tracker应用程序是在Swift中开发的iOS应用程序,可跟踪用户位置并将这些位置同步到Cloudant。 当用户移动并记录新位置时,该应用会查询服务器以获取用户位置附近的兴趣点。 以下是“位置跟踪器”应用的屏幕截图。 蓝色图钉标记应用程序记录的每个位置。 在用户行进的路径上绘制了一条蓝线。 每次Location Tracker应用程序记录新位置时,都会在Cloudant中执行基于半径的地理查询,以查找附近的兴趣点(在应用程序中称为“地点”)。 半径由绿色圆圈表示。 位置显示为绿色图钉。 在第1部分中,我们确定了Location Tracker应用程序的五个关键要求: 跟踪前景和背景中的位置。 使用地理空间查询来查找指定半径内的兴趣点。 离线运行。 将用户位置信息保密。 提供合并和分析所有位置的功能。 为了满足要求#4和#5,我们实现了每个用户数据库的设计模式。 这是学习如何使用Cloudant Sync同步个人或私有数据的重要第一步,但是当扩展到数百万甚至数万个用户时,此设计会出现问题。 Glynn Bird在这篇文章中指出了使用每个用户数据库模式进行扩展的一些问题: 备份-如何为数百万甚至数千个数据库设计备份和还原计划? 报告-您如何在数百万个数据库中生成报告? 变更控制-如何在数百万个数据库中传播数据更新? 为了帮助提供针对这些问题(以及更多问题)的解决方案,一组IBM员工构建了Cloudant Envoy。 Cloudant Envoy FTW! Cloudant Envoy是一种微服务,可充当您的PouchDB Web应用程序或基于Cloudant Sync的本机应用程序的复制目标。 Envoy允许您的客户端代码采用“每个用户一个数据库”的设计模式,将用户数据的副本存储在移动设备上,并在联机时同步到云中,同时将所有用户的数据无形地存储在一个大空间中。数据库。 这样可以防止在添加用户时发生的数据库激增,并简化备份和服务器端报告。 这就是在GitHub上描述Cloudant Envoy的方式。 让我们分解一下此描述,并解压缩Location Tracker的相关点: Cloudant Envoy是一种微服务,可充当您的PouchDB Web应用程序或基于Cloudant Sync的本机应用程序的复制目标。 在第1部分中,我们展示了Location Tracker iOS应用如何针对Cloudant中特定于用户的数据库进行复制。 […]